Git Product home page Git Product logo

whyline's Introduction

No Maintenance Intended

Whyline for Java

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.

History

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!

Architecture

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:

  • Users start the Whyline launcher and select a compiled program to debug
  • The Whyline instruments all of the bytecode in the program to record an execution history
  • The Whyline launches the instrumented program, recording the history to disk
  • After the program halts, the Whyline loads the history, generating a UI to represent the history
  • The user can click on program output and code to ask "why" and "why not" questions about the output.
  • The Whyline answers questions by peforming static and dynamic analyses on the code and execution history.

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.

Support

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.

whyline's People

Contributors

amyjko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.