Mylyn/SOC/2007/Mylyn Plug-in for DrProject

From Eclipsepedia

< Mylyn‎ | SOC
Revision as of 13:36, 2 August 2007 by (Talk | contribs)

Jump to: navigation, search

Student: Xiaoyang Guan
Mentor: Greg Wilson



Most professional programmers now use an IDE like Eclipse, and many Computer Science students have also adopted it. Most professionals and open source developers also rely on web-based project management portals such as SourceForge, Jira, and Trac. These are still not commonly used in classrooms, but projects like DrProject are working to change that. DrProject is a fork of Trac that has been customized for classrooms use; it is now being used in several courses at two universities, and is being evaluated by several others.

At present, most developers have to switch from their IDE to a browser in order to file or view bugs, edit wiki pages, and so on. One prominent exception is the Mylar project, which has been working since 2003 to provide a view inside Eclipse that allows programmers to see and update shared information, particularly from bug tracking systems like Bugzilla. The aim of this project is to bring that capability into the classroom by using Mylar to create a bridge between DrProject and Eclipse. This integration will allow students to perform the management on the repositories in DrProject directly in Eclipse.

In addition, as an enhancement to Mylar, this project will provide wiki integration. This involves providing mechanisms for rich editing and viewing of task repository comments in wiki format, potentially adding wiki editing.


Wiki-Formatted Text Presentation in Task Editor

The first primary goal is to support wiki formatting in task editor. This will be carried out based on the current Trac connector in Mylar. (see bug#184904)

Use Cases

  • Provide a HTML-based widget for rendering wiki-formatted text. This might involve writing a simple wiki rendering engine as a prototype. Limitation of HTML is that we can’t link to structured elements within Eclipse (e.g. Java elements in stack traces, other tasks). [EK that is not necessary true. if you create hyperlinks then you can navigate to the appropriate elements]
  • Provide a rich/styled text widget that renders the basic wiki syntax, provides rich editing, but has wiki formatting underneath so that the Trac server gets wiki text. Benefit is that this can fully link to elements within Eclipse.
  • Make it easy to paste links to Mylar tasks within wikis. This could be done by having the Copy Details action take templates similar to Mylar’s Commit Comment Templates, and specify a good default template for wiki formatting, e.g. [<url> <id>: <summary>]
  • Provide button widgets for automatically inserting wiki markup characters in input text, the same as those in the web-based interface, and a preview button that renders the ticket preview. This provides similar user experience as using the web-based interface. [EK those should be regular actions that can be bound to shortcut keys and shown on some toolbar]
  • Provide content assistant similar to that in Eclipse Java IDE that facilitates editing wiki markup syntax.


Wiki-formatting is allowed in ticket description and comments sections. The description of an existing Trac ticket is editable, the same as the new comment section; while existing comments are read-only. In the editable sections, a new browser widget and a preview button will be added besides the current StyledText widget for editting the raw wiki text. In the read-only sections, the current StyledText widget will be replaced by a browser widget to present the text in HTML format.

Formatting the wiki text into HTML is done by calling the wiki.wikiToHtml function provided by the Trac XmlRpcPlugin. To minimize the time for opening an existing repository task, the HTML formatted presentations of the current description and existing comments will be cached offline. A round-trip to Trac repository to format the modified description and new comment only occurs when the user clicks the preview button, and this operation is run asynchronously in a separate thread from the UI thread.

Note: to build a client-side wiki text formatter in Eclipse has the follow problems, suggested by Greg Wilson [1]:

#1. Most wikis format PotentialLinkText differently depending on whether the
page being linked to actually exists or not, but the only way to know that is
to query the database where the wiki pages are stored.  The client *could*
cache that information, but that would still leave:

#2. Most wiki systems have some sort of macro facility.  In Trac, for example,
you can register bits of Python code, then invoke them to do things like list
all the wiki pages, provide backlinks, etc.  Macros usually pull stuff out of
the database.  I can't see any way to do this client-side (unless we include
interpreters for the major scripting languages and a DB proxy in the wiki
formatter, which I think is out of scope ;-).  Macros are used often enough, in
enough wiki systems, that I don't think they can be left out; if we're going to
round-trip to the server to execute macros, we might as well do one round trip
to format the whole page, no?

Wiki Integration in Mylyn

Some issue tracking systems like DrProject and Trac have an integrated Wiki. A built-in Wiki engine is used for text and documentation throughout the system. Wiki pages are useful for project documentation. Wiki integration in Mylyn will extend the features of Mylyn to the Wiki facilities of those issue tracking systems.

The first integration is to provide a Wiki page editor. This will be done in iterations suggested by Steffen Pingel [2]:

 * Java wrapper for the Trac XmlRpcPluginWiki API ( ) which implements the WikiRPC API
(and could therefore be reused for other Wikis in the future)
 * Provide a selection dialog to select a page for editing (the page could be
opened in a browser as first pass)
 * Implement an editor that can display the source code, save modifications to
the Wiki and provide a similar preview like the task editor (preferably in a
foldable split view so the source and preview are visible at the same time).
 * Implement a view that shows the version history of Wiki page similar to the
CVS history view
 * Improve the editor:
  * Syntax highlighting
  * Toolbar for inserting Wiki elements
  * Folding
 * Add attachment support
 * Add offline support for Wiki pages


  • See bug reports 191114, 194269, 194827 for the progress on Wiki integration in task editors.


Note: using this template, DrProject users can take advantage of the task and context management features provided by Mylyn. Althought the integration is limited, e.g. not rich editor support, this does provide a way for DrProject users to do everything within Eclipse, besides the attractive features of Mylyn.

In Progress

  • Provide a selection dialog to select a Wiki page for editing (198017)

To Do

  • Wiki page integration (190891)

Bug List

  • Provide a selection dialog to select a Wiki page for editing (198017)
  • Java wrapper for the Trac XmlRpcPlugin Wiki API (196585)
  • Intercept links in HTML preview (195916)
  • provide preview for new comment in Trac ticket (194827)
  • display existing comments in HTML (194269)
  • provide HTML-based widget for rendering formatted wiki text in ticket description (191114)
  • integrate Trac wiki pages with Mylar (190891)
  • Provide wiki editing facilities in task editor (184904)
  • Manage Mylar Plugin for DrProject GSOC project (185781)