Hi! I am one of this year's GSoC students, mentored by Max Semenik and Brion Vibber. I worked on the project of making gadgets customizable; by that I mean:
- allowing gadgets to easily declare the list of configuration variables they have - allowing users to easily change those settings, with an easy to use UI integrated to the Special:Preferences page.
Up to date notes on the project, a real world example and installation instructions are being kept in this page: http://www.mediawiki.org/wiki/User:Salvatore_Ingala/Notes
The code is being kept in a branch, and is based on the current version of the Gadgets extensions; it will need to be ported to the new version of Gadgets on which Roan Kattouw and Krinkle are working on. I have documented the changes I made to ease integration.
The syntax for specifying gadget preferences is quite flexible; it may be useful to still add new features, but since I won't be able to do heavy work on it in the following month, I would like to use this time to collect feedback from developers and from gadget writers: what are the features you think are missing? Would you change some of the existing features (before it's too late...)? If you want to suggest changes/new features, or for any other comment, please start a thread on the discussion page of the project notes: http://www.mediawiki.org/wiki/User_talk:Salvatore_Ingala/Notes
In the second half of the project I also started to work on a WYSIWYG preferences editor (this was not explicitly part of the project plan, but was an addition suggested by Max). This is far from being a finished product, but yet it supports all of the implemented types of preferences. Instructions on how to try it are here: http://www.mediawiki.org/wiki/User:Salvatore_Ingala/Notes#Preferences_editor
Those are the things I plan to do in the future (I expect to work on them after mid-October):
- factor out the code for the editor from the jquery.formbuilder.js file into a separate module; - maybe, refactor the jquery.formbuilder module to completely isolate it from Gadgets: it may be useful on its own; - generalize the system so that any ResourceLoader module willing to have some user-exposed settings can use it (e.g.: toolbar customization); - try to rethink the client side components to allow unit testing; - improve unit testing on the PHP side (as of now, there is good code coverage, but still not 100%); - improve UI appearance - any other thing that rises up from feedback
Thanks for your attention, Salvatore Ingala