Editor Plug-in APIs for Lenya =============================
by Zhiwu Xie firstname.lastname@example.org
This project will investigate and implement the editor plug-in APIs for Lenya, an open source Java/XML Content Management System.
The proposed Lenya editor plug-in APIs will:
- Enable the ability to readily plug in different editors to Lenya - Free the Lenya developers from maintaining multiple editors shipped with Lenya - Enable the functionality evolving with upgrades of different editors. - Enhance the Lenya usability by allowing users to use the editors of their choice.
- Editor plug-in APIs for Lenya - Implement plug-ins for BXE and/or Kupo to demonstrate the applicability of the API approach
Although currently shipped with two open source editing packages BXE and Kupo, Lenya is still in need of an editor that can fully meet the ever-growing requirements for different content management use cases. Some of the requirements identified by the Lenya developers are:
- Multiple browsers compatibility including IE and Mozilla - Can edit XML, XHTML, and HTML - Blog publication support
This list is expected to grow longer with the time, but none of the included editors can meet even the basic requirements listed above.
A naive solution to the problem can be extending either BXE or Kupo, or another editor that shows better prospect to meet our requirements. But a closer analysis reveals its limitations:
- The current Lenya editor integration method, or the lack of it, is very time and resource consuming to upgrade and maintain, therefore is not sustainable for an open source project like this. Concerns have been raised by Lenya developers that ¡°we are too short on energy and developers to support this many editors¡±.
- Which editor shall we choose to support? They all have strengths and shortcomings. Even if we can make the best choice for now, how can we be so sure about the future? What if the chosen editor is dated in a year yet no subsequent development will be scheduled?
- After all Lenya is about content management, not content editing. Is it worthwhile to put so much effort in editor development?
- Large numbers of editors are widely available for various purposes. Even though none of them can be identified to meet all Lenya¡¯s requirements, put together as a whole they can, and should remain so with their own evolvements and upgrades. There is no need to re-invent the wheel.
Apparently, finding a way to mount the wheels is a smarter solution. The proposed Lenya editor plug-in APIs will take this approach and solve the problem by providing clearly defined interfaces for an editor software to be plugged into Lenya. The problem can therefore be well managed by defining contracts or interfaces between Lenya and the editors Lenya uses, with Lenya as the client that requests services from the interfaces, and various editors as the servers that provide the services required.
We make no assumption on which editors can be used. They can be either browser based editors or standalone applications, open source or commercial software. The only requirement is that for an editor to be plugged in, it must provide implementations to these APIs.
In order for Lenya to smartly choose the editor for a specific purpose, the proposed APIs should also "provide a way to tell the Lenya core what documents can be edited and what it takes". By doing so, when an editor plug-in is available and shows it can edit a certain kind of document, invoke the editor and the functionalities should be readily working without further twists.
The proposed API will be implemented with the same tools used for Lenya development. The applicant will work closely with Lenya developers, especially the mentors to ensure the project's usefulness to Lenya.
Total development period will be 8 weeks from 24 June 2005 to 20 August 2005. A breakdown of the schedule is as following:
- Week 1 and 2: Inception. Review and if required, study programming skills and tools. Set up the development environment. Lenya editor requirements gathering and analysis by pooling and requesting comments from Lenya developers.
- Week 3 and 4: Study Lenya source code. Continue consolidate the API requirements. API analysis.
- Week 5: API definition
- Week 6 and 7: Plug-in implementation for either BXE and/or Kupo.
- Week 8: Remaining debugging. Testing, documentation, and review.
I'm currently a 2nd year PhD student of computer engineering in University of New Mexico. My PhD research is on digital library, a closely related topic to content management and Lenya, and I plan to extensively use Apache¡¯s Java/XML packages in my research. My technical background includes high performance computing, OO software development, and requirements engineering. I have programmed with C/C++, java, and Matlab, developed algorithms and simulation packages as well as designed and implemented University of New Mexico Libraries' eResource Management System, a LAMP based web application. The Lenya editor plug-in API project will introduce me to the open source software development, to which I look forward to contributing more in my future career.