Final Project Report: JEdit PolyML Interface enhancements

Development project:


Lucas Dixon began development on a plugin for the jEdit[1] "Programmer's text editor", which allowed its use as a front-end to PolyML[2] using its interpreter API. The project was to build on this initial work and produce an enhanced plugin with a more complete and usable feature set[3].

This project was a means of allocating the last four weeks FTE of some "paid support" which MRG had allocated initially to Proof General development. The intention was to use the remainder of the effort gainfully by transferring it to the development of a different project.


There was no absolute deadline for the completion of the work, other than the eventual expiry of the grant which was in no danger of being hit.

The timescale was externally fixed at one month. Scheduling this in a way which would allow concerted effort on the task was a concern, so the eventual solution was to allocate this time in one-week blocks during which time my unit operational duties were effectively to be suspended.

In order to spread the load on the rest of the unit, these weeks were to be spread out with one block approximately every four weeks.

The project was due to begin in November 2009 but was not completed until November 2010.


Specific software functionality was defined as a set of deliverables to begin with, each with a target numbered week of completion. No absolute (i.e. calendar) deadlines were set. The final amendments were to be submitted to the PolyML codebase.

However as this project was assigned on a "paid support" basis and as the effort required to familiarise and "break into" the domain of the problem was not explicitly accounted for meant that the deliverables were ultimately treated as more of a wish-list than as formal milestones.

The basic set of deliverables included the production of an "HTML-like panel" which would act as both ML communication transcript and a document error / type information overview, replacing the use of a third-party jEdit plugin for this purpose. Further enhancements involved the interactive querying and markup of type and error information within the document. All of this work required fairly deep reworking of the internal communications between the plugin, the editor and the ML interface. Though the foundations of the latter were complete and did not require work, some knowledge of the human/ML interaction was needed to understand and validate the communication and parsing algorithms.

Final Comments

Project Status

The project was completed due to exhaustion of the available effort. Not all deliverables were completed to the extent requested; this is discussed below.

Notwithstanding the above, some significant changes to the plugin codebase were made and the improvements might provide a base on which others can continue to build.


The allocation of one-week blocks with their associated units of work, seemed to be a good idea in principle and, under different circumstances, might have been more successful.

It was simply not possible to allocate 100% effort during a week to a single task. In particular, on one occasion development was halted for the week due to urgent demands of the teaching PostgreSQL service.

The project was intended to begin in November 2009 but was not scheduled in its entirety until March 2010, from which four weeks were spent at approximately 80% FTE each week. In order to 'mop up' the remaining effort a final week was delivered in November 2010 but by this point it was clear that the majority of the requested deliverables could not be completed.

The gap between development weeks was significantly longer than it should have been and enough that overhead was incurred at the start of each block of work (particularly in the final week). This did not allow effective continuity between blocks of work.

Regarding the development itself, in retrospect it seems that the amount assigned to each week was somewhat optimistic. Perhaps this was due to a misjudgement of my familiarity with the principles of the system; this is not clear. It would probably have been useful to review the work at the end of each week, altering targets as appropriate, but as the goals for each block were not driven by a specific deadline it did not seem necessary at the time.

Future Work

It is not anticipated that future effort will be requested against this project however some improved jEdit plugin framework is available for others to base work upon.

Other Lessons Learned

Working on a project so far outwith my core development and operational remit proved more difficult to switch to and from, and seemed to create more disruption than other development.

It was also extremely difficult to perform development in complete isolation of unit duties, and on this occasion I do not think it was possible. A more balanced approach may not provide the maximum density of FTE for the "customer", but the risk of delay is much lower and provides more ongoing engagement and feedback for the customer.

The case statement of the project declared that "This project was created to use left-over effort [...] necessary to spend [...] in some way." and, although the task was relatively well-defined, it was probably not appropriate to assign a large development task to a small fixed remainder of effort in this way.


[1] jEdit Homepage:
[2] PolyML Homepage:
[3] Plugin Project Page:

Topic revision: r3 - 31 Jan 2011 - 12:57:06 - Main.GrahamDutton
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
This Wiki uses Cookies