Current MS Students/Gufran Mohammed
From CSWiki
Project Title: WikiBooks Extension
(Feel free to remove this comment when you have responded to it.)
Contents |
[edit] What I am planning to accomplish
[edit] Brief Project specification
Wikibooks is free collection of open-content textbooks that anyone can edit.
This project is about adding more enchanced features to the wikibooks using which users can import and export books in formats other than HTML/wiki some of those output formats can be pdf or doc and printable format
Requirements Definition :The main aim of this project is to extend the use of wikibooks to the users who would prefer to archive or read the books in their preferred formats like pdf, word, odt and txt apart from the HTML format of the wikibooks and also the users (who have books in pdf, odt word and txt formats) can upload their books into wikibooks so they can be editable.
Requirements Specification : When this project is done A wikibook user can either print the wikibook or he can download that particular wikibook as a pdf or a doc or odt or as a text format for archiving or reading purpose users can see this option next to the title of the book. And also a user who has books as pdf or doc or odt or txt who wants his book to be made as a wikibook so that anyone can edit it, can upload his book and will be converted as a wikibook and from there other users of wikibooks can access this book and also edit it.
[edit] High level architecture
This Project is divided into two Modules, Module one is about the Exporting functionality to export books from wikibooks to user desired format and the second module is the importing functionality where a wikibook user can convert other format books such as pdf/text/doc to a Wikibook.
The first one involves the functionality to export the books from wikibooks into pdf or doc or odt or text format
The way the wikibooks are stored in MediaWiki(The wiki engine that runs Wikibook) is all the text is stored in Database as a wikitext (a formatted text defined by mediawiki).
So if a user request to convert this wikibook into some other format the wikitext is to be obtained from the database and converted into the the user desired format.
This is done as show in the figure below.
To generate wikibooks in pdf format and also text format the PHP has a pdf library that has functionality to convert text to pdf format so the wikitext of the wikibooks is converted into the pdf and text format and a file is generated which can be downloaded by the user of the wikibooks.
The second module involves the functionality to convert the user uploaded books (pdf/text/doc format) into a wikibook which can be edited by other users also. To convert a file which is pdf or text or odt or doc format into a wikibook, first the book has to be parsed through and converted into wikitext which is stored in the database and the media wiki can obtained that wikitext and make it as a wikibook.
But in this project this functionality is done by the JAVA API which converts the pdf /text /doc format into wikitext and this JAVA API has to communicate to media wiki which is written in PHP so this can be solved by an opensoure Java PHP bridge which lets the PHP script to communicate with the Java code.
Below is the diagram that shows the functionality of module 2.
[edit] Why this is academically interesting
This is academically interesting because through this project I am able to practically implement the software cycle that involves Software analysis, design, Development, Testing and documentation. Its interesting to find that this process requires lot of analysis and study during real world situation.
[edit] Intended audience
All the users of wikibooks.
Wikibooks can be used in different fields like school or company or an organization.
[edit] Why this is MS-level work
As this project involves challenges of writing API for document transformation which involves high level of analysing and design and also requirment analysis for the template part of module 2
[edit] Previous work
[edit] Platforms to be used and what I will add to each
Java, PHP, javascript, HTML, CSS.
[edit] Available platforms I am not using and why
As this project is an extension to wikibooks the only platforms with which wikibooks already works can be used to develop this project
[edit] (Project which is a re-implementation of an existing system) Why I am re-implementing an existing system
This project is extension of an existing system in order to make it more useful for other users who would prefer different formats for text books.
[edit] Anticipated challenge(s)
[edit] Challenge(s)
- One of the main challenge is to write an API to convert a Pdf/doc/odt/text to wikitext format in order to make it a wikibook, it will be developed in Java so the main issue will be of dealing with communicating the Java with php code.
- Other challenge is deciding how would the user define/make templates in order to generate the pdf and doc files according to that layout.
[edit] Anticipated approach to each challenge
- The communication between Java and PHP code will be done by the PHP/Java bridge.
- Have to make first requirement analysis and based on that the template mechanism can be established
[edit] What I bring to this work
[edit] My relevant background and experience ( CS 590)
The courses I have taken are web programming would be very beneficial for this project and also my work experience is in Java.
[edit] What I find interesting about this work
One of the most interesting aspect of this work is the analysis part of the project where I have to decide when a user uploads a file to convert to wikibooks then the way that file is organized vary's, different users may have their books in different organized ways so this conversion from pdf to the wikibook has to be dealt very very carefully so that I dont loose any information in that conversion process.
[edit] How this work goes beyond my experience and course work
As Mediawiki (the engine that runs wikibooks) is built in PHP I had to learn PHP which is also new experience to learn how PHP scripting works there are many new things I have learnt through PHP.



