This is modified proposal and i want to edit my original proposal over google-melange site if mentor permits me to do so.
On Thu, Apr 14, 2011 at 5:55 PM, AAMIR KHAN <[email protected]> wrote: > As i talked with Eric who earlier wanted to co-mentor me, He asked me to > find a new mentor because he is much busy with other projects. > > So, I am asking over mailing list if anybody else is willing to mentor me > > *Modified proposal for project :* > * > * > * > Proposal Title: > Design and Implement Mailbox with CouchDB > storage.<https://issues.apache.org/jira/browse/MAILBOX-45> > > Student Name: > Aamir Khan > > Student E-mail: > [email protected] > > Organization/Project: > James Mailbox Apache Software Foundation > > Assigned Mentor: > Robert Burrell Donkin ([email protected] ) > > Proposal Abstract: > Since most of the mail contents are semi-structured in nature.CouchDB is > non-relational, semi-structured database having great potential for mail > storage. Main beneficial characteristics include consistency,simple APIs and > high scalability. My project is to design and implement mail storage in > James Mailbox using CouchDB on the same level as JPA(Java Persistence API) > and JCR(Java Content Repository) to serve as drop-in replacement for SQL > storage. RESTful integration API > <http://wiki.apache.org/couchdb/HTTP_Document_API>for Retrieving and > Deleting mails will also be done. The APIs should be designed so as to offer > abstraction of mail storage from RESTful APIs. > > The Project is to be implemented in following phases : > 1) Design of RESTful integration > API<http://wiki.apache.org/couchdb/HTTP_Document_API>and implementation for > as many targets as i can > 2) Implementation of CouchDB using Java impl > 3) Development of RESTful integration API. > > As suggested by Norman i think this project could be very helpful in > development process. http://code.google.com/p/ektorp/ > > > > Detailed Description: > > Why? > > Lets consider a example Mail: > > “From” : “[email protected]” > “To” : “[email protected]” > “Subject” : “Implementation of CoucheDB” > “Body” : “Implementation Proposal” > > All the messages like the one stated above will be stored as a flat > collection in CouchDB. Since the mail contents are generally semi structured > thats why CouchDB is most preferable database for the same. > > Then various RESTful APIs can be used to access mail storage. > e.g.) GET /database_name/mail_id HTTP/1.0 > POST /database_name/ HTTP/1.0 > DELETE /database_name/mail_id?revid=current_version HTTP/1.0 > > Distributivity: > > Since CouchDB is a distributed system. We can have multiple independent > copies of mails to different servers (faster performance) and whenever we > want we can redistribute changes bidirectionally.It is also helpful if one > of the mail server fails then other backup servers can fulfill the requests. > > How? > > Road Map > > 0) Code Familiarity : Already started and going. > 1) Design : 1 week > 2) Programming : 7 Weeks > 3) Review and Testing : 1 week > 4) Bug Fixing Time : 1 week > 5) Documentation : 1 week > 6) Buffer Time for any unpredicted delay and Second phase of testing : 1 > week > > Deliverable & Project Schedule > > I tried for exploring JPA source : > jpa/src/main/java/org/apache/james/mailbox/jpa > > <https://svn.apache.org/repos/asf/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/>and > found that already existing APIs include : > deleteEverything,MailboxMembership,createMailboxMapper,createMessageMapper > and other session handling handling functions. > > So,I think APIs to be built should include Session Handling > features,Creation and deletion of Mailboxes,Retrieving and deletion of mails > from Mailbox,Attachment features,Caching of messages etc. > > > April 25-May 23(Community Bonding Period) : > I would be in constant touch with my mentor and james mailbox > community as a whole. I would discuss further about the project with my > mentor and keep posting about implementation plans over the main > [email protected] mailing list. Discuss the design for > implementation of CouchDB after discussion with whole community. > -Discuss the implementation procedure of MailBox Creation,Deletion and > SessionManager class. > > May 24 - May 31 : Finalise the design for implementation of CouchDB after > discussion with whole community. > > June 1 - 20 June : > > Implement the finalised plan for Couch DB. This would be done by > implementing Java impl classes for Couch DB. > > June 21 - June 25 : > > Test and debug implementation of Couch DB with regressive test. > > June 26 - July 30 : > -Implement RESTful integration API for Retrieving mail. This should be > performed using GET operation at the document’s URL. > > -This will implement : GET /database_name/mail_id > HTTP/1.0<http://wiki.apache.org/couchdb/HTTP_Document_API#GET>. Here > mail_id will be used to identify a particular unique Email Content. > -Test and debug implementation of Retrieving mail API. > > -Implement RESTful integration API for Deleting mail. This should be done > using DELETE operation of HTTP_Document_API. > > -This will implement : DELETE /database_name/mail_id?revid=current_version > HTTP/1.0 <http://wiki.apache.org/couchdb/HTTP_Document_API#DELETE> . Here > mail_id will be used to identify a particular unique Email Content. > -Test and debug implementation of Deleting mail API. > > -Implement RESTful integration API for Inline Attachments. > > -Test and debug implementation of Inline Attachments API. > > The time line specified above is adjustable. If i can complete the above > mentioned integrations before time, I would proceed with the following API’s > integration in order: > > Attachments : > <http://wiki.apache.org/couchdb/HTTP_Document_API#Attachments> > -Multiple Attachments > -Stand Alone Attachments > > Caching : > -ETags/Caching > > -Creation and Deletion Mailbox > -Session Manager Class > > > August 1-August 15 (Buffer Time): > > Second phase of testing: Testing of debugged code. > > August 15-August 22: > > -Work on Documentation. > > -Finally discuss the project with mentors. > > -Debugging the bugs (if any reported by Mentor) > > -Improve the Documentation, Release. > > August 22 - August 26 : > > -Final Evaluation Submission > > > Available Time > I am committed to giving at least 40-50 hours per week to GSOC. Since I am > not doing anything this summer, I believe that the time devoted to GSOC will > be much more than that, for sure. I have excellent work ethics, and a goal > oriented guy. > > Progress Till Now : > I tried building James mailbox using Maven but build failed because of bug > in mailbox-integration-tester trunk for which JIRA > ticket<https://issues.apache.org/jira/browse/MAILBOX-52>has been opened. > I also explored little about JPA source code to find the implemented APIs. > > Additional Information: > > Bio > I am 18 years old. I live in India.Studying at one of the most premier > institute in India namely Indian Institute of Technology > Roorkee<http://www.iitr.ac.in/>pursuing my Bachelor of Technology Computer > Science & Engineering.I have > took courses like Computer programming in C++ at school and college levels.I > have started serious problem solving around two months back.I have also > worked in PHP as mentioned in experiences.I have got prizes in various > website designing competitions at school & college levels. > > I like to contribute in open source communities because it gives me > experience,technical expertise and it teaches spirit of team work. And its > my time to give back to community from which i gained a lot of experience > and motivation. > > You can have a look over my > Resume<https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BxMbL0XOZUogOGI5NWM0MTctYjUwMy00MTM2LTljZjEtZmRhYjM3ZjcyMzlk&hl=en&authkey=COmbsIQC> > <https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BxMbL0XOZUogOGI5NWM0MTctYjUwMy00MTM2LTljZjEtZmRhYjM3ZjcyMzlk&hl=en&authkey=COmbsIQC> > <https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BxMbL0XOZUogOGI5NWM0MTctYjUwMy00MTM2LTljZjEtZmRhYjM3ZjcyMzlk&hl=en&authkey=COmbsIQC> > Experiences > > Skills: > -Working Knowledge of GIT,SVN > -2 year experience in web development using > PHP,HTML,JavaScript,Postgres,MySQL > -Java Struts MVC little knowledge > -Currently developing Chat Client into the Intranet Portal of institute > using ejabberd. Also trying to learn Erlang for the same. > -C++ programming > -Problem Solving Skills,developed by practicing over websites like SPOJ,UVA > etc. > -Have knowledge of Design Patterns > -Working Knowledge of PHP > > I, as a part of team manages institutes website www.iitr.ac.in.We have > setup a intranet portal (totally managed by students) inside campus of IIT > Rookee which has around 80 applications (mostly in PHP & Java) hosted on > it.Java applications are built using Struts MVC framework for Java. I have > created Ebooks sharing portal within the intranet.I have very good > experience in web designing (e.g, I have created website during last year > summer internship www.raysconsultants.com ). > > Open Source contributions > I have submitted following patches in PhpMyAdmin : > 1)XML export of > views<https://sourceforge.net/tracker/?func=detail&aid=3258216&group_id=23067&atid=377410> > 2)XML Plugin for database > Export<https://sourceforge.net/tracker/?func=detail&aid=3135414&group_id=23067&atid=377410> > 3)Left Frame not > updated<https://sourceforge.net/tracker/?func=detail&aid=3091778&group_id=23067&atid=377410> > <https://sourceforge.net/tracker/?func=detail&aid=3091778&group_id=23067&atid=377410> > * >
