Project ideas for SOC 2012
Release goal of moin2 is "a basic, but powerful wiki".
For further infos about moin2 read MoinMoin2.0.
As we still can't release moin2 because it doesn't fully work yet, still looks ugly, misses stuff, etc. we should focus on the release-critical stuff and not work on optional or non-essential stuff.
Before putting project ideas here, please check whether the idea is in that scope.
Hints for students
These are just some basic and sometimes vague ideas. If you want to do a SOC project, we expect much more detailled/specific ideas and time planning from you.
In general, the success of a (SOC) project depends quite a bit on good planning:
- Look at the code, run the code, use the code and see why we need the stuff suggested below.
- Talk to the developers, discuss your ideas.
- Make a detailled TODO list - what EXACTLY needs to be done? what, why, how, when, ...?
- Estimate time needed for the items on that list - some ideas presented below might be too small for SOC. In that case you might need to "fill up" with one or multiple smaller projects, so the total project size is adequate for SOC.
Some of this stuff can and should be done before you submit your proposal / before coding starts.
Start preparing early, get in contact with us early.
To get in contact with us, use the MoinMoinChat (preferred) or the MoinMoinMailingLists.
If you like to publically express your interest in some project idea, put your name in the "Students interested" lines. Please note that this is completely optional, voluntary and for student's mutual information. Formally, only stuff in melange will count.
For your application, you can use DeveloperApplicationTemplate. If you wan to work on your application on the wiki, you can request an ACL protected subpage of your wiki homepage, so that only mentors can read it (but not other students).
Hints for mentors
Please add yourself in some "Mentors interested" lines. If you don't think you should be primary mentor for this, but you would co-mentor this, put your name in parentheses. This is just for info, formally only stuff in melange will count.
Project Ideas
Improve foobar Theme
Improve a rudimentary sidebar theme, create a well-structured, consistent, good looking UI for moin2.
requires: UI coding and design skills, usability, html/css/jquery/js/python (you will also need to deal with jinja2 templates, but if you know any other templating language and python, that should be easy)
Mentors interested: (ThomasWaldmann) ReimarBauer
Students interested:(DavinderKumar) (MiksKalnins)
Improve namespaces and multiple names support
There has been some work on this already, but it needs substantial improvements before we can merge it into default branch:
- improve the code so it deals flawlessly with namespaces and multiple names
- improve tests / test coverage in that area
- userinterface additions/adaptions for multiple names
- userinterface additions/adaptions for namespaces
- userinterface for aliasing, undeleting items, ...
requires: python, html/css/js/jquery/jinja2 for UI parts
Mentors interested: ThomasWaldmann
Students interested:
Network API
For moin2 we need a network api that can be used by the user interface, other wiki instances (e.g. for wiki sync) and scripts.
- which api exactly do we want to expose on the network level?
- json rpc vs. xml rpc?
- tests
requires: python (some js/json/ajax skills might be helpful)
Mentors interested: ThomasWaldmann, ReimarBauer, BastianBlank
Students interested: BorisBobrov, DiogenesAugusto
Branching, merging and syncing
moin2 revision metadata has some foundations for the following operations, but they need to be implemented:
- support multiple heads, multiple parents
- merge heads, meta and data
- user interface
- transfer changes between wikis, requires: network api
- offline editor wrapper
requires: DVCS knowledge/experience, experienced python coder, html/css/jinja2
Mentors interested: ThomasWaldmann, EugeneSyromyatnikov
Students interested: BorisBobrov, DiogenesAugusto
Purge Policy
To purge means to permanently remove stuff stored in the wiki storage, the policy would define the rules for that.
- deal with growing history, growing size
- purge by count, age, size, ...
Mentors interested: ThomasWaldmann, ReimarBauer
Students interested:
moin 1.9 data cleanup
Some day, we'll want to migrate moin 1.9 data into moin2. But if one looks into the data storage of a typical moin 1.x installation (esp. if it was open to the public), one sees that there is quite some need for cleanup (and we should do that before importing into moin2). Also, multiple separate wikis need cleanup if they shall become a farm wiki (or even a single wiki with multiple namespaces) with common users.
Code should be written in a way so it can be used even for wikis staying on 1.9.x (and not migrating to moin2 at the same time).
requires: python (maybe also UI stuff, depending on how you suggest to solve)
Mentors interested: ThomasWaldmann, (ReimarBauer)
Students interested:
Improve moin-related xml code
moin2 uses emeraldtree (which is a fork of elementtree) for dealing with xml.
Some stuff there needs to be fixed / added as a requirement for improvements in moin2:
- implement polyglot html5/xml writer for emeraldtree
- add writer tests for empty elements to see whether it emits valid html5
- implement xpath for emeraldtree
- implement moin's dom converter tests that use lxml xpath with emeraldtree xpath
requires: python, xml/html5, xpath
Mentors interested: BastianBlank
Students interested:
Improve DOM converters
Moin2 uses an internal "moin-DOM" to represent a document in a tree-structure. This is used as intermediate format for all kinds of input and output formats.
Requires: experience with tree representations, XML, elementtree (emeraldtree) plus the input/output formats mentioned below.
We have quite a lot of DOM converters, but they need improvement:
- they still have issues
- they are not complete
- they do not roundtrip
- failing tests, missing tests
- documentation
- maybe support for section editing?
add line numbers to DOM for support of http://moinmo.in/FeatureRequests/AutoScrollingTheEditorTextArea#Moin_2.0_Thoughts
requires: python, xml/xpath
Mentors interested: EugeneSyromyatnikov, BastianBlank
Students interested: AbhishekSingh
Jinja2/Flatland widgets, Forms
We use Jinja2 for templating and flatland for form data feeding, extracting, validating.
We need widgets supporting all data types we use for revision metadata and for user settings.
Metadata editing and all user settings should have nice forms and good validation in the end.
Maybe metadata view could also use (disabled) forms, instead of showing json?
requires: python, flatland, jinja2, html/css/js/jquery
Mentors interested: JasonKirtland, (ThomasWaldmann)
Students interested:
Plugin system
Design and implement new plugin system for moin2.
See also PluginConceptOverhaul
Take a look on trac plugin system (http://trac.edgewall.org/wiki/TracDev/ComponentArchitecture)
- Don't forget about internationalization and localization (current i18n implementation has many pitfalls, forcing i18n-aware developers to implement all i18n/l10n stuff in their own plugins from scratch)
requires: experience with python plugin systems and software design / plugin architecture.
Mentors interested: EugeneSyromyatnikov, (ReimarBauer), BastianBlank
Students interested: MiksKalnins
Calendar
In 1.x we have the MonthCalendar macro. For moin2, we need a new Calendar implementation.
XStatic-fullcalendar (http://arshaw.com/fullcalendar/) looks like a very good replacement.
- where to store the event data? one/multiple items? in meta? in data?
- ui for changing event names. The fullcalendar ui does not support changing an name.
- support vcal/ical import/export
- possibility to inherit events from other calendars
- collect events and link to items (similiar as it is done in the macro)
- disable modifications, for readonly access, this means to disable the ajax manipulation also, not only to protect storing meta
migration script for MonthCalendar (moin 1.x) to Calendar (moin2)
- notification / reminder based on given events
requires: python, jquery/js, UI skills
Mentors interested: EugeneSyromyatnikov, ReimarBauer
Students interested:
Issue tracker
Using metadata, some forms, some query, some views, we could do an issue tracker in moin2.
requires: python, jquery/js, flatland/jinja2, UI skills, experience with issue tracking
Mentors interested: ThomasWaldmann, EugeneSyromyatnikov, ReimarBauer, (DirkAlders)
Students interested: CheerXiao, PavelSviderski
Blog
Using metadata, some forms, some query, some views, we could do a blog in moin2.
requires: python, jquery/js, flatland/jinja2, UI skills, experience with blogs
Mentors interested: BastianBlank
Students interested: PavelSviderski
Universal Pastebin
Using metadata, some forms, some query, some views, we could do a pastebin in moin2.
The pastebin could support all sorts of items (as moin does).
requires: python, jquery/js, flatland/jinja2, UI skills
Mentors interested: ThomasWaldmann
Students interested: DanielNeuhäuser
Collab editor
We could make pretty good use of a collaborative editor for editing (text) items.
Issues to check before proposing this:
collab editor code must be under GPL v2+ compatible license (== NOT Apache License v2, NOT proprietary)
- needs good working and well maintained collab editor upstream project
- needs to be usable for simple text editing in a textarea
- should be extendable for special wiki support
- server side code should be embedded in moin / in a python wsgi app (perfect) or easily installable otherwise
Mentors interested: ThomasWaldmann, (ReimarBauer), BastianBlank
Students interested:
Improve Docbook support
This is a project that could be proposed to both DocBook Project AND MoinMoin organisations (and would be mentored by mentors from both organisations).
Work with MoinMoin and DocBook mentors to improve/maintain the DocBook integration in moin2. Tasks might include:
If necessary, finish the implementation of DocBook export from moin2. This was worked on in a previous GSoC. I'm not sure what it's state is, but I'm sure there are bugs in any case.
Add functionality to moin2 so that the user can generate output via DocBook, e.g. pdf, epub, webhelp from a MoinMoin page.
Extend moin2 to make it possible to add semantics to MoinMoin markup. E.g. some way to indicate that a particular numbered list should be treated by DocBook as a <procedure> or that a particular bit of bold text is actually the title for the figure that comes after it. That way the DocBook xsls could generate the list of procedures and list of figures that it does based on the semantics of the markup.
See also: http://www.google-melange.com/gsoc/org/google/gsoc2012/docbook
Mentors interested: DavidCramer [from the DocBook side], (ThomasWaldmann), BastianBlank
Students interested:
Your Idea?
You may suggest projects based on own ideas that are not found on this page.
If you like to do that, it is a good idea to discuss them with the developers first so we can see if they are in scope of the moin 2.0 release, etc. - please keep in mind that this takes some time, so start early.
Other
ideas on page EasyToDo - lots of stuff there - extract the not-so-easy ones, that could make a SOC project.
- improving migration from moin 1.9 to moin2
- implement test framework based on selenium and various UI tests
- implement jquery_ui autocomplete on all textfields where it makes sense. e.g. search, widget to select tags