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