Project Goals

As Java developers, we have plenty of great tools for coding and build time assistance. And several products exist to assist with monitoring applications in runtime. But a gap exists between coding and production where our only tools are log files and Google searches. And as more and more great open source libraries become available, stepping through unfamiliar code becomes a time-consuming and overwhelming way to develop. WTFIGO aims to fill that gap.

The two primary runtime tools that we do have available are step-through debuggers and code profilers. Step through debuggers are best for stepping through your own code, but the wrong tool for troubleshooting things like frameworks. Profilers are only intended to help with performance tuning and assume that the code is already working.

"Development runtime" presents a unique situation that allows for a new class of development tool.

  • Runtime information such as classpaths, environment variables, and configuration properties are known
  • Most problems are configuration and usage problems, not code problems
  • Identifying problems is more critical than error recovery.
  • You have full control over the environment
  • Performance is less of a concern. Most frameworks are tuned for performance, not troubleshooting.
  • Security can be relaxed if needed to troubleshoot problems
  • Different problems occur than happen in production. For example, JSP compilation errors almost never happen at runtime. But they happen regularly during development.
There are several problems with the current set of debug/diagnostic tools.
  • Fail fast only works if there is a failure (eg. Exception)
  • Most tools log core problem, but the context is lost (a stack trace is not context)
  • "Are things behaving correctly?" can't be determined by static analysis like code inspection tools
There should be a concept of debug-server similar to dev/integration/staging/production.

The tools needed in this phase are different than the tools needed during development (IDEs) and production (runtime monitoring)

Online resources/Community Involvement

The long term goal of WTFIGO is to be a tool that integrates well into the community support ecosystem that thrives around open source projects.

  • WTFIGO should be a collection point for developer knowledge from multiple open source projects. Lots of questions get answered again and again in forums and on mailing lists. This knowledge can be codified in WTFIGO.
  • WTFIGO will eventually connect to a wiki-like system to host solutions to common problems
  • Ideally, WTFIGO will tie in to bugtracking systems. For example, it could query for issues based on a stack trace or log message.
  • WTFIGO will (eventually) support plugins from other projects
  • WTFIGO will make it easier for people to contribute knowledge/samples/etc by enabling them to describe the solution they found to a certain problem. Simpler than patches to CVS.
  • WTFIGO will provide a way for people to be able to contribute to a project without being a developer by contributing knowledge about solving usages issues.