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.