Dominik's Summer of Code 2007 Project Proposal
Jackrabbit Wiki/Blog Demo
dominik at wagenknecht.cc
dominik at wagenknecht.cc (Google Talk)
JCR Demo Application based on Jackrabbit (as suggested on the GSoC 2007 Apache Wiki Site)
Currently, whenever a new blogging platform, wiki, or other content-oriented web-app is created it seems that the following happens: Take Spring + Hibernate + MySQL and off you go. But usually the data isn't "relational" (in the sense of really relating a lot of things to each other) at all. Then as success comes, some sort of "categories" gets implemented, some sort of "visibility". Versioning is re-invented, and of course a lot of stuff I'd like to call "tags".
I would very much like to showcase a different path. By using a more document-centric approach and getting rid of all the usual db-mapping issues an Apache Jackrabbit based wiki, should be clean and elegant. Thus allowing the programmer to focus on really important things like ease-of-use. To provide a comfortable learning curve I intend to present the project in multiple steps. Starting from a nice Wiki I would like to add blogging and commenting in multiple steps.
Project Plan & Deliverables
1. A simple Wiki: It should use minimal amount of easily readable code. The idea is to: fetch data from repository and get it out there to the browser (I am very open minded the ideal rendering "engine" to use; obviously it should leverage the existing stack of technologies available at Apache or at least be ASL 2.0). Combined with basic editing and a simple transformation between XHTML-Subset and some Wiki-style this should be a good starting point.
2. Get more info in: Get in more information into the wiki pages that is to be requested via XPath. Basically I was thinking of a category tag, and enable linking of pages (references) plus versioning. I think this is the point where the beauty of a content repository really shines.
3. Getting to a blog: By adding metadata that a certain repository entry is bloggable with a certain date gets us step to step to a usable blog and thus a solid foundation and understanding of Jackrabbit.
I plan to code (more or less) according to the steps layed out in the project plan. But: Documentation is the main part and will always be overlapping with everything else. The Summer of Code 2007 guidelines provide ample time for preparation and getting known with community & code. As my project starts from scratch and my first deliverable (basic wiki) should be quite simple (the code!), I intend to release very early (also because my personal schedule supports that very much).
1. Initial planning and designing of the project: Testing of the basic Wiki - 28th of May
Within this period I will look into Jackrabbit and build the basic wiki with at least two frontends. I would like to have an open discussion on what to base this showcase. I have good experience with classic tomcat + jsp + struts. And I am very interested in wicket which is now under incubation at Apache
I definitely want to try wicket, for another choice I am very open minded! Input is very much appreciated.
Deliverable(s): The Wiki(s) with extensive documentation
2. Enhanced Wiki – July, 9th (midterm)
This time will be used to enhance the wiki and lay the foundation for blogging by supporting categories and versioning. Here I would very much like to focus on one frontend only, as the main objective is to make highly understandable and clean code.
Deliverable(s): Enhanced Wiki with extensive documentation.
3. Blogging, enhancements, more documentation - August, 20th (endterm)
In this period of time, I am 100% free of other commitments so it's perfect for the finish line. Implementation of blogging, bug-fixing and of course I have to find out how understandable my previous introductions are. So I reserve ample time to make the steps visible and understandable. Main objective is perfect documentation while showing what is possible to motivate people to stay on track and find out for themselves.
Deliverable(s): The blogging enabled Wiki, and documentation (a lot).
I am in my final year of technical mathematics at University of Technology Vienna / Austria. Before university I was in a special school aimed at electronics and software. I earn my allowance by doing software projects since 1998, with strong background from the bottom up: Assembler, C, C++, embedded programming. In 2001 I took part at the International Olympiad in Informatics in Tampere / Finland. Since five years I am doing all my projects in Java (often with a c backend). I used jsp and struts in production systems, combined with DWR (AJAX library). On the client side I have realised two big projects based on Eclipse RCP -- coming from the low level I enjoy the SWT way of doing stuff. As I have a lot of freedom in my projects I proficient at Java 5 and would love to use it! If this doesn't fit well with the project I can (of course) stay on J2SE 1.4.
I never used Jackrabbit but had it on the radar for quite some time. I see great future in content repositorys because I think many projects focus (at least on the buglist) on the wrong level -- I dismiss reinventing the wheel (with no reason) and thus producing many incompatible databases. Java Content Repository is great possibilty to unify. As a matematician I always seek to understand the principles and rarely just hack around. Thus I like to produce very clean and (due to bad experience) highly maintainable code.
I strongly believe that being a part of GSoC 2007 at Apache Foundation is a great way to really contribute to Open Source while still being able to use technologies I am really interested in.
Please don't hesitate to drop me an email for suggestions, clarity or whatever.
As being under NDA I really have nothing great to offer. But as I plan to release early I hope the risk is minmal.