Summer of Code Project Ideas
This page serves as a list of "ideas" for student projects for the
Summer of Code 2008. Feel free to add a comment with your own ideas or expansions, and we'll roll them into the page regularly. Please say who you are when suggesting an idea :)
We'll be fleshing out and ranking these ideas as we go along, based on how important they are to Dojo and whether we can forsee any issues.
Important: See the Dojo Summer of Code homepage for lots of other useful information, including FAQs, what should be in your application, the coding test, and where to get help.
Charting Improvements
dojox.charting is already pretty impressive, lets make it the #1 Javascript charting engine!
- Time series support
- Multi-axis support
- Better integration with dojo.data
- New chart types (bubble, radar, boxplots, etc)
- Annotations to data points
- Improve Adobe AIR support
- ...
Readability Module
Be able to assess input text based on how well it can be read by normal people - particularly useful for content management systems. There are a number of different ways of measuring readability of text.
- Implement a number of the algorithms.
- Figure out how to integrate them with Dojo's i18n language support.
- Have some ways of visualising the scores.
- Integrate it with dijit.Editor, dijit.Textarea, and normal textarea nodes.
- ...
Markup Previews
There are a number of widely used markup languages available today, and it would be great to provide client-side previews. Then people can easily check they've got it right without round-tripping to the server.
- Markdown, Textile, Trac-markup, others - there are heaps!
- A plugin-based way to just load a single one
- A widget-based way to preview them, ideally side-by-side editing
- Some way of integrating markup help ("How do i do a list?")
- Integrating with dijit.Textarea and normal textarea nodes
- ...
Build Tool Improvements
Dojo already has a widely used and very powerful build and packaging system.
- Examples for conditional compilation
- Being able to set build constants (eg. version numbers)
- Examples and support for CSS building
- Stripping out logging messages (eg.
console.debug())
- Improve x-domain support, making
requireIf() and other clever stuff work.
- Integrating js-lint style analysis
- Stats on analysing how much space/bandwidth is being saved
- ...
Automated Test tools
Power-up the DOH framework! Cross-OS and cross-browser, so we can provide better QA without requiring an army of people. And making it work better for widget testing! These are some pretty hard and challenging tasks.
- Use a framework like Windmill or Selenium-RC.
- Having some way of kicking off tests, monitoring, and reporting the results
- Use the DOH client-side test code
- Integrating this into Dojo's nightly builds and other infrastructure
- Making it easy for someone to run a similar system for their own Dojo applications on their own network
- Improving DOH's support for widget testing so we can create automated widget tests (this might be a whole project by itself)
- ...
Real OpenGL 3D in the browser
There is now support (to be released in FF3+1) that supports 3D GPU code in the browser. Basically, write some code in a tag directly in the HTML page, and your code is passed straight into the GPU for executing. Opera and Webkit are following closely behind. How could we integrate this into Dojo GFX? What client-side tools or support can build into Dojo to make 3D development easy in the browser. You'll need to be very comfortable with OpenGL and 3D development.
Improved Developer Tools
Development tools and debugging tools for Javascript aren't the best, which makes it hard for Dojo users. These will be quite complex projects.
- Firebug supports extensions, could we use that to...
- have better Dijit support in the browser?
- visualise which nodes have events connected?
- decode XHR, iframe, JSONP responses so its easy to know whats happening?
- view & search API information (method parameters & descriptions), expanding on Neil's dojox.help demo?
- We have a Firebug-Lite for use in Safari, IE, and Opera. Can we make it better? Having some ways to explore variables, or fire up the browser's DOM inspector would be really handy.
- Profiling javascript code is tricky. Can we make some tools that allow developers to profile part/all of their code in a simple way
Rails/Django/Smarty/JS? helpers
Rails has helpers to make AJAX easier for Prototype built-in. How can we make similar tags/helpers for Dojo users? Can we do it for other platforms like Django or Smarty? You'll need to have worked with server-side frameworks and understand what the developers and designers there are looking for.
Update: For Rails, this is underway already at d-rails (IRC #d-rails on Freenode)... there is an alpha due out in a week or so, and Bob is looking for more help. This is an early stage project that will grow and change quickly, so you'll need to be on your toes. As a starting point, you could think about how to enable dijit widgets in a nice rails-friendly way.
Javascript interface to the Flare Visualization Toolkit
Flare is an open source toolkit written in ActionScript3 for doing advanced visualizations. It'd be great to expose this functionality to Dojo applications in a consistent way and clean way.
- Dijit widgets for each of the various packages
- Integration with dojo event handling
- Integration with dojo.data stores
- There may be some work kicked off pre-SoC on some of this, but there will be plenty left
Improving Internationalization
Internationalization, or i18n, is the process of making an application flexible to work in different languages and respect different conventions and customs. Dojo has one of the only Javascript i18n frameworks in dojo.i18n, but it could be a lot better.
- Support for GNU gettext .PO files across dojo.i18n, including parsing source and templates to pick up strings. This will allow translators to use common tools for their work.
- Adding support for i18n into dojox.dtl - a Javascript implementation of the Django Template Language. See also Django's i18n docs.
- Rewriting in Javascript and improving the Java JS2XLF tool that converts our translation files to & from the standard XLIFF format to make translation processing easier.
- Figure out how to add locale-specific code into the i18n framework (see the readability project above), without freaking out non-technical translators.
- ...
Mini-projects (a la jQuery) with dojo.behavior
There are lots of lists of small, popular bits of code written for jQuery. It would be nice to see:
- dojo.behavior used to do "behavior-based design".
- A lot of small behaviors to do various tasks (see above links to see some examples).
- Each supported by a tutorial and demo
- Hopefully aid the community in being able to do the same sort of tasks using this style.
Accessibility (a11y)
Dojo has a mature accessibility framework and we want all the core Dijit widgets ally-enabled, and as many from dojox as possible.
- Calendar popup
- CSS improvements for keyboard focus and high contrast modes
- Grid - this will require a lot of effort and plenty of experimentation as to how enable the enormous feature set of the grid.
- Improving test harnesses for a11y - DOH? Windmill? Selenium? something else?
- Update an open source wiki to use Dojo! This would enable the wiki to be accessible and give Dojo some additional exposure!
Still haven't seen something that pushes your buttons?
Have a look through the dojox components - most have big possibilities for expansion or improvement. Each dojox component has a README file, and many have a todo list written up in there which could serve as a starting point to a SoC project.
Otherwise, feel free to add a comment with your own ideas!