SummerOfCode/2007/RiaDas

= Publication of all man and info pages for each release through a web interface =


 * Student: RiaDas
 * Mentor: JeffSheltren

Abstract
For any project, publication of user documentaion is always a big part. Now for a GNU/Linux OS like Fedora where so many packages are part of the system, users look for the man & info pages through web also. As these documents changes very fast it is always a good idea to have permanent URLs for the docs using some dynamic technologies. And always update them for new release of the packages (in rawhide).

Detailed Description
Publication of all man and info pages for each release through a web interface

Benefits to the Fedora Project
Easier way to find any man or info page, means better user satisfacton.
 * Search/Browse manual pages of various releases.
 * Permanent URIs for man/info pages.
 * Web based diff tool to look at the changes in manual pages in between differen releases.
 * In future, a complete online tool to add/edit/view manual pages.

Current Deliverables
1. Write a script to collect man/info pages from different packages. 1. Design a proper file system layout for the different releases. 1. Write the converter to generate HTML output from the raw manuals 1. Writing the frontend system to browse/view the manual pages. 1. Creating the diff tool for manual pages.

Possible Deliverables (if the timeframe allows it, otherwise I continue working on these beyond the SoC)
1. Creating a system to add/edit manual pages online(may be wiki style) 1. Finding a way to update the pages directly from the CVS.

Roadmap

 * Publish my goals to the community and get some feedback. During that time, will learn basics of different technologies used in the system
 * Implement the current deliverables in the order as specified above. (Upto end July)
 * Test the implemented features with the help of the community and at the same time, start work on the Possible Deliverables, in order.

Some coding/implementation thoughts
Collect manual pages If we use filelists.xml.gz, it will become easier to get the names of the files(man & info). Or, else if situation says that we need to collect those names from the RPM(s), that can also be achived by using two great scripts, 'dumpMetadata.py' & 'genpkgmetadata.py' of createrepo command. To extract the files rpm2cpio tool can be used internally.One thing I am not sure that I have to use CVS directly or I can use the repo available to the users for the RPM(s).

File system design: Want to keep it simple, like /manuals Need advice on this
 * -/6
 * -/5
 * -/5
 * -/5

Converter from nroff texts to HTML Pyhton will rock here :)

Online diff tool Pyhton difflib will help here. It generates pretty nice output.

Task based explanation:
1. First task is to write the script to collect man/info files from different RPM(s). So, my script will parse the filelists.xml (or generate filelists directly from the RPMS(s)) and will search for all man or info pages for each RPM. I can extract them using some existing tools like rpm2cpio. 1. Extracted files should be placed properly in the file system. Need some advice on this design. To collect/search filepaths some database will be used (I have not still learnt the SQL, but I will be learning it in the process of working on the project ). 1. I can use man2html or other tools of this kind to generate the HTML output from man/info pages. Or have to write the script (will take some time). 1. Frontend design will be the 4th task. Will need help to build it for a better user experience. 1. The online difftool can be done easily. If I use difflib I can directly generate diffs(form roff files) for the man/info pages.

About me, and my benefits from participation
I'm a 19 year old 2nd year Computer Science & Engineering student from Durgapur, India. I work with my local LUG.

Python is my most comfortable language. Was looking for a way to contribute to Fedora, and found this is a real big work that will help me to increase my understanding of different technologies and in the same time I can contribute back to FOSS world.

Recent News
Visit here.