GSoC Project Proposal : Mobile Client for Dreamwidth
Greetings !
The following is my project proposal, to create an Android Mobile Client for Dreamwidth.
[I have reworked the schedule. After inputs from Denise, I do realize that the earlier schedule was too optimistic one. I do respect her experience, and now the project emphasizes on the protocol implementation part. I consider this to be a really enjoyable and challenging project to work on. I would greatly appreciate all your inputs as this would give me more insights to understand the project better :) Thanks for your time ]
Title : Android Mobile Client for Dreamwidth
Abstract
Social media is the place where people share their thoughts and meet new friends. It gives their life a whole new meaning in the cyberspace. It is the place where a whole new culture evolves through exchange of ideas.
Dreamwidth has created a place for itself, combining the guiding principles and applications that enhance the user experience. Now, more often than not, people find it easier to use a single device to access their data online. So, a native mobile client for Dreamwidth, will enable the users to keep in touch with their "home" (read it Dreamwidth), from anywhere.
This client program aims at allowing users to post entries to their journal, read their "reading page", and manage the settings of their account through a neat and user-friendly mobile interface. The client program will enhance the overall user experience with Dreamwidth, giving them more freedom, than ever. This application will enable the users to "Read" the latest posts, while waiting for a bus, or while they are travelling. I believe that the users will find it really exciting and helpful, reading through the posts of a diverse community of contributors. I imagine the application to be a friend while "travelling" and a "reader" for keeping themselves updated.
I have elaborated on my plan below [Implementation, project timeline etc...].
It would be really helpful if you could go through and comment on it. :)
How ?
Android provides java.net and java.sql api's, which can be used to communicate with the backend server, to retrieve and manipulate the data. The user inputs are handled through the already existing View modules. The data can also be stored temporarily in the sqlite database.
I will use Android 2.1 supported SDK. The development environment will be Eclipse IDE. I am confident in using this development environment, mostly due to my past experience and the ADT plugin provided. The following is a description of how I plan to approach the work. (This is flexible, and will most likely see changes, once the project gets started).
The following is not only part of the project aim for GSoC 2010, but I consider it as a long term roadmap for the DW Android Client. (Though this will considerably change afterwards)
Firstly, I will get to know the community, and discuss the implementation of various protocols. Parallely, I will be working on creating sample applications, to test and demonstrate the use of these protocols. Then work on creating a bare-minimum UI, enabling the user to login to their account and post simple journals would be completed (I have completed few required UIs already). For the UI, I have made use of the View modules. For the DW server interaction the java.sql / java.net api's will be used. Securing the connection will also be dealt with (more discussions and learning needed here).
The challenging part here is the protocol implementation. After I got inputs from Denise, I realize that I would be spending a bulk of the time, creating, altering and customizing the ljprotocol. So, even before the project date begins (that's May 24), I have planed to spend my time learning, discussing and try out sample applications using the ljprotocol.
Once this is done, I will start working on adding more features, including a "view reading page” and a bare-minimum settings page. I believe that the users will mostly use the "Reading Page", more than posting entries. The options to add a "quick comment", "mark for further reading" (thanks to the inputs by Damned_colonial and many others) will be implemented. This list will increase in size though, once the I meet the minimum required ones. The settings page will contain only the essential ones, like, notification options upon a new post, number of mini-posts to be shown, selecting the mobile theme, subscriptions and access list editing (thanks to the inputs from fiorelina). This is also a non-exhaustive list and will work with the community to enhance it.
After completing this, the work on enhancing and beautifying the UI will be begin. The UIs will be enhanced continuously from the feedbacks of Dreamwidth community. I have uploaded my first works on this. Requires your inputs :)
And finally, I plan to implement a localization for atleast 3 languages. This will be part of the “if time permits” aim of the project. I would be happy to take it up even after project period, as my continuing effort to contribute to Dreamwidth open source project.
Technical Details
The following are based on inputs from Dreamwidth users, mainly from dw_biz, and then the comprehensive proposal made by Mayank for the "Quotes" desktop client.
1. What all functionalities will be added to the client ?
1.1) Login / Logout (using sessions)
1.2) Post new entries
1.3) Edit old entries
1.4) Read page (view and browse)
1.5) Inbox (Read notifications, and mark it as read)
1.6) Settings (I've detailed it in later sections)
The following is the details of each of the items that I've listed above. I have also commented on how far I have already went ahead, and what are the challenges that I foresee and how I expect to tackle them (that will ofcourse change as the project progresses). The design of the program is also given.
1.1) Login / Logout
1.1.1) Use java.net.* api's to establish a connection with dw server
[ Here, I expect to work on creating / editing the already existing ljprotocol. It will require brushing up the use of java.net api, and testing sample applications ]
[ Currently working on using Android SDK java.net apis, using simple test cases. I am also referring to the source code of Mayank's "Quotes" DW desktop client ]
1.1.2) Using session to manage the login / logout.
[ To be implemented in phase IV ]
1.1.3) What to do when the user puts the client in the background ?
[ As of now, I have got few ideas like, expiring the session based on time for which the application is idle. Phase V item ]
I have created a bare-bone interface for this.
1.2) Post New Entries
1.2.1) Simple post interface having Subject and Content text areas for inputs.
[ I have designed it as an Activity, which is woken up with through Tab interface ]
1.2.2) Posting Options : Post to, Date, Tags, Mood, Location
[ This will be another Activity, so that it could be reused during Editing Posts ]
[ Challenge : The simple input interface doesn't provide the options to enter hyperlinks, insert pictures etc. After getting the inputs from Denise, I would not want this as part of the schedule of this summer project, though could be worked upon later as an improvement ]
I have created an bare bone-interface for using TabWidget. The required Activities have also been created.
1.3) Edit Old Entries
1.3.1) Same Post interface as (1.2.1), but, now the data will be pulled from the server into the text area.
[ I would prefer doing this part, only after completing 1.4 and 1.5. This is because there could be layout issues for already existing data that is now accommodated in the client window ]
1.3.2) Options interface also reused from (1.2.2).
[ This is the reason I prefer using a shared activity. There could be other better options, but for the time being this is the plan ]
[ Since this will be the least used functionality of the DW client, I would categorize it as an enhancement and will only be part of phase V, or even outside the project ]
1.4) Read Page
1.4.1) UI : First, a list of all recent posts, along with the author (thumbnail or name). The user will select any of these and then an Activity "Read" will be launched with the contents of the post.
1.4.2) Quick Comment : An option to comment on the posts will be put in place after completing (1.4.1).
[ Plans to make it as a separate Activity ]
1.4.3) Options : Filtering options and the number of mini-posts to be listed in one page.
[ The read module will be the most used of all modules. Hence, creating / building upon the ljprotocol is the one big challenge. Managing the items in the read page (images, links) will be dealt with, once I finish the basic read page protocol implementation ]
1.5) Inbox
1.5.1) Notification.
1.5.2) Mark as read / delete.
[ This module will come under Phase III of the project. And as of now I haven't included this in my schedule. I would be happy to take this up after the project period ]
1.6) Settings
1.6.1) Accessibility Options : Voice / Vibrating notifications for new new posts (and inbox items), default font size, allowing extended links ()
1.6.2) Localization Options : This could be done with the help of new localization kits provided with Android SDK. I have planned to implement a user-end localization rather than a server data based. This could be improved upon after the project.
[ I haven't implemented this option till now. I am trying them out, so that any design considerations will need to be kept in mind before starting the actual coding itself. Will update as and when I hit something really "project changing" ].
When ?
The following is the planned outlay of the project, with a time-line.
[ I've updated it to reflect the changes in the project implementation, with the inputs from Denise. The latest update is as on : 09 April 2010 ]
Now – April 23 : Get friendly with the mentors and the Dreamwidth Community. Finish the minimum required UI's. Testing simple Android java.net apis to connect to a server and login authentication.
[ I already created the bare-bone UI for login ]April 24 – May 1 : Try implementing the login using ljprotocol and its implementation in Java. Discuss and resolve the issues with the help of mentors and dw_dev community. Also work with Hg VCS, to get to know how it works.
May 01 – May 14 : Finish all the required UI. I have my University exams during this time, so I have kept it as "load free" as possible. Exams are scheduled to be completed by 14 May.
May 14 – May 24 : Exam ends and GSoC continues !! Work on implementing the login protocols. [ If I haven't already been able to complete it ].
Discuss with mentors all the background regarding the ljprotocol, how to implement and the possible issues that may arise during the development. Also discuss the documentation aspects. Finalize the schedule for phase I.
Phase I
May 24 – June 6 : Begin ! Code for setting up the connection and authentication with Dreamwidth server. Work on 1.1.1 to be finished during this time. Also, if ahead of schedule, work on "Post Entry" (1.2.1) section.
June 6 – June 10 : Testing and documentation of the protocol. Since its the first protocol to be implemented, tested and documented, I prefer giving more time for this part of the project.
June 10 – June 20 : Code and implement the protocols for the "Post Entry" Module. The work on 1.2.1 and 1.2.2 (Post Options) to be completed during this period.
- June 20 – June 23 : Work on any unresolved issues. Testing and Documentation of the Post Module
June 23 – July 5 : Code and implement the protocols for the "Read Page" Module. Work on 1.4 to be completed during this period.
July 5 – July 15 : Work on any unresolved issues. Testing and Documentation of the Read Page Module. Discuss and review the project schedule for Phase IV onwards.
Phase IV
July 15 – July 25 : Design the settings page, and code for accessing / changing the user settings. Work on section 1.6.1 (Accessibility), 1.6.2 (Localization), and 1.1.2 (User Sessions) to be completed during this time.
July 25 – July 27 : Catch up on any unforeseen issues. Testing and Documentation of the Settings, and localization modules.
July 27 – July 31 : Enhance the user interface and usability features. From bare minimum to nice looking interface.
Phase V
Aug 1 – Aug 15 : Bonus ! : Bug fixing, cleaning up, documentation, something extra - work on user sessions 1.1.2 [ if not completed yet ], 1.1.3 [ background event handling ].
Party Time !!
Why me ?
I am an undergraduate student at Amrita University, India; pursuing my Bachelor of Technology in Computer Science. I have been involved in the FOSS community for over two years now. This has given me a lot of opportunities to improve my coding standards, and enhance my community skills. I have already contributed to open source projects like BeZilla (part of Haiku) [1], and has developed application for Android Mobile platform [2]. I love writing how-to guides, and step-by-step manuals. I have posted these on my open source web page [5]. I am also the OSUM affiliate leader of our campus, in recognition of my work on spreading FOSS amongst the student community [3].
Moreover, I am really excited about this project. I've been a contributor to open source projects for more than an year and has experience developing applications for Android platform. Though this may not give me any better chance, I believe my experience would come in handy during the development phase of the project. I also have good knowledge of version control systems, SVN. I also realise that this project will give me opportunity to learn from the community. I will also be responsible for the maintenance of the code generated during my period in this project. Apart from this, I am well-versed in the community dynamics (using IRC, mailing lists for help).
Apart from this, developing mobile applications excites and challenges me. The information retrieval, transfer of data through various protocols and ultimately giving the users a feel of Dreamwidth "on-the-move" challenges me. It gives me the opportunity to apply my skills (both technical and creative) and learn a lot more during the course of this project. Also, I realise that an open source project is more about the community than an individual's contribution. This project give me an opportunity to get close with the Dreamwidth community, sharing and improving my technical and creative abilities.
I would be happy to clear any doubts regarding this project proposal. You can find more about me at my home page [4]. You could get in touch with me through any of the channels that I have listed below.
Thanks for considering this proposal and your time !
References
[1] http://dev.osdrawer.net/users/224
[2] http://code.google.com/p/tictactoe4android/
[3] http://osum.sun.com/profile/PPRAHULKRISHNAN
[4] http://rahulkrishnanblogs.wordpress.com
[5] http://rahulkrishnanblogs.wordpress.com/category/opensource
My newest update to the proposal has been possible due to the inputs from the dw_dev, dw community, mayank's proposal for the DW desktop client apart from many others who have contributed their idea. I thank them all.
Contact Me
Mail : pprahul@gmail.com
IRC : pprahul (freenode)
IM : pprahul (XMPP/Gmail)
Web : http://rahulkrishnanblogs.wordpress.com
Blog : http://rahulkrishnanblogs.wordpress.com/blog
Open Source Page : http://rahulkrishnanblogs.wordpress.com/category/opensource
The first-shots of the DW Client
---------------------------------------------------------------------------------------------------------------------------------------------------