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 :)
catness: (Default)

Re: @catness

[personal profile] catness 2010-03-30 07:53 pm (UTC)(link)
It's the watch/trust thing - have a look at "subscribe/access" at http://wiki.dwscoalition.org/notes/Dreamwidth.org:_FAQ#Subscribe.2FAccess and the server implementation details at http://wiki.dwscoalition.org/notes/WTF_Backend (maybe there's more, I'm still finding my way around the wiki)

Oh and I used a Qt-based XML-RPC implementation at http://code.google.com/p/qtxmlrpc/ (although had to fix a few things as it didn't work right away).
catness: (Default)

Re: @catness

[personal profile] catness 2010-03-31 08:40 am (UTC)(link)
Actually I just tried to say what [profile] paumamma said much better - why the friend functions do not work on DW the same way as on LJ.
cesy: "Cesy" - An old-fashioned quill and ink (Default)

Re: @catness

[personal profile] cesy 2010-03-31 08:58 am (UTC)(link)
Not quite - subscribe doesn't affect what you see when viewing a particular entry - it just affects whether or not they show up on your reading page.

Also, you don't need to have a subject line saying who you're responding to, as the reply threading on DW does that automatically.
cesy: "Cesy" - An old-fashioned quill and ink (Default)

[personal profile] cesy 2010-03-31 09:09 am (UTC)(link)
Exactly.
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.)
cesy: "Cesy" - An old-fashioned quill and ink (Default)

[personal profile] cesy 2010-03-31 09:13 am (UTC)(link)
It allows you to specify in more detail - someone who's not in any particular group, just has access, will be able to see access-locked entries but not custom-locked entries. Then you can choose to lock a particular entry to a sub-group of the people you've given access to, or a combination of access groups, or even just private. For instance, there might be things you want to lock to just family, or just people you don't know offline, or whatever.
denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)

[staff profile] denise 2010-03-31 09:14 am (UTC)(link)
The way filters (groups) work is that they let you read or post to a sub-set of your access list or subscriptions list.

So, if I have a reading filter, it will let me see only a portion of the number of accounts I'm subscribed to -- maybe I'm subscribed to a community that posts 500 posts a day, and if I read my whole reading page, the community will drown out any other posts that people I'm subscribed to make. So, I create a reading filter that doesn't include that community, but does include everyone else, and I read that filter regularly and then go read the community itself when I have time to catch up.

Posting filters (access filters) are for if you want to make a post that's only visible by a few people on your list. Say I have my mother on my access list, but I want to bitch about her -- I'd make a filter that didn't include her and post to that filter. Or if I know that half my readers aren't interested in my locked posts about a thing, I'd make a filter that only includes people who want to read about the thing and post all Thing-related posts to that filter. Or, some people (myself include) have a very small filter of people who read their fiction that they're writing while it's still being written, to offer improvements and stuff. That kind of thing.
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
tonybaldwin: tony baldwin (Default)

[personal profile] tonybaldwin 2010-03-31 04:29 pm (UTC)(link)
Of course, my code is all GPL/Free Software, so, help yourself!
I will be interested in seeing what you come up with.
I imagine you're not writing tcl/tk (not popular), but if you have anything to contribute back to my project, it would be most welcomed, of course.
tonybaldwin: tony baldwin (Default)

[personal profile] tonybaldwin 2010-03-31 04:30 pm (UTC)(link)
I just started writing Xpostulate last week, and haven't written any documentation yet.
The code is heavily commented, though, which might be useful.
tonybaldwin: tony baldwin (Default)

[personal profile] tonybaldwin 2010-03-31 04:32 pm (UTC)(link)
Later on, or within the next couple of days I intend to write up a howto and stick it on my wiki. I'll try to remember to post back here when I do.
In the meantime, perhaps you should join <http://xpostulate.dreamwidth.org">the Xpostulate DreamWidth community.

(experiment ... sadly, I don't know how community links work on DW, just user and cut tags.) (I think this one will point to lj [community profile] xpostulate )
tonybaldwin: tony baldwin (Default)

[personal profile] tonybaldwin 2010-03-31 04:33 pm (UTC)(link)
ha, the lj comm tag works on dw, not pointing to lj.
[community profile] xpostulate

denise: Image: Me, facing away from camera, on top of the Castel Sant'Angelo in Rome (Default)

[staff profile] denise 2010-04-01 04:03 am (UTC)(link)
Yes, all the old LJ tags work as well as the DW-form tags, so people don't need to change their habits if they don't want to.
tonybaldwin: tony baldwin (Default)

[personal profile] tonybaldwin 2010-04-01 02:39 pm (UTC)(link)
Huh...so I didn't really need to add DW specific tags to Xpostulate.
Nonetheless, I think it's good that I did, anyway.

:D
tonybaldwin: tony baldwin (Default)

[personal profile] tonybaldwin 2010-03-31 05:45 pm (UTC)(link)
Oh, there's already a wiki for Xpostulate.
I mean to post a manual/howto on there, though.
tonybaldwin: tony baldwin (Default)

[personal profile] tonybaldwin 2010-03-31 06:28 pm (UTC)(link)
I'll be adding a distinct page for the manual/docs, in fact.
cesy: "Cesy" - An old-fashioned quill and ink (Default)

Re: Proposal submission

[personal profile] cesy 2010-04-01 06:49 am (UTC)(link)
Judging from the comments to the latest post in [site community profile] dw_biz, the key thing people want is for it to work on Mac as well as Linux or Windows. How easy would it be to port to other operating systems as well?
tonybaldwin: tony baldwin (Default)

Re: Proposal submission

[personal profile] tonybaldwin 2010-04-01 02:42 pm (UTC)(link)
This is one of the reasons I like to work with Tcl/Tk.
Although I develop primarily on+for gnu/linux, tcl/tk is fully crossplatform, so, unless I call linux-specific system resources, my code can be run on mac/win/lin/bsd.
Python/tkinter, which I also like, is the same, and/or perl/tk.
I think Qt will do lin/mac/bsd easily enough, but, unless I'm mistaken, Qt on Win might be a bit of a P.I.T.A.