Banner

Welcome!

Welcome to the the eMoose project at Carnegie Mellon University!

This project explores the usability of APIs and their documentation and presents a tool for facilitating the use of JavaDocs

It is part of the doctoral dissertation research of Uri Dekel (udekel at cs.cmu.edu)

As of March 2009, the documentation for the project is now hosted on Google code as a wiki. Please visit the user guide or installation guide.
If you are here to learn more about API documentation usability, visit the page on why directives are important or our publications page.

The Eclipse update sites are still hosted at CMU, until they (and the project source code) will be migrated to Google.

For PC: http://emoose.cs.cmu.edu/dist/updatesite/

For Mac OS X: http://emoose.cs.cmu.edu/dist/updatesite_mac/

What is eMoose?

eMoose is an Eclipse based framework that aims to help Java developers who are writing, editing, or examining code become aware of important "usage directives" associated with functions that are invoked by this code.

Directives can be explicit "do" or "don't do" instructions, to which the caller must adhere, or they can be more informative "caveats" of which the caller should probably be aware.

The problem with directives is that they're only present in some methods, and they are sometimes hidden among specifications. Unfortunately, during day-to-day development we rarely have the time to examine the documentation of every invoked method or to read it thoroughly. Therefore, in cases where directives are presented in unexpected locations, there is a significant risk that we will never become aware of them, and create errors. More detailed examples can be found in Why are directives important?

eMoose works with an existing knowledge space of directives, which are created by: the developer and peers for project artifacts, by authors of new APIs for the benefit of their users, and (eventually) by the eMoose user community of popular APIs for all users of that API.

Whenever code is visible in the Eclipse Java editor, eMoose identifies all calls whose targets have associated directives, and decorates these calls as can be seen below. This provides an important cue that the documentation of this call may be worth investigating. 

eMoose decorations