Web-Based IDE for GuideXML

This page is intended to supplement this proposal. Please download and read it before proceeding.

Why a web-based IDE?

Although it is possible to design a desktop application in toolkits like Gtk+ for the same purpose, I believe a web-based IDE will connect to more people than any desktop application can. A web-based IDE places very few pre-requisites on the client, just a JavaScript enabled browser.

I also believe that it is possible to emulate any 'widget' that a GUI toolkit can offer on the web with clever JavaScript. Dynamism can be brought about with AJAX programming. I see no reason why a rich editing experience cannot be brought to the user on the web itself.

How are you going to achieve this?

There are already a large number of through-the-web editors for a wide variety of markup languages that includes HTML. Examples of such editors are TinyMCE and HTMLArea. Here is a screenshot of the HTML content modifier at Wordpress.com:

The same HTML can be viewed in a "source" mode where the actual source is displayed:

I plan to make a similar interface, a display view where novice users can use the buttons to format their GuideXML document appropriately, and a code view where advanced users already familiar with GuideXML can edit the XML syntax directly. Syntax highlighting and code completion are two features that I plan to add to the code view.

What about XML Validation?

Once a web-service for repodoc is setup, it will take care of XML validation for editors that are deployed "online", i.e. on servers. However, for editors that are used "offline", i.e. on clients, or in cases where the web-service is not accessible, regular DOM validation using a Schema will be done. I plan to author a Schema for this purpose, but discussions have to be done with the Gentoo Documentation team. Maybe I could convince them by stating that I will be responsible for maintaing the Schema document :)

What's all this about Internationalization?

A lot of Gentoo developers and contributors have a native language that is not english. For this purpose, it is neccessary to provide the neccessary features in the editor to allow for i18n. I plan to use GNU's gettext for this purpose, via PHP's gettext extension. This way, regular PO files for translations can be authored, a format which is widely used for translations. A default template (english.pot) will of course be provided for the convenience of the translator.

Beyond SoC 2006

Some of the ideas that I had are unable to fit within the time-frame of the summer of code program, but these are things that we should look into and probably implement after the program is over.