Summer of Code Proposal for CMS Theme Builder

This is a generic proposal for the Goolge Summer of Code program. Since it can apply to several CMS systems, including blogs, I am using the generic term. If you are affiliated with a specific organization and wouold like to mentor me, please drop me a line. I am applying to both the Drupal and WordPress organizations to increase my chances of being accepted. I have placed generic references in brackets, and will be using the name of the organization in place of that for my proposals.

Personal Details

  • Name: Samuel C. Tyler
  • Email:
  • Skype: skamansam, AIM: skamansam3, GTalk:


Have you ever visited a content-managed site, and found the visual aspects unappealing? Have you wished you could change that appearance graphically on one site, then apply it to all the sites you frequent? Do you use a lot of different computers and can’t apply global styles through every browser? After all, don’t most CMS -based web sites have a lot in common? If you are one of these people, I have a new proposal for you! Since most CMS- based web sites have many visual element in common – like a header, content area, sidebars, and footer – I propose to create a theme and module for integration into these sites which use Web-2.0 technologies to make all this possible! If you have a blog or web site, you can store your theme data there, then use OpenID (or other mechanism) to apply that style to any CMS that has that that module installed.

Project Proposal

A Theme Builder that can be used by a [CMS] theme for users to design their own themes. This Theme Builder is similar to the idea proposed by ipwa. The basic idea I have is a theme that would include a link to enable user themes, and upon clicking, would open up a simple entry field for entering the URI of a custom theme file or creating a new one. After entering the URI, allowing the a cookie could be stored on the user’s browser (possibly using Google Gears instead), which would allow the user an easy method for creating a theme on one site and using it on many. If the user wants to create a new theme, a “designer” widget would pop up to allow users to edit the page’s style as they see fit. If, while browsing the site, they find a certain element that is not styled to their liking, they can activate the designer again and perform the operations (styling) there.
It will include two parts:

  1. An HTML widget, similar to the jQueryUI ThemeRoller, for creating the styles, which will edit styles interactively. This will include editing fonts, backgrounds, etc, and possibly slight image editing support. This would be powered by jQuery.
  2. The Theme Builder theme, including several methods for storing and retrieving theme data. Storage methods include using site data storage, cookies, Google Gears, etc. This could be configured to use several formats, including CSS and a “faster” custom format. This would also include a method for import/export by the theme engine for easy migration to and from other installations.

Schedule of Deliverables

Each of the following milestones will be fully documented, as I like to document my code and features as I go along. I will be using a new blog to better document my work and any caveats as I go along.

  • Weeks 1 & 2: Design the html widget frontend, including preferences
  • Weeks 3 & 4: Document the data format, this will include testing existing formats and/or developing a new one
  • Weeks 5 & 6: Create module for theme data I/O using brower cookies
  • Weeks 7 & 8: Create the theme that uses the theme data
  • Weeks 9 & 10: Create storage mechanism for new themes and user data
  • Week 11: Write Documentation
  • Weeks 12: Scrub for Bugs!
  • Continuation: Create ThemeBuilder theme/plugin for other open source software

Open Source Development Experience

I have created a few open source projects so far. Most of my open source experience comes from working with developers over IRC. The most active project is probably wxCPAN. All of the software I write is free to use and redistribute. See my home page for more projects.

Work/Internship Experience

I am currently a student worker, in the capacity of web master, for the largest school (27 departments!) at my university. You can see my page at the university here. Last summer, I participated in the Summer of Code, where I created a GUI for CPANPLUS, a Perl module manager.

Academic Experience

I have been teaching myself various programming languages sine 1995, and have been creating web sites since 1996. I am currently an undergraduate at the University of North Carolina at Greensboro, working on a computer science degree. I have taken classes there that have helped me learn about databases, many diverse and archaic programming languages, computer organization, networking, and many other theories in a field that continues to amaze me.