Update: This project has been accepted! Martin Aspeli will be my mentor. :)
For those of you not familiarized with Plone nor web development nor computers: I want to press a lot of buttons to make the pattern of lights shown in a metal rectangle change however I want. (credits to xkcd #722 ;)
For the rest of you, here goes my Google Summer of Code 2010 student proposal!
Core tiles development
Deco is a revolutionary page composition system heavily based on semantic HTML and middleware software (either WSGI or using a post-publication hook), which could probably be shipped by default with Plone 5. The underlying Deco architecture, based on the concepts of panels and tiles, needs a set of core tiles (image, video, navigation tree, content-type field) to be inserted in the page.
What are you studying, and where?
I’m a Physics student from the Universidad Complutense de Madrid, Spain. I’m studying now in Stockholm (Kungligla Tekniska Högskolan) as an Erasmus student, and will study in Barcelona next year within another exchange programme (Séneca).
What is the most interesting programming project you’ve undertaken while at university?
I’ve coded a C++ app to solve the minesweeper game using different chained strategies.
Have you ever contributed to an open source project? If so, give details.
(Remember, filing bug reports and writing documentation are every bit as much contributions as writing code)
I’ve contributed to:
- Flock: Bug reports and translations to Spanish, as well as trying to lead the l10n team for a while.
- Mozilla: Providing help in the Mozilla Hispano (community website) forums, as well as writing some end-user documentation and a localization QA application in Django.
- Alqua: Wrote part of the code to use LaTeX templates written in the Cheetah template language to generate quality documents.
- Plone: Contributed and managed developer documentation. Leaded efforts to write documentation for the upcoming Plone versions. Reported a bunch of bugs, and fixed anohter (coding).
Have you used Plone before? What for?
Yes, for the Alqua website, in my first job (Zassh website), working with the Plone community and in my current job in Webworks.
Have you spoken to anyone in the Plone community about your project? Who?
Yes, Martin Aspeli, Geir Baekholt, Matthew Wilkes, Alexander Limi, David Glick, Rob Gietema and I guess some others I don’t remember right now.
What is your project idea?
This is the most important bit, so be as detailed as you can.
Deco is a new and exciting new way of composing, and I’d say that even theming pages and a website. It allows the user to create flexible grid-based layouts for the contents directly through the web without the limits of portlets and viewlets positioning and unifying these two concepts through the idea of “tile”.
Some sample tiles have been developed as a proof of concept (example.deco), but we need to develop a set of standard core tiles, including the so-called “application” ones like Text, Navigation, Image, Video, Calendar, Login Box, Search Box, Map, RSS Feed or Comments, and the field-type one, which can represent fields like Title, Description or Date. These last one would be probably integrated with Dexterity.
I want to create all these, and I think that we will find and solve a lot of issues underlying the current architectural Deco code in the way. The collective.tinymcetiles product, already usable, will allow us to insert tiles in Rich Fields and therefore test them.
At the same time, most of the infrastructure and API for creating, storing and displaying tiles is already completed (plone.tiles and plone.app.tiles), as well as the system to merge and render panel layouts (plone.app.blocks), but we still lack a system to store and manage site and page-wide layouts. I want to work also on the design and implementation of this system, with the help of my mentor.
Finally, and keeping in mind the radical change of concept Deco involves, I’d like to write quite a lot high and low-level documentation about how the whole system works, ensuring a smooth transition curve for people already used to the old way as long as newcomers.
Please complete the following sentences about how you see the state of the project at different points in the timeline:
At the start of the official coding period (i.e. a month after the accepted projects are announced) my project will be …just about to start after having read the documentation about the different packages involved and played with them, creating some test tiles and some test Dexterity content-types, to understand better how they work.
3 weeks into the official coding period my project will be …having coded an alpha version of most of the application tiles: Image, Video, File, etc. These tiles can work with Archetypes content types and collective.tinymcetiles.
Half-way through the coding period my project will be …having coded an alpha version of a sample field tile. These tiles would extract the data from a Dexterity content-type. example.deco already implements a proof-of-concept for a field tile, but this implementation needs to be rethinked according to M. Aspeli. Field tiles won’t probably work well with with collective.tinymcetiles, but Rob Gietema (from 4Digital) is already working on the plone.app.deco package to support this.
3 weeks from the end of the coding period my project will be …having polished the previous tiles and started working on a Dexterity “Page” content-type to be able to insert field and app tiles in it without collective.tinymcetiles.
At the end of the coding period my project will be …finished working on the Page type and the previous tiles.
3 months after summer of code finishes my project will be …hopefully continued to fix bugs and improve it! It will need to if we want it to make into Plone 5.
Do you have any other commitments during the summer of code period (i.e. between June and August)?
I plan to travel for holidays for at least a week. I also have to move from Madrid to Barcelona, so I’ll need to look for an apartment there and probably will be busy for a week or so till everything settles down again in my life. :)
I’ll also attend the Plone Symposium East 2010 at the end of May.
I also plan to attend the Plone Conference 2010 this Autumn.