Summer of Code season is back for 2009! We've come up with programming challenges as part of our application to Google.
If we're selected by Google to participate, then university students can apply to Google to work on one of the programming challenges suggested below. Applications are open between March 18 and April 3, and successful applicants will receive USD4500 and some swag for their effort!
In the past, our Summer of Code projects led to students working on support for OpenID authentication, Postgres database abstraction, Google Maps, Sitemaps, and Analytics extensions, Flickr & YouTube mashups, Safari compatibility, multi-language support, our image editor, and CMS improvements.
This year we've come up with a number of ideas, but if you're a student wanting to apply, you're welcome to supply your own—taking into account that it must be useful to the overall SilverStripe open source community.
- Read the GSOC FAQ!
Extend the ecommerce module
Increase the features of the existing ecommerce module and improve usability. In addition to completing bugs and issues already submitted, provide new features, like:
- More reporting, admininistration, and (fulfillment) workflow features
- Allow items in stock and discount codes
- Loyalty schemes (e.g. buying $100 of goods entitles you to $10 off your next purchase)
- Add support for new payment gateways
- Support for product variations (e.g. T-shirts have sizes, colours, cuts, male/female, etc.)
Extend the blog module
Significantly increase the features of the existing blog module and improve usability. Solve the outstanding issues, reduce the steps and add more flexibility to the task of writing blog posts, improve comment moderation and management, and allow multiple blogs to run off the same installation. You'll be looking to produce a smaller number of well-documented, well-engineered, intuitive features, instead of a mass of poorly executed ones. We hope that you would stick around after GSOC to continue to be responsible for the blog module's development.
Extend the gallery module
Significantly increase the features of the existing (image) gallery module and improve usability. Find ways to simplify getting images into a gallery, and different ways to present the images held by it. Enable other jQuery and Flash packages to interact with the system so that web developers have more choice on presentation and user experience.
Extend the user forms module
One of our most popular modules is the user forms module, which lets non-technical people build forms in the CMS (see the last few minutes of this video.) We would enjoy having your help to debug, clean up the module, and add new features:
- Make it more pluggable with new custom field types. (e.g. Google maps field.)
- Add more field validation controls
- Provide richer features for when a form is submitted
- Provide a simple workflow tool for administrators and form submitters to interact (e.g. an product enquiry form could have a flag so the CMS user can mark a request as 'being completed'.)
- Rather than just export and view data, have a simple editor, to edit, remove, or archive submissions.
- PDF generation of form data
Extend the GIS module
Currently, the GIS module integrates with Google Maps and provides a number of data types for managing GIS data in MySQL's OpenGIS fields. We would like you to extend this to create a number of features for easily building user interfaces around that GIS data. Some examples of how you could contribute:
- A GeoPointField, which would show a map and address box, to enable editing of a GeoPoint field
- A control for taking a number of GeoPoint fields from a DataObjectSet and displaying them on a Google map
- Extending the above to support clustered geopoints
The ultimate goal would be to provide a framework for easily putting together sites like The Broadband Map. Or, to put it another way, refactor the code from our marketdemandmap model so that it could be applied to any data model.
Broaden our automated tests
Improve the stability of SilverStripe and make it faster to develop code by adding unit tests throughout the core SilverStripe APIs. SilverStripe 2.3.0 contained a large number of unit tests but we are hungry for more, as they are critical to the reliability and upgradability of our software.
Use Windmill (or a similar product) for functional tests. In other words, emulate a browser using the CMS in a way that automatically tests that major functions of the CMS work, by detecting that various HTML, DOM, and JavaScript components match what is expected.
Content and data migration tools
A large proportion of developers come to SilverStripe with an existing website they need to port over. Make their lives easier by developing tools that help bring templates, content, and documents from one system into another. It's not expected to be entirely automated or magic, but you could find ways to improve what is a manual, time-consuming, and error-prone task. By the same token, this could also be used to help transport content from one SilverStripe installation to another, or from SilverStripe to an alternative system.
In doing this project, look for opportunities to do integration—sometimes you build a new website in SilverStripe that is to take material, blog posts, documents, etc, from an older website that will remain being updated for further months or years. If SilverStripe can automatically screen-scrape, or take content from a database, local file system, or web service, it helps significantly with transitions.
- Wordpress ↔ SilverStripe
- Drupal ↔ SilverStripe
- Joomla ↔ SilverStripe
- Static Site ↔ SilverStripe
- SilverStripe site ↔ Another SilverStripe site
Usability (experienced SilverStripe developers)
We strive to make the CMS of SilverStripe as intuitive and flexible as possible and you will be responsible for keeping that pledge true. Working off a detailed list, you will reduce the number of steps it takes to perform common tasks, relabel and reposition aspects of the user interface, add tool tips and helpful cues, and fix frustrating bugs in precisely the same fashion as was done last year. This is a very important project that will make you greatly appreciated by all users of the SilverStripe user and developer community. An eye for user interfaces is just as necessary as good PHP, CSS, JavaScript and HTML knowledge.
Performance and memory footprint (experienced SilverStripe developers)
A good project for someone with solid backend skills, patience, and care.
Through a combination of PHP and JavaScript wizardry, reduce the time it takes for the CMS to initially load and make the user experience quicker and more responsive for common actions like expanding tree nodes, performing a sitemap re-arrange, loading a page to edit, etc.
For public-facing pages, determine situations where our code uses excessive time or memory. Precisely document these, and as you are able, help code patches to improve the situation.
Note: If SilverStripe is selected to participate, we will add a blog post on how students can best get in touch with us, however you can expect us to be available on IRC and our forum. We are open to other project ideas from students and the community—add your thoughts in a comment below.