I wish to develop a desktop client for Dreamwidth. To begin with, I would like to discuss about some of the features and functionalities which I think the Dreamwidth client should have. I would like to see the Dreamwidth Client more as a full-fledged alternative to its online version rather than as an extension to it. So for a start, it must have all the features and functionalities that are already there in the Dreamwidth web portal, and then some more additional features which would be specific to the desktop client.

Here is a brief of list of the proposed features/functionalities of the desktop client.

# Provision to Post/Edit new entries as well as edit older ones.

# Create new Dreamwidth account / Edit User Profile

# Create/manage communities

# Manage Settings/Circle/Filter/Tags/Communities/Style themes etc

# Ability to import contents from similar services like LiveJournal etc

# Read/Manage Comments

# Integrated Inbox

# Read, search, explore, bookmark, download contents based upon your preferences

# Auto-backing up of contents from Dreamwidth server

# Auto-detection the music being played to auto-fill the Music field

# Support for add-on modules/plug-ins (like Firefox Add-ons)

# Integrated Payment module

# Support for sharing stuffs on Twitter / Facebook

# Any other features suggested by the Dreamwidth community


Client Design details

I would like to provide a flow based description here. So here it goes.

- Clicking on the DW Client icon would greet the user with a splash loading screen.

- The Welcome window will ask the user to sign in / create an account if he/she doesn't have one. I would like to mention that are 2 types of account here - 1. An user account maintained at the local system level, and 2. Actual Dreamwidth accounts. The former user account can/will contain multiple Dreamwidth accounts. The user will have to create a user account first and then he/she can go ahead and add as many Dreamwidth account as he/she wishes to the user account.

- When the user signs into his/her user account he reaches the home page of a particular DW account marked as the 'preferred account' by the user from among the group of other DW accounts which he/she might have. The user can always switch accounts, a drop-down list containing the DW accounts will be provided for this purpose.

- The home screen will present a short description of all the activities that had taken place since the time user had last logged out. It will also have a 'Quick Update' section. Comments etc if received on any posts will also be displayed here. Notifications will also be displayed here. Of course, the user will be able to adjust the home page view as per his/her wish.

- A menu bar having the similar layout as that of the DW web portal will be provided.

- Every other section/feature will be designed closely to resemble the corresponding page on the DW web-portal and would work the same way like they do.

- The Post Entry section will have choice of 3 views to work with - Normal Text entry mode, HTML mode, and Web-page preview mode.

- Auto-Backup feature will ask for options like Back-up frequecy/ next scheduled Back-up time/ contents to back-up etc from the user.

- It would be great if the DW client's theme/color set closely resembles the user's actual DW online journal's theme.

- Plug-in / Add-ons would give the DW client an additional edge, I believe. Any missing functionality could be added by installing the appropriate add-on. For eg Facebook/Twitter sharing will be supported once the corresponding add-on is installed. Similarly the auto-music detection could be supplied as a plug-in etc.


Development/Technical Details

To make the client work on all platforms we would need to go with powerful cross-platform technologies. I would suggest moving with GTK or Qt. And Python as the programming language. However I am open to any other option whatsoever. I believe the product should support as many platforms as possible, so that it can reach maximum number of users. I like learning new stuffs, so it won't be a problem for me to learn any new technology for this project. For handling data, I propose to use SQLite since it is lightweight, supports multiple platforms and considering the DW Client's usage nature, performance won't be much of an issue.

Client-server communication will be the core component of this client and I would like to use the XML_RPC for it. But, I am also open to any other protocol. Also, the choice of communication protocol would determine the which all features could be implemented.

[This are my initial suggestions only, the final choice of technolgies should depend on what are our expectations from the DW client. ]


Proposed Project Schedule

I would like to implement all the above mentioned features and more, into the Dreamwidth Desktop Client. But considering the GSoC time frame, it would not be possible to implement every proposed feature. However, I would be more than happy to go ahead and continue the development work after the SoC period and implement most of the proposed features.

I would like to discuss these things with my mentor and the Dreamwidth community, so that I can prioritize the features accordingly. I think that this community feedback is very important for a project like this because after all this project will be delivering a product that will be used by them only. But nevertheless there are the certain essential basic tasks like posting entries into the journal, reading contents from the "reading page", and managing the settings of one's own account etc which are needed to be implemented first. Based upon these, I would like to present my project schedule.


Stage 0 (...till May 23rd )
- Discuss and finalize the feature set to be implement in the client during SoC period. Complete ground works like familiarizing myself with the technologies to be used before jumping into actual coding.


Stage 1 (... till June 10th )
- Design the front end GUI keeping room for all the proposed features. This would be done while receiving continuous feedback from my mentor and other DW developers.

Stage 2 (...till July 12th )
- Implement the 'Home' page
- Implement 'Post entries' - Add the capability to post entries/ edit entries
- Implement 'Reading Page' - Add the capability to fetch entries so that the user can read them

Stage 3 (...till July 16th - mid term evaluations)
- Feedback period, receive feedback from the DW community
- Do some Code Documentation
- Complete any pending task

Stage 4 (...till July 20th )
- Carry out modifications based upon the feedback received from the community.
- Complete any pending task

Stage 5 (...till August 9th )
- Incorporate ability to Manage Settings
- Add the Inbox
- Add features shortlisted by the community

Stage 6 (...till August 16th - final evaluations)
- Add features shortlisted by the community
- Document an User Guide and complete code documentation



Why Me ?

I am Arijit Chakraborty, a senior from Birla Institute of Technology, Mesra, India pursuing BE in Electronics and Communication Engineering. My first encounter with FOSS took place when I was in class 8 and I have been actively using and advocating FOSS for the past 4 years. I am a member of my college's LUG and have coordinated various workshops on its behalf. I have started contributing to open source softwares only recently, but now that I have started I don't think that I would be stopping anytime soon.

I love Python and have been working with it for more than a year now. I have been involved in GUI development in past using GTK/PyGTK. I have contributed to ASCEND's canvas modeller GUI :: http://ascendwiki.cheme.cmu.edu/User:Arijit during last year's Google Summer of Code. However this was purely a desktop app with no web interaction. I would like to learn and develop desktop apps that communicate with the web and developing a desktop client for Dreamwidth would give me a great opportunity to do that under proper guidance.

I also have a fair knowledge of C/C++ (have nearly 2 years of programming experience with C/C++) and various web technologies like LAMP, Django, CMSes etc (have designed/managed various websites in the past, developed Paypal payement gateway using django etc). I also run a professional blog : digitizor.com along with my friends and it is powered by WordPress.

My exposure to Dreamwidth is recent and I am still exploring it. I think that I am dedicated, passionate and hardworking, and I feel, I am well suited to take on a project like this and given a chance, will successfully be able to complete the project. I am applying to Dreamwidth this Summer of Code because I think that this would be a great way for me to learn new technologies and enhance my skills.

Lastly I want to express my deep commitment for this project and Dreamwidth. I'm fully available this summer without any other commitments, will tune my day/night rhythm as per my mentor's requirement and assure a dedicated work of upto 40 hours/week (will work for more hours if need be). Also I'll assure that I'll continue my commitments with Dreamwidth well after GSoC.

Profile

arijit

April 2010

S M T W T F S
    123
456789 10
1112 1314151617
18192021222324
252627282930 

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags