User:Hiteshsofat/GSoc15/proposal

From BRL-CAD

Name: Hitesh Sofat

E-mail id: sofathitesh@gmail.com

IRC username: sofat

Phone Number: +91 977 917 3996


Brief Background

I am a final year graduate in Information Technology at Guru Nanak Dev Engineering College, Ludhiana. I have a keen interest in PHP, Shell Script, JavaScript etc. I do freelancing along with my college studies. I have three years of experience in PHP development viz. WordPress, CodeIgniter etc. whereas Django and MediaWiki are relatively newer but have been added up in the stack of my experience. I have been in touch with Open Source from about a year and ever since I have been immersed in this ocean since we get both exposure and knowledge.

Project Title: Synchronize Wiki with Docbook

Brief Summary

BRL-CAD has more than a million words of documentation (thousands of pages) in a variety of formats. Their long-term goal is to consolidate as much as possible into the Docbook format so that it can be more directly managed by revision control system and integrated with the source code.

The main challenges are: Merge the all docbook docs with website. Provide the online editing to user. Provide admin control to verify the changes. Provide the patch or commit approaches to handle the changes. Detailed Project Description:

Quick review of present state of project

After checking all the present documents I have come to the conclusion that, these documents are in different formats so we need to provide the proper format to all documents, so in this case we use Docbook. The documents are very old so we will need to update these documents and add some new information. There are many articles and tutorials which are written in different formats such as LaTeX, HTML, tr, txt making it even difficult to manage. So we need to provide the proper format.

Project Partitioning:

Front End (web Interface) Back End (Docbook and Directory Queue) Front End

Front End is one of the most important parts of project which will make the Docbook document accessible and easy to work with. If project interface is effective, it would be easier for the users to understand the actual information of website. They would be able to use the feature of simple yet elegant interface. They would be able to get the proper layout of document easily.

Home Page:-

Quick Links for Documents Searching of Documents Download Documents View all Documents View All Documents:-

Document would be categorized according to the Category of documents. This would contain the different types of documents. So we will select the particular document according to the category like there will be some tutorial documents, some articles and some commands and much more. I would like to categorize these documents into proper structure so that user will easily get the exact document.

Admin Interface:-

I think many users will use this service and make changes in the documents so in this case we need some security on admin side. When user makes the changes then all changes will be stored in patch file or pull request will be sent for Admin Review. So when the changes made by users are checked and approved, a script will be run and patch or pull request will merge the changes with main document and automatically all the changes will easily be applied to the original documents. I want to make admin interface for this work in which admin will be able to see the all differences of original doc and edited doc and then he can accept/reject the changes considering security and standards.

Back end:-

In backend of this project, I will use Directory Queue strategy. With the help of this I will eliminate the use of MySQL and handle the all work related with docs. In backend of this project, I will use patch files or pull request and XML for storing the content of new documents which are added by user. I will also use patch files or pull request for storing the changes of documents. Like when user edits the document all changes will be stored in patch files or pull request for review. And when admin reviews these changes then the changes will apply to main documents after the acceptance of the patch file.

In my thinking, we should also provide the option to user to edit the document online if users have good knowledge of docbook and XML tags. This way user can easily improve content of old document and add more different ideas to do the thing.

Mock Ups

User Interface:

https://drive.google.com/file/d/0B9xky34lGjmLWlEzOHhkV0VncUk/view

Admin Interface:

https://drive.google.com/file/d/0B9xky34lGjmLYVhuUW1VSW1NMEU/view

Online doc conversion using backend script:

https://drive.google.com/file/d/0B9xky34lGjmLYlZpZWhLY2ZSdHc/view

Backend for patch or pull request accept:

https://drive.google.com/file/d/0B9xky34lGjmLUl9uZnBLVFFVTEk/view

Deliverables:

List of documents in the form of a user-friendly interface as well as standard with well linked with docbook features.

User:-

Normal user profile.

Admin interface.

Normal User Profile:-

Search Show Edit Write New Document ( or upload document then online Convert the document into docbook(only for html)) Admin interface:-

Search Edit Delete Approve Changes Merge patch or Pull request Add new Document Delete or Block user User log


Development schedule:

Community Bonding Period:

Interact with the developers on IRC / mailing list regarding the integration of this application with BRL-CAD wiki in the form of Mediawiki extension or Wordpress Plugin.

Discussion about HTML, txt and other format documents Discussion about documents standards Discussion about LaTeX Documents convert HTML docs into docbook convert tr docs into docbook convert txt docs into docbook convert tex docs into docbook Merge the all exiting docs with website. WEEK 1:-

Work on user interface and merge all converted document with web site and also test the Atlassian Confluence with the Docbook importer plugin and make the report.

WEEK 2 and 3:-

Work on search option for document search and editing options for user.

WEEK 4:-

Work on editing option for user and make shell script with which we make patch file or pull request of changes.

WEEK 5:-

Make shell script to convert the html document into xml (for online doc conversion).

WEEK 6:-

Work on online conversion for user. If user wants to contribute any new documents to BRL-CAD and if the document is more useful for community, then in this case we provide online conversion of document and make the patch file or pull request for review.

WEEK 7:-

Provide feature to authenticate the new uploaded document is right in format or not after conversion.

Work on admin interface part. Make interface for admin to show all patches or pull request notification which are done by the users.

WEEK 8:-

Provide online editing for admin, search, delete.

WEEK 9:-

Provide the facility to add new documents.(online interface for write new documents)

Provide the online interface to show the all differences between main docs and edited docs.

WEEK 10:-

Provide the facility to merge the patch file or pull request with original documents with help shell script.

WEEK 11 and 12:-

Write the documentation about project. Also provide coding standard to code. And make all necessary changes which are needed before final submission. And also do testing of project.

Time availability:

I will be available for about 40 hours/week however this is not rigid and can be compromised according to the requirement of the project.

Future Prospects:

Synchronization of documents between WordPress and MediaWiki websites. Integrate these docs with WordPress site. Create the plugin for WordPress to provide the same features of MediaWiki extension to WordPress site as well. Why BRL-CAD?

Because when I started my journey in Open Source, I was recommended to work for BRL-CAD by my college guide. I have learned many a thing from Open Source and I stand by “ In Open Source, Learning is Indirect-Earning”. I love to share my knowledge with community as well as newcomers. My relationship with BRL-CAD is quite long since last year I wanted to participate in GSoC for Benchmark Performance Database but owing to lack of confidence and not upto the mark communication skills I restrained myself from participating. Meanwhile I kept working parallely with the ongoing project in Django and ported it into a MediaWiki extension. After that my teachers forced to me to communicate with this community and also told me to share your knowledge with community. After I mailed Sean and showed my work on Benchmark project. He appreciated me and then my journey to contribute to community began and my confidence increased gradually. So now I want to use my experience and contribute in BRL-CAD and see my name in the list of contributors.

Why me?

Because I love the concept of Open Source. From about a year I am talking with community and submitting some patches on different works. I know my project very well and also understand the requirements of community. I have appreciable knowledge and experience in PHP, MediaWiki and WordPress. So I think I am well equipped person to handle this project and develop a great product for community.

My Contributions:

  1. Dynamic About us page using docbook:

https://github.com/sofathitesh/brlcad

  1. Sent the pull request for BRL-CAD website (WordPress)
  1. Submited 5 patches on docbook work on sourceforge.