mrigeshpokhrel: (Default)
mrigeshpokhrel ([personal profile] mrigeshpokhrel) wrote in [site community profile] dw_dev2010-03-31 05:26 pm
Entry tags:

GSoC2010 : Desktop Client

 hi,

I am Mrigesh, a Information Technology student from IIIT-Allahabad India  and would like to work on the project developing desktop client for Dreamwidth.

Since past one or two weeks i have been studying the protocols which have been forked from LiveJournal (http://www.livejournal.com/doc/server/ljp.csp.protocol.html)and(http://hg.dwscoalition.org/dw-free/file/tip/cgi-bin/ljprotocol.pl) and the existing client for livejournal "logjam" . I have gained some understanding of the code and the client/server protocol reference specified above.

I would like to start with a bottom-up approach for the gui client, centring it along the linux OS specifically Ubuntu, using QT. I would start off with creating a client in following manner :

 
  1. Creating a bare minimum client:
    1. The client would request the user for authentication(username and password)
    2. The client would allow the user to "read" past entries and "post" a new entry after successful authentication.
    3. The methods used would be (Flat client/server protocol : http://www.livejournal.com/doc/server/ljp.csp.flat.protocol.html)
      1. login : logging into the client after successful authentication
      2. sessiongenerate : generating a session after successful login
      3. postevent : posting a blog/journal only if the login and sessiongenerate are both successful.
      4. sessionexpire : close the session instance the user has created thus.
  2. Client with functionalities like reading and editing past posts, check friend list/groups and edit friend list/groups
    1. The client would perform bare minimum functions as defined above
    2. The user would be able to view his past posts and edit them.
    3. The client would have a side pane/scrollbox where he would be able to view and edit his existing friends and groups
    4. The new methods implemented would be :
      1. login : logging into the client after successful authentication.
      2. sessiongenerate : generating a session after successful login.
      3. postevent : posting a blog/journal only if the login and sessiongenerate are both successful.
      4. getevents : coupled with "syncitems" this would allow the user to view his past posts, events, to-do items.
      5. editevent : this would allow the user to edit/delete past posts in his journal.
      6. getfriends : this would fetch the list of users the current logged in user identifies as friends and displays them in the side pane/scrollbox.
      7. getfriendgroups : fetch the user defined groups of friends.
      8. editfriends : add/edit/delete existing friends.
      9. editfriendgroups : edit user defined friend group list.
  3. This would be supposedly the final client(that what i planned till now anyways) with proxy support(i dont know how to do that but i am still reading a blog about it) and most of the required functionalities provided in the protocol.

I would be following the ABC rule of software development, i am recently messing with twitter api (using curl) and have been successful till date while posting a tweet and a mention/reply. I would to integrate twitter functionalities as well , but that seems a bit far-fetched. I would also be honoured to work with/on dreamwidth even after GSOC2010 as i find it could help me learn a lot of new things!!

Any sort of suggestions or critic comments are most welcome, after-all it would only help me in improving my proposal :) .

Thank You
Regards
Mrigesh Pokhrel
irc : _silentAssassin
gtalk : mrigeshpokhrel
skype : mrigeshpokhrel
(PS: i am in india and so i would be available anytime after 12:00 GMT ( thats when my class gets over))


 

 

cesy: Home is where the <3 is (Dreamwidth) (Dreamwidth)

[personal profile] cesy 2010-03-30 12:02 pm (UTC)(link)
Welcome to Dreamwidth! It looks like you've done a good bit of research already, which is great. Have you looked at the two existing Dreamwidth clients ([community profile] qtxpost and eXpostulate)? It may be that you can work with the open source bits of their code to save repeating work, and then expand from there.
catness: (Default)

[personal profile] catness 2010-03-30 06:43 pm (UTC)(link)
Hello from another Linux/Qt fan! :)

I'm curious why do you prefer a flat interface? IMHO, XML-RPC is a lot more convenient. Also, probably you've noticed that friend groups do not work on DW the same way as on LJ, due to DW's approach of splitting the permissions into "subscription" and "access", so the corresponding protocol functions are missing. (I had volunteered to add them, hopefully it will be accomplished in the very near future, as soon as I'm done with the friend manager part of my client - [community profile] qtxpost, which was already mentioned - the documentation for the code is somewhat lacking, but feel free to ask any questions if you need :)
pauamma: Cartooney crab wearing hot pink and acid green facemask holding drink with straw (Default)

[personal profile] pauamma 2010-03-31 02:06 am (UTC)(link)
Dreamwidth doesn't have "friends" the way LiveJournal does - it has a watch list (people whose journal you read) and a trust list (people with access to protected entries in your journal) instead. (And it has watch groups - aka reading filters - and trust groups - like the LiveJournal custom friends groups.)
tonybaldwin: dem-n-me (dem-n-me)

[personal profile] tonybaldwin 2010-03-31 04:02 pm (UTC)(link)
Ha!
My client has DW, LJ, IJ, DJ, and Izi cross-posting & twitter and identi.ca functions.
The thing is, though, it only posts...does not read entries, manage friends, etc....
In the works!

Good luck with your project!

:)
tony