2001-11-09 04:32 pm (UTC)
I'm the person who wrote LogJam.
We (Brad and I) tossed around the idea of writing a KDE client back in the beginning of things, but decided against it because of the non-free-ness of QT. (I'm talking about the Windows licensing; I don't want to get into a licensing debate.)
With that said, COOL!
If you ever need any help, you can ask me directly.
Here are some issues to consider at the beginning that'll help a lot:
- you should support multiple different livejournal servers (deadjournal, etc) simultaneously-- this means a tree of settings (such as login information) for each server. (Some metadata, such as the mood<->moodid mapping, is a per-server setting.)
- may want to be able to support different protocols (flat interface will probably always exist, but we do have an XML-RPC interface that isn't too far away from Blogger's)
has done some UTF-8 (internationalization) work for LJ; some of your users may not be using the standard charset.
So you're the one I can send my psychiatric bills to. :D Seriously, LogJam is a great client, for the most part. It just crashes way too much for me. (But partly thats because I'm using an old version that still calls itself LoserJabber, I'm giving LogJam the benefeit of the doubt here - I'm just too lazy to get the requirements and recompile it myself, so I'm sticking with whats in Debian testing)
Thanks for the tips. I'd actually already planned the first two (Multiple servers as well as different protocols) I plan to write a basic class to abstract the entire LJ functionality, and encapsulate each entity that can be referenced (A friend, a friend group, an event, etc) as well as abstract the communications from the actual request modes. However, that is somewhat difficult to design with only one communications method to work from. I had figured the point of abstraction would be the key value type pairs that are passed in the request. Is this a safe assumption? Actually, while the class will use KIO as a backend, that will be the only KDE dependancy that I know of at the moment. I'll try to keep it that way, so the class can be used for other clients with minimal porting fuss.
Thanks for the tips though. While I had the idea to have a different class instance for each user, with the possibility of each being on a different server, it never occurred to me that each server could have a different mood list. I guess I will have to work a per-server class in there somewhere.
And as to the non free-ness of Qt, that does not bother me too much. For one thing, there is already a wonderful Windows client. Also, the Qt licensing has evolved, thanks in a great deal to KDE. I wonder if the people at TrollTech had any idea what they were getting themselves into when they started Qt. They just cast the line out, and the open source community took it and ran with it in a completely different direction than was intended.
Oh, let me tell you a little story to explain my psychiatric bill comment...
A few months ago, something really cool happened. I decided to be creative and turn my journal entry about it into a little story, based loosely on reality. So I opened up loserjabber (This was prior to the name change) and started typing away. It was a work of art (IMNSHO) and a wonderful story. Perfect. Add the finishing touches, spell check, set the mood, set the music, and post!
I stared in disbeleif. All that writing, gone in the blink of an eye. Not even a core dump, because they are disabled by default on Debian. Gone. Nothing. PANIC! My masterpiece, destroyed!
I freaked out for a few minutes, before starting to think about it. It may still be in memory. It has to be still in memory! So I run strings on /dev/mem and saved it to a file. Searched for some words. Ah hah, there is a piece. And here is a piece. And there is one here, too. I was able to find all the body of the story, and paste it together. I saved it as a text file. Tried again, another crash. So I gave up and posted using the web. That was my first post through the web interface.
Since then, I rag on your client a lot about the crashes in my journal. But don't get me wrong, from what I can see it is all the same bug. But it has eaten so many posts, if it is anything I care about, or is really long, I compose it in a text editor first, and then paste it in. Other than that minor little thing, I think the client is great.
The main reason I am doing a KDE client from scratch, however, is first because I've never done a project from scratch. Second, KDE is C++ and IIRC LogJam is C. And thirdly, KDE has lots of ways of making implementation VERY easy. It is just glue code between the front end (GUI) and the back end (HTTP) that I have to write. In fact, most the time developing I expect to spend in designing, not actual development. Also, I want to strive to design things "right" as far as OO design goes. I've never done a project from the ground up like this before. My main language is C. Also, I have ideas for integrating a client into the whole KDE environment that just are not possible with anything else.
strings on /dev/mem .... heh. hardcore. :P
What can I say, I was unstable at the time. Imagine the state you'd be in if you had just written a huge function that was beautifuly implemented, but you hadn't saved yet, then someone tripped over the power cord. Thats about how I was feeling. I was desperate.
That why journaling clients need a "save every x seconds to file" feature. But I must say, that /dev/mem thing is pretty funky. I never thought of trying it. Heh.
2001-11-09 05:30 pm (UTC)
Can't really blame me for crashing bugs in older versions, but...
Yeah, LoserJabber sucks. LogJam, too, but it's getting better.
I prefer C++, in general, but GTK is pretty C-ish, and it's painful to work C++ around it.
The little dabbling I did in GTK when it was new (IE first spun off from gimp, no gnome yet) it seemed pretty painful to do anything in, compared to Qt. So I went with Qt.
2001-11-09 06:54 pm (UTC)
GNOME is even worse. :)
2001-11-11 04:26 pm (UTC)
I too found LoserJabber a little buggy, and LogJam with too man dependancies.
Even now that I sue Debian, I still go insane trying to apt-get all dependancies.
As for KJournal, it would be a god-sent now that I have crossed the the dark side as a KDE user.
One of the better things will be the ability to sit in the tray.
As for contributions, I run KDE2 with most of the development libraries installed, so I would be willing to beta-test, and perhaps even work on the code with you.
My forte is not network code [even though my two main projects lately are both network related], but Interfaces are quite easy to learn and I tend to work on them a little more.
So should you need someone to sift through code, I'd be more than happy to.
My sourceforge username is angelespurple
and I currently develop an ircd, IRCHex
which is basically just a cleanup of UnrealIRCd for my network. I'm also working on a version of tetrix [tetrinet's daemon/server] to include new new tetrinet protocol I like to dabble on, and a tetrinet client based on GTetrinet to support my new protocol + some extra features.
Gimme a yell if you want my help :)
Excuse my massive amount of typos. I was trying to do 100 things at once at the time.
As a correction, I meant *use debian* not sue them :P~
Oh come on, dark side? KDE isn't THAT bad. :D
Seriously though, would love the help. If you want UI design and/or implementation, don't have anybody in that area yet. Theres 2 developers, and we are both "I've used Qt, can do UIs, but would rather do the back-end code" people. So if you are interested in doing UIs, it's currently all yours. :) If thats not up your alley, or you don't think you could handle a whole chunk all to yourself, that is fine too.
Nah, KDE rox, best WM I've used yet!
Seriously, I've never used QT, mainly GTK+ in the past, but I'm willing to give it a shot.
Can't be that hard after all :)
2001-11-15 02:43 pm (UTC)
Sorry to take awhile to get back to you.. Been a bit distracted.
I've added you to the project. If you have any ideas, feel free to discuss them in the forums, and/or submit feature requests.
2001-11-15 10:22 pm (UTC)
no worries :)