SummerOfCode/2007/VillePekkaVainio

= Man/info page wiki editor =
 * Student:  Ville-Pekka Vainio
 * Mentor:  Karsten Wade

Introduction
This is not a Google Summer of Code project, this is under a similar Finnish event called COSS Summercode 2007. Here are some links about the event:


 * COSS Main Page
 * Summercode Finland 2007
 * Summercode Finland FAQ
 * My project page at MoinMoin wiki
 * My project blog

During the summer I will be extending MoinMoin with man and info page publication and editing capabilities. The idea came from FedoraBounties, "Publication of all man and info pages for each release". There is also a GSoC 2007 project based on the same idea, but with different implementation plans, see

Planned features

 * Import man/info pages from different releases, FC6, F7, F8, etc.
 * Also man/info pages from released updates and Rawhide should be included
 * Clean URLs that can be used as a reference
 * Searching from those pages (this comes pretty much automatically from MoinMoin, may require some tweaking)
 * Comparing and taking diffs from pages between releases, released updates and Rawhide (basics come from MoinMoin but requires work)


 * Regular users can edit the man/info pages in the wiki
 * Administrators can accept or deny users' edits
 * Admins can take a specific set of edits that they want to send upstream
 * The wiki helps them to get a diff of those edits and make a Bugzilla report upstream

Preliminary schedule
Some basic points here, I'll add more details as the project goes on. I have reserved 13 weeks for my project, calendar weeks 23 &mdash; 35

Open questions and talking points
Please see discussion on these points in the Moin wiki page of this project. I may not keep these two pages "synchronized". Instead, I suggest that MM specific points are discussed on their wiki and Fedora specific points here.

Internal storage format of man/info pages?

 * Basic txt format and then generate textual diffs for Bugzilla reports
 * Probably the easiest to implement but requires manual work from upstream people
 * *roff, DocBook, TeX, etc.
 * These are more difficult to implement but it could be maybe possible to then generate diffs that upstream could merge more easily


 * During the first phase (publication) doclifter will be used to store the man/info pages as DocBook XML. Moin can parse that XML so that it's viewable as "normal" wiki pages.

Where to look for these man/info files?

 * Repositories, CVS, etc.
 * The system should handle a lot of different sources and be extendable for different version management systems and package managers
 * Remember, this is something that we would like other distros to use eventually, too :)

Diff tool enhancements

 * Moin's diff tool probably has to be changed somehow to support diffs between different pages, not just different revisions of the same page.
 * Or do we need / should we have a better versioning scheme in general, where Moin could have multiple "main" versions of a page?


 * Probably more points to come during the summer ;)

TODO
Here's a list of things to be done soon, this may not be in any particular order, just a reminder to me and the people watching this project.


 * As ThomasWaldmann suggested on #moin-dev, contact man/info maintainers and ask what they would want and need from this kind of system.
 * Linux man-pages project (I've contacted Michael Kerrisk already)
 * GNU Texinfo project (I should maybe get to know texinfo a bit better before discussing it on their mailing list)
 * Maybe fedora-devel to hopefully reach developers who maintain Fedora packages and man pages in those packages (My mail to fedora-devel-list )

Phase 1
1. Test doclifter 1. Make an importer for Moin that converts man source into DocBook XML through doclifter and saves the results in a clean namespace hierarchy 1. Modify Moin's diff functionality or make an action that takes the diff of two different pages 1. Extend the importer to handle info pages too. The conversion can be made through GNU makeinfo, but it needs Texinfo sources, it doesn't work on Info sources.

Completed

 * Which MoinMoin version to base the work on?
 * 1.6 is the next stable, that will probably be taken into production use at Fedora a while after its release
 * It's possible that these changes won't make it to 1.6 upstream anymore, since that is aimed to be stable soon
 * 1.7 is the development version that all MoinMoin GSoC students use
 * It could be easier getting these changes eventually merged into 1.7 upstream
 * It'll take time until 1.7 is ready and released, I think the timeline is "this year"
 * It'll maybe take even longer before Fedora upgrades to 1.7


 * Finally decide on 1.6 vs. 1.7. This needs to happen this week as of writing (week 23). No major changes will get to 1.6 anymore, so if I based my project on it, then Fedora would need to run an unmerged branch of the code. Probably not what we want? My suggestion is to work on 1.7 branch and hopefully get my changes merged into mainline eventually.


 * (./) 1.7 will be used, see the corresponding fedora-infrastructure-list thread.


 * It's decided that I'll use 1.7, so now talk to the Moin developers about maybe getting a Mercurial branch for my project on http://hg.thinkmo.de/
 * (./) My project has a repository now, at http://hg.thinkmo.de/moin/1.7-maninfo-vpv/


 * Introduce this project and myself on fedora-docs-list, fedora-websites-list and maybe fedora-infstructure-list
 * (./) fedora-docs-list self-introduction, project introduction on fedora-websites-list

Code
The code will be kept in MoinMoin's Mercurial, in a separate 1.7 branch. The address of the repository is, see Moin's Mercurial guide  on how to get and update source code from Mercurial.

Fedora has packaged Mercurial, so it can be installed through yum/pirut etc. easily.

About me
You can find some info about me from my  Wiki page, too.

I'm a Computer Science student from University of Helsinki. I have taken all the courses required for a B.Sc. degree, but haven't officially graduated yet. My B.Sc. thesis was about Generics in Java, C++ and C#. I'll continue my M.Sc. studies after the summer.

I've been programming for over ten years and using Fedora since FC2. I'm one of the Finnish Fedora translators.

Comments, discussion
If you have any comments and ideas, please feel free to add them here :) This project can also be discussed on docs-list or #fedora-docs. I'm reading both of them.