Project ideas for SOC 2013
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
Misc. UI improvements
In general: Create a well-structured, consistent, good looking and well usable 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: (ReimarBauer), (BastianBlank)
Students interested: RishabhRaj , AshutoshSingla, VatsalJuneja, GaneshKumar
More specific ideas follow:
Looks
Much stuff looks a bit boring and some stuff has slight issues. Make it look fresher and better.
UI for name list changes
moin supports multiple names per item (revision), we need a good UI for the basic operations on the names list.
also support changes of multiple items at once (see index, e.g. rename).
UI for quicklinks
add/change/remove quicklinks
UI for dealing with ACLs
It would be interesting to have some graphical visualisation of access rights for items (per user, per group).
A user could see what he can do in the wiki, an admin could see what a specific user or group has access to.
It also would be helpful if an admin could preview the effects of changes of hierarchical ACLs or item names.
Currently, we only can setup ACLs by editing metadata - we need an UI which enables setting ACLs comfortably.
The given and new acls should also be visualized.
Search UI
whoosh is a quite powerful search engine, but our current UI does not make good use of it - we need a better UI that gives a nice user experience.
ngrams, facetting, ajax, autocompletion, spellchecking, more like this, help to construct more advanced queries, ...
Improve namespaces and multiple names support
There has been some work done on this already, but it needs substantial improvements on the UI and also in the code:
- (see also some stuff in the userinterface section)
- improve the code so it deals flawlessly with namespaces and multiple names
- improve tests / test coverage in that area
requires: python, html/css/js/jquery/jinja2 for UI parts
Mentors interested: ThomasWaldmann
Students interested: AshutoshSingla, GaneshKumar
Change API and UI for itemids/revids
Most of the UI, URLs, API is currently based on using NAMES for identifying an item. But at many places, using a ITEMID or REVID instead or additionally to a name would be better.
requires: good planning, python, html/css/jinja2 for UI parts
Mentors interested: ThomasWaldmann
Students interested: ChitrankDixit
Trash and Purge Policy
Visualize "deleted" items (trashbin view), enable undeletion (for users), enable destruction (for admins).
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, ...
requires: python, html/css/jinja2 for UI parts
Mentors interested: ThomasWaldmann
Students interested: AlejandroRodas ErwinKaralyos
Mail/Notification related functionality
- use templates for all email based functions
- change subscriptions:
- sending email notifications (text diff, html diff)
- fast/scalable determination of subscribers
- UI for managing subscriptions
- admin emails:
tracebacks with system info, something like: tracebackplus.html via e-mail + log viewer?
- bounce handling (see issue tracker)
- importing content via inbound email
requires: python, html/css/jinja2 for UI parts
Mentors interested: ThomasWaldmann, BastianBlank
Students interested: AnaBalica
Validation of Wiki Contents
Use metadata to check whether the contents are still valid (not corrupted).
Mentors interested: ThomasWaldmann, BastianBlank
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 xpath for emeraldtree
- implement moin's dom converter tests that use lxml xpath with emeraldtree xpath
- remove dependency on lxml completely
- python3 porting / tests for emeraldtree?
requires: python, xml/html5, xpath
Mentors interested: BastianBlank, (ReimarBauer)
Students interested: WilliamLinna, AnaBalica
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: BastianBlank
Students interested: AshutoshSingla
Unify macros and converters
It's somehow the same, but implemented differently.
But:
- macros are somehow like converters without text-lines / revision data input,
- converters are somehow like macros without parameters.
requires: python, xml
Mentors interested: ThomasWaldmann, BastianBlank
Students interested: TongMu
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 you want to expose on the network level?
- json rpc vs. xml rpc?
- tests, how?
requires: python (some js/json/ajax skills might be helpful)
Mentors interested: ThomasWaldmann, BastianBlank, (ReimarBauer)
Students interested: NikolayBaluk, (BorisBobrov)
Remote editor wrapper
Using the network API, a comfortable remote editor wrapper can get implemented.
- edit items
- edit metadata
- edit data
- text data
- other data
- conflict detection?
requires: python (some js/json/ajax skills might be helpful)
Mentors interested: ThomasWaldmann, (ReimarBauer)
Students interested: (BorisBobrov)
Universal Pastebin
Using metadata, some forms, some queries, some views, we could do a pastebin in moin2.
The pastebin could support all sorts of items (as moin does).
Using the network API, a commandline client for the pastebin could be implemented.
requires: python, jquery/js, flatland/jinja2, UI skills
Mentors interested: ThomasWaldmann, ReimarBauer
Students interested: TarashishMishra, UditSaxena
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: ReimarBauer, BastianBlank
Students interested: UditSaxena
Plugin system
Half done in 2012, try again?
There should be a evaluation of the 2012 stuff before this is proposed, so it doesn't start from scratch (if not needed due to reasons).
Mentors interested: (ReimarBauer)
Students interested: ChitrankDixit
Android app
Note: this is pretty much a vague idea yet, we first have to check whether someone can mentor it.
How could a moin2 client app look like? (opposed to just using a browser)
Language: Python? Java? Who can mentor the android side? see at http://kivy.org/#home if we want a crossplatform app
Mentors interested:
Students interested:GaneshKumar
Python 3.x porting
Just an idea. Needs evaluation whether it should be done now or rather later.
moin2 currently only works on python 2.6 or 2.7. moin2 depends on some libraries/frameworks with varying py3 support, see Python3.
moin2 will support python 2.x as primary platform, but maybe could support python 3.x as well.
Requires: python 2 to 3 porting experience (you need to provide a reference to code you ported), insightful proposal describing how you would do the port
Mentors interested: ThomasWaldmann, BastianBlank
Students interested: ChitrankDixit
Issue tracker
The issue tracker needs more improvements to be practically useful.
Requires: python, html/css, jquery/js, flatland/jinja2, UI skills
Mentors interested: ThomasWaldmann, (ReimarBauer)
Students interested: CheerXiao
Blog
Needs more work, continue?
Mentors interested: ReimarBauer
Students interested: PavelSviderski
Branching, merging and syncing
We have seen in 2012 that this is rather complex - try again?
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:
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