Google Summer of Code 2010: Project
"HTML5 Support for Apache MyFaces2"
Student: Ali OK < aliok AT aliok DOT com DOT tr >
Organization : Apache Software Foundation
Mentor : Matthias Wessendorf < matzew AT apache DOT org >
By this project, current MyFaces2 core components will be extended to support new HTML5 attributes and functionality. Additionally, several new JSF components will be developed, since some HTML5 features cannot be applied into current components in order to keep the complience with the JSF specification. New functional behaviors like HTML5 drag&drop will be supported on JSF side.
Applicable features within the current core components will be enabled optionally with a context parameter. Some examples of extending current core components are:
For the new components, a new namespace, preferably hx, will be used for new JSF components. Some examples are:
< hx:inputEmail >: Email input (new with HTML5)
< hx:video >: New HTML5 video
For the new functional behaviors, a new namespace, preferably fx, will be used for JSF components similar to:
< fx:dragAndDrop >: New HTML5 standard drag and drop functionality
A detailed descriptive diagram about the structure and deliverables is shown below.
Currently, HTML5 spec is in the "Last Call" state. Most of the browsers started to support new elements, and many leading websites started to use HTML5.
During the Google Summer of Code period, a lot of HTML5 features cannot be covered since it requires much more time than 3 months. To solve this issue, HTML5 Renderkit Base framework will be provided to continue the work after GSoC.
This project will follow the guidelines of the Apache Foundation.
There is no HTML5 supported JSF implementation, and HTML5 JSF component library at the moment, and this project will be the first one. I believe HTML5 support will attract a considerable number of people, therefore both Apache and Apache MyFaces communities will expand more.
Project will use Apache MyFaces Core, Apache MyFaces utils, Apache MyFaces Maven, Apache MyFaces builder and other Apache products. Apache is a good match for the project because it aims to extend Apache MyFaces with new components.
April 27 - May 23
Determining what components to create and which current MyFaces2 core components to extend
May 24 - May 27
Creating the project structure
Configuring the builder
Doing initial work.
May 28 - June 1
Implementing a base library which future components will use. This base library will extend the MyFaces utils and the base, which will provide us to create new components easily.
June 2 - July 10
Implementing most of the targeted components, which should be served in a milestone release. Implementing a component consists of coding the component, writing unitcases and testing.
July 10 - July 12
Preparing for mid-term evaluations: Getting the milestone release ready and working on mid-term evaluation criteria.
July 13 - July 25
Implementing the remainder target components.
July 26 - August 1
Detailed testing and bugfixing.
August 2 - August 8
Writing a couple of sample projects to demonstrate the library.
August 9 - August 11
Improving the documentation.
August 12 - August 14
Preparing tutorials and presentations.
August 15 - August 16
Preparing for final evaluation and getting the final release ready.
I will be graduated from Istanbul Technical University Computer Engineering in May 2010.
I am a Sun Certified Java Programmer (SCJP) for a year, and I have a blue belt in JavaBlackBelt.com since September 2008.
I am a big opensource fan and supporter. At this moment I consider myself as warming up my personal opensource progress.
At Apache MyFaces, other than providing some bugfix patches, I've worked on Google App Engine support for MyFaces. Starting from January 2010, in parallel with HTML5 discussions, I've worked on Google App Engine support and it made trunk. Google App Engine support is released with Apache MyFaces 2.0.0 Beta-3. I also prepared some documentation and some tutorials for App Engine support.
On the project "Eclipse Code Repository Search Plugin", I helped implementing a Proof of Concept.
Aside from my open source experience, I am working at a software house in Istanbul for 1.5 years. I mostly worked on international multi-vendor Internet Banking projects.
I will be graduated in May and I have only one exam in community bonding period. After coding starts (May 23), I have nothing to do with university.
Currently, I am working full time. I can get permission for Google Summer of Code, if not, I can convert my job to part time or I can even quit my job; since this program is important for me.
I guarantee that, I can work 40 hours a week on my project.
Twitter : twitter.com/aliok_tr
Blog : blog.aliok.com.tr