Ramblings of a wanderer

Category Archives: GSoC

It’s bit late for for a closing tribute on SoC, but something is better than nothing, right ? So here we go.

Google Summer of Code 2008 was the second SoC I participated in and last year with Gnome was my first. This time the SoC was with Eclipse and it was in one word ‘Awsome’.

In more details, the summer with Eclipse community was a great experience, Specially my mentor David Carver who supported me in every stciky situation in the process and believe me when I say without his support it would have been a nightmare for me (one badspot with Eclipse is its lack of up-to-date documentation in certain areas). So my heartfelt thanks go to David and all the Eclipse community who helped me to have an easy learning curve.

You can check all 2008 SoC Eclipse projects here. More info on the project I was working on – Eclipse XQuery editor can be found here. The code can be checked out from Eclipse incubator repo from here – eclipse-incub.cvs.sourceforge.net/cvsroot/eclipse-incub/org.eclipse.wst.xquery. Also we have setup a download site for the plugin. If you are interested, please get a copy for yourself and check it out and let me know what you think of it.

Lastly, I’m hoping to continue the project and already have a long todo list prepared. Also my thanks go to all who voted me in as an official commiter for the project. Currently paper works are being carried out and hopefully I will soon get CVS access to Eclipse repo as an official commiter.

Btw, I got my SoC shirt and certificate last week and they will be great mementos to remember this summer with Eclipse. For all these great stuff a big thank goes to Google and specially its Open Source division.

Last 2 weeks were very productive for the new xquery editor and finally able to get a breakthrough in the project.

I was trying to work out xquery syntax colouring as I thought it is what someone would be expecting first from an editor. So finally it was completed by this weekend and you can see how it is working in the screenshot below.

When first I was thinking how to tokenize the text it was looking pretty gloomy because it would have taken a good amount of time to write ANTLR grammar file, generate tokeninzing scripts and finally fine tune them. But thanks to xqpretty tokenizer it was pretty easy for me to skip first 2 steps and directly go to 3rd step and fine tune it to my needs.

So I tested a good amount with the tokenizer to see whether it meets my requirements for the plugin and also Eclipse standards like license issues (As usual David was a huge help in these matters). Then I had to generalize token types to something around 10 because it was not manageable with more than 100s of token types. After this was done I added required classes to provide text colouring such as PreferenceInitializer and LineStyleProvider. Then with some more bug fixing and mucking around finally got the required result.

But mind you, this is not completely tested nor bug free. I already have a list of bugs to fix regarding text parsing and some more runtime errors. So if you have a thing for xquery and some spare time, grab a copy please and list any error you see in text parsing (For now you will have to grab a copy from SF using the address stated below but I’m now working on an update site for the project so it won’t be that hard then)

Last few weeks had been good for the new plugin. Nothing too fnacy yet, but now I think it has a firm basic structure and other necessary classes to name it as an “Eclispe SSE based editor”.

Regarding how it’s processing is done (since that’s what really matters), we have thought of following a somewhat same structure as in HTML+CSS plugins. This is due to the syntax of XQuery which is like a combination of XML and SQL, as you can see from these user cases. So as David suggested, the easiest way is to first understand how HTML plugin handles embedded CSS and then use the same technique to add syntax colouring in the new XQUERY_XPATH context after going through the XQuery Parser. So now I’m currently going through adding required classes for line styling and parsing.

So my immediate targets are,

1) Add line colouring and parsing XQuery partition

2) Add content assistance through re-parsing

It’s not easy to materialize a parser out of nowhere. But it has to begin from somewhere, is it not ?

Other than that the plugin now has basic support for Preference pages & Outline so they will also be improved as the project goes on.

Here is a peek at the new editor.

As I may have mentioned previously, without the help of David and other guys at Eclipse IRC I would have been totally lost. There are gaping holes in Eclipse main documentation and most clsss references on SSE aren’t complete. So as that is what any newcomer will look in to when faced with a tricky situation, I truly think more attention must be put into improving Eclipse documentation and who knows, that alone could attract new energy into Eclipse community.

/* Will be some what Greek to someone who hasn’t worked with Eclipse, so you have been warned */

Yes, some must be wondering on this. But it all comes to the fact that planning a software project is the hardest part of the procedure, and that I was having a hectic period for last 2 weeks because of my academic stuff. But it’s settling to a steady phase now and I’m having some time to start coding again after a while. Also about planning of the project, my mentor and I talked heavily on the best and easiest path to take by using already existing resources such as the existing XPath parser (which is mostly done by David himself) and XSL plugin.

So now what I’m trying to do now is (and somewhat stuck at),

1) Partition the editor into content types.

2) Use existing content types to read patterns such as XML.

3) Create parsers for XPath2 and XQuery content types.

4) Make AST out of these 2 new content types to do more fancy stuff like content assistance

IMHO these 4 steps are the heart of this plug-in since almost all other fancy UI stuff are based on the success of this. In order to implement those so called fancy UI stuff I will be extending the Structured Source Editor(SSE) since it’s the best course of action for a XML editor.

Another factor that has been lagging the speed of this project is the lack of documentation for SSE and how to make partitioning based on content types. Best support materials I found that could be used practically were few slides from EclipseCon and other editor plugins similar to this such as XSL, XPath, JSP and PHP editors, which David helped a lot suggesting and finding them. It was somewhat hard at first to comprehend the structure of SSE but reviewing these existing plugins helped it.

I’ve created the project at SourceForge Eclipse incubator for now and you can check it out from there as the project goes and I will use this post series to bring news of the progress of my new buddy.

This is just to share the great news that (Drums and ovations) University of Moratuwa, Sri Lanka is by far the most contributed university in the world for this year GSOC in both applied and accepted student number wise .