The Whyline for Java is an interactive debugging tool that lets you ask "why" questions about program output.
To see a demo, check out the brief YouTube video.
This was the primary work of my Ph.D. thesis and amounted to about a year of development, testing, debugging, usability testing, and evaluation in 2007 and 2008, culminating in these publications:
Because of my academic job search in 2008, my position as a professor at the University of Washington, and the academic culture of doing new work, rather than incrementing on old work, I moved on to other projects. That means that the code has likely experienced serious bitrot and could require significant work to make it executable again.
That said, at the time of writing this readme, it's 2016, eight years later, and I'm on sabbatical. It's about time I open source this thing and let the community more easily access and replicate the work!
The best way to learn the architecture of the tool is to read the articles above. Here are the highest level architectural concepts to get you started:
I spent some time documenting design rationale in comments in the trickier components (mostly because I have a practice of self-explaining the more complicated elements of implementations in comments), but if there's anything you're having trouble understanding, write me, and I'll patch the code with a comment.
Unfortunately, because I've long since moved on to other projects, I cannot support this code or develop it further. Fork it, patch it, extend it: do whatever you like with it. It's here for the public good as an archive for future generations of developer tool developers. I'd love to see what you do with it! I love to hear stories about how people are building upon the work.
That said, if you find that things are critically broken and can be fixed with some simple changes, submit a pull request. I'll review all requests eventually and merge them, so that others can continue to play with the code.