These are some initial project ideas that should guide students when writing an application for GoogleSoc2008.
If you have any questions about these, come into the MoinMoinChat. This is especially helpful because the ideas here are mostly pretty short and might need some explanations.
If nothing else is mentioned, your work will be based on the main repo (currently this is: http://hg.moinmo.in/moin/1.7/ - will likely be 1.8 when you start coding).
Internal enhancements
Extend the MoinMoin Storage Engine Refactor and Abstraction Layer
- add ACL support
make the AttachFile action use new storage items (including handling of TWikiDraw items)
- migration script for migrating attachments to storage items
- more tests
- update storage API developer documentation
- SQL DB Backend
- possibly a migration script for switching between any backends
refactor common code into a common base class, not just AbstractBackend in the 'filesystem' module
work will be based on code there: http://hg.moinmo.in/moin/1.7-storage-hwendel/ (see also: docs/CHANGES.storage)
- Improve Xapian-based search:
- Support of search over farms
- I think this should already work, if you just share the xapian db.
- Fix search / query parsing.
- Write unit tests.
- Make moin's Xapian search work on Windows (by replacing xapwrap which is no longer maintained)
Xapwrap has still a few users and JP Calderone and other Twisted guys are not yet sure if they want to abandon it completly. By what should it be replaced? Does not it make more sense to continue development and fix outstanding bugs? -- AlexanderSchremmer 2008-03-01 13:56:30
- Support of search over farms
- design and implement a DOM tree based interface to the output formatter
- rewrite the wiki parser to use that interface
- rewrite Include and TOC macro to operate on the DOM in a very generic way
- write unit tests for your code
- (see creole parser for some inspiration)
handle each object the same way: a converter from the original mimetype to an internal representation defines how the output is done
Can you explain that, Thomas? -- AlexanderSchremmer 2008-03-18 17:52:33
cf. MoinMoinDOM, linked pages from there and http://git.sipsolutions.net/dom.git/
- Refactor the request code to use WSGI
- helps get rid of a lot of untested code in moin
- wsgi-level automated tests
- admin documentation
Authentication / Security enhancements
- Extending moin's groups to LDAP and other external sources.
User Interface enhancements
Redesign parts of MoinMoin user interface wrt the general and consistent handling of items. This includes all major CRUD (create/read/update/delete) use cases, URL design, dispatching logic for the concept formely known as actions (old actions would still be supported but some kind of "generic item actions" would be new), a generic framework for editing similar parts of items and/or metadata (a metadata editor that has a notion of fields and some kind of widgets maybe).
- One idea is to see whether it makes sense to treat all the CRUD operations similarly for different item types and whether the UI can cope with this.
- Subtask: comfortable Metadata editor (ACLs, pragma, ...)
- update FCKeditor, update moin plugins to be compatible with new version, improve UI of FCK GUI editor
- allow customization of fckeditor's skin by the theme. This is alreasy possible now with fck, but needs patching of the Moin corecode in the currrent implementation. It might be better to move that stuff also to the theme code.
FCKeditor / MediaWiki projects currently do (have done?) a new approach to GUI wiki editing: create markup directly by FCKeditor, not by creating html and converting back to wiki markup. Could be ported / adapted for moin.
- this task requires extensive Javascript work and debugging experience
create Web based installation and administration UI (see FeatureRequests/EasyWebBasedInstallOnHostingWithoutShellAccess and PeterBurns/EasyWebBasedInstall).
that is one thing why so many people use MediaWiki (additional to the "I know it from Wikipedia"-factor) - because almost everybody with just very little knowledge can install it with its web based installer..
- Possible subtasks:
Build a browser-based configuration system that allows the user to change every bit of MoinMoin configuration without editing a single file manually.
- Write a bootstrapping system that determines where the Python interpreter lives and how the server environment looks like to generate necessary server config/cgi scripts etc. (it might make sense to write a part of it in PHP)
- this task is very vague - any student taking this will be required to submit rather concrete ideas how to implement this for a generally usable solution. He should also have experience with web server configuration and moin installation.
improving of SinglePageSlideShow (there is already an improved version by RichardFlieger, needs to be checked)
replace gdgraph based statistics (by css or the http://code.google.com/p/flot/ or something else)
Please consider Open Flash Chart -- GustavoNiemeyer
preferably not "Open Flash Chart" since that requires a flash plugin and charts can very well be rendered without. -- JohannesBerg
flash can be used for XSS attacks and you will need something similiar to the html parser which removes all action script code to be save. -- ReimarBauer
- RSS feed improvements and Atom implementation
- Write something similiar to doodle a decision maker tool
Mail related enhancements
- self-registration, address change with mail-based verification, lost password functionality without sending the password
- sending tracebacks by email (not showing traceback to the user)
There are available solutions for this problem - for WSGI. -- AlexanderSchremmer 2008-03-01 13:56:30
InterWiki
Extended Sisterwiki for i18n (Sisterwiki is only useful if the page name in the sister wiki is the same. If you use multiple wikis for similar content in different languages, there is a need to map the different page names in each language to each other. Just like Wikipedia does it, only better. )
AdoptedPages - add remote pages into the RecentChanges
Inspiration
Just some buzzwords, be creative.
DocBook stuff
- Make bullet-proof round-tripping possible, building on Mikko Virkkilä's work for Google Soc 2006
DocBook -> ImportDocBook -> Wiki markup -> Render as DocBook -> DocBook
- Accessibility (there is existing work in the accessibility branch that can be used, refactored and extended)
- AJAX?
- Jabber?
Improvement of the twikidraw or a replacement by EasyToDo/DrawingReplacement
We have lots of FeatureRequests (not all of them make sense for SOC 2008, though)!
- Internationalisation, especially using ngettext rather than gettext.
You can have a look at all the FeatureRequests that are already stored in this wiki. Some of them might be a good inspiration for a SOC application.