Powered By:
Clearspace
BlatherSource: Because development won't keep quiet
1 2 Previous Next

Daniel Henninger's BlatherBlog

21 Posts tagged with the pyicqt tag
2

I've been quiet for a bit.  Most of you know how blogging goes ... you get excited about it or have a lot to talk about for a time, and then you start doing less and less posting.  Though some of you are quite adept at regularly posting ... to you I give the virtual thumbs up.  =)  But what have I been up recently?  Quite a bit actually.

 

For those who don't know, I left my university job of 11 years at the end of October and joined Jive Software.  My work with Jive fell right in line with "what I really want to do" for my career.  =)  Plus, they're all really great people.  That said, I'm working from across the country (waves) and quite enjoying it.  Maybe Jive will open up a Raleigh-Durham (Research Triangle Park?) office at some point.  ;D ;D ;D  Anyway.  I have continued my IM Gateway work, become one of the primary developers of Openfire, and become the lead developer of Spark (amongst other things).  I've been enjoying all of these things quite a bit!  I don't get to spend a lot of time on Spark, but when I do, it's quite fun to be playing with the client side again.  It's been a loooong time.  At this point I get to play with all three of the main areas of XMPP (Client, Server, and Component)!  It didn't take that long to adapt to Jive's environment though.  I actually really dig more deadlines and scheduled releases and such.  Frankly, it helps me mind "pick a target" when I'm trying to decide what to work on next.

 

So what's happened to PyICQt and PyAIMt?  I've officially stepped aside.  I moved them to Google Code so that others can more easily become involved.  You can now find them at:

http://code.google.com/p/pyaimt/

and

http://code.google.com/p/pyicqt/

I haven't removed myself as one of the "owners" yet on there so that it's possible for me to facilitate others becoming involved in the project for the next month or so in case others have been dying to get involved and didn't think about approaching me before.  A couple of other folk have stepped up and are doing a few things with it!  Yay!   The new location of the py-transports "mailing list" is now a Google Group at http://groups.google.com/group/py-transports.  I must admit, at this point, I don't miss them.  I do hope that they keep going though as I do believe they are good projects.

 

What about the XMPP Script Repository?  Well, I moved that to SourceForge: http://xmppscriptrepo.sf.net/

I won't be actively managing it, but if you are interested in becoming involved with it, please ping me and I'll set you up!  (let me know what your sourceforge id is)  It's using a SourceForge tracker to handle new script submissions.  If people -do- submit things to it, that would be about the most maintenance it needs unless you really feel like doing some significant work with it.  So... lemme know!

 

So what's left of BlatherSource?  You're "looking at it".  All I'm using BlatherSource for at this point is my blog.  I may do something else with it at some point, but for now it's just my blog.  I did like the interface I had put together for it, but I just don't have time to keep developing it/to manage it, ya know?  Many kudos to my hosts at Modevia.com for putting up with my requests for the site.  =)

 

I do still have a site for JWGC, http://jwgc.sf.net/ (moved it to SourceForge).  No idea if I'll ever do much else with it, but I like to keep it around.  It's my first XMPP related project ever.  =)

 

So... why did I move PyAIMt and PyICQt to Google Code instead of SourceForge?  Well, mostly because I wanted a wiki for the documentation and I couldn't find one on SourceForge.  Of course, an hour after moving everything I found that SourceForge -does- have a wiki.  Color me blind...  Doesn't matter, was neat to see what Google Code offers in terms of services.  I really like their "easy on the end user" issues tracker.  I don't like their web space offering though.  Spaces I think it is?  Whatever it is I don't like it.  I couldn't do with it anything like what I wanted.  I hear they are looking into a better solution at some point, so that might be cool.

 

After looking around relentlessly or a Java OTR library .. something like libotr that Pidgin uses, I decided to request a project on SourceForge to write my own.  Hopefully others will find use in it.  It's not approved yet, but if it is, it'll be jotr.  (http://sourceforge.net/projects/jotr ?)  If anyone is interesting in helping me out with that, I would greatly appreciate it!  I was rather surprised to see nothing already exists for Java for OTR.  (then again, I could have just not found it, but I tried really hard to find it  ;D  )

 

The IM Gateway plugin ended up putting me in the lead developer role of Java-JML (http://java-jml.sf.net) (MSN messenger library for Java) and also a developer of Martyr (http://martyr.sf.net/) (IRC library for Java).  Things sure do pile up quick, don't they?  =)  Those have been fun though.  I've gotten to work with Smack a little more as well in my Jive work, so that's been cool.  At this point I feel like I'm touching just about everything!  lol  Who knew that I'd go from being irritated with Java to enjoying working with it so much.

 

Anyway, so that's what my life has been lately!  New job, new adventures, letting go of some of the old ... moving forward.  =)  Yes, I do still have some XEPs to write/propose on the backburner.  I just haven't gotten to the point where I need to write them.

2 Comments 0 References Permalink
3

When Worlds Collide

Posted by Daniel Henninger Apr 2, 2007

You know, when you are working by yourself on an open source project, your schedule is your own.  If you decide you don't want to work on it for a couple of months, that's your perogative.  At some level there's no rules what-so-ever aside from not doing things that will drive folk away from being interested in your project (assuming you care).  One of the biggest things that drives the project, however, is what -you- want.  When you are working on an open source project where you are teamed up with others, there's some checks and balances over what you do and your partners do.  However, at the end of the day, it's the same type of situation, you all decide what the focus of the project will be.  I don't like to put it like this, but no one has a "right" to your time except for you.

 

When you start working with a company on an open source projects, things change.  There are deadlines that the company is pushing for help drive your own timeline.  There are things they'd like to see happen that you may or may not agree with.  Instead of saying "well unless you submit a patch, it's not happening", you tend to work something out instead.  It's an interesting adjustment to "normal open source projects".

 

Do I dislike either?  No.  In fact I've quite enjoyed the experience of it.  It's taught me a few things that I wasn't aware of.  Like I was rather blind to some of the requirements that corporations ask for.  Some of the things they ask for I would typically have thought "that's ridiculous" with some of my other projects, but here I see a lot of folk bringing the same issue up and I start to discover that the issue is more commonplace than I would have assumed.  I'm not citing any examples here.  Just suffice to say there's things that having a broader knowledge of the corporate world has made me reconsider some of the decisions I might have made with other projects in the past.

 

So many thanks to Jive Software for giving me this additional experience that I wouldn't have gotten probably with PyAIMt and PyICQt.  =)  It's been fun and I hope it continues to be fun!

3 Comments 0 References Permalink
0

The problem with personal projects is just that, when the person in question gets interested in another project or busy or whatever, development stops.  This is what the current status of PyAIMt and PyICQt is.  I am having a lot of fun with the IM Gateway plugin for Wildfire, and as a result I don't feel interested in putting any time into PyAIMt and PyICQt.  Are these two dead now?  No.  I still have "things I'd like to do with them" in my head.  It's just most likely we'll see a 1.0 version of the plugin before I touch PyAIMt and PyICQt again.

 

One thing that the IM Gateway plugin has brought me is that I'm now quite comfortable working with other folk on the same source code.  That said, I'm trying to weigh the pros and cons of enlisting help with PyAIMt and PyICQt.  There are quite a few folk that are interested in using it, a few folk who submit me patches from time to time, and certainly general interest in the transports.  So my question posed is...  Are there folk out there who are fairly experienced python programmers who would be interested in becoming active developers of PyAIMt and PyICQt?  I am not handing off the project and will continue to be the project lead, and will continue to put development time into them as time permits.  Anyway, I have not yet decided on this, I'd just like to hear from folk who might be interested in contributing.  If I see some interest that'll help drive my decision.  =D

 

On a semi-related note, I continue to find java with an IDE to be fun and interesting.  I think working with java without an IDE would be maddening due to how long it takes to compile and test things in the environment I'm using it in, and it's certainly saved me a ridiculous amount of time in debugging stupid typos and crap.  The IM Gateway plugin itself is going pretty well but unfortunately there's a lot of work that involves working on support libraries as well.  The original developer of Java-JML turned over development to me so I've been working on that.  That's pretty fun, I know more about the MSN protocol now than I ever expected I'd know.  The Yahoo library is ... kind of a pain actually.  =/  Right now Yahoo is the biggest source of issues for me.  Joscar for AIM/ICQ is a damn fine library, but I want to move to using a more simple API and I can't seem to figure out how I use Joscar's simpler API.    Perhaps I should like... ask them instead of just blogging about it.  I tried figuring it out from Adium X but yeah...  =)  That's kind of a weird setup.  I need to work on implementing the old school ICQ authentication because, unfortunately, the "new style" AIM auth only works with newer accounts.  (how bizarre)  I've still got a lot to work on with IRC as right now it's a mightily talkative transport and I doubt most folk want to see all of that.  =)  My biggest issue at the moment is that I'm fighting with AJAX support in the web interface.  Trying to use DWR... seems like it should work fine... doesn't.  I wanted to figure this out on my own but it looks like I shall be deferring to the Jive folk to get it taken care of.  So many things to do.

 

So anyway.  Thinking back, I remember that the thing I thought was so awesome about XMPP is that the entire spec was written out and 'open'.  My first endeavour was that I like the Zephyr system from MIT and thought, based off the open protocol, that it would be neat to implement zwgc and friends except to communicate to Jabber/XMPP.  This formed into JWGC.  Transports came later, etc etc.  The great thing is that the openness of the protocol leads to a great feeling of being able to write your own client/server/whatever to learn how it all works and go from there.  The bad thing is that the openness of the protocol leads to a great feeling of being able to write your own client/server/whatever to learn how it all works and go from there.  =)  Now, I don't think this truly is a bad thing, but it does lead to a -lot- of starter projects written and then ditched.  I often see folk come jadmin and jdev asking about where to start in writing their own client/server/whatever, and typically they get a response of "why not just contribute to an existing project?".  If the person's goal is to just learn, starting from the ground up is not a bad way to go.  If the person's goal is to get a server/client up and running that has X feature that all of the servers don't have, contributing is definitely the better way to go.  What's the fine line between writing your own and not writing your own?  I certainly can't answer that.  Note that I think asking "why not just contribute..." is a good way to go about it because that encourages the person to say "well I just want to learn", at which point ok, go for it.  Or it encourages us to help point the person in the right direction.

0 Comments 0 References Permalink
0

Housecleaning

Posted by Daniel Henninger Sep 30, 2006

Why do I often find it so hard to clean up my roster?  Just about anyone who has ever talked to me sits on my roster forever and I typically only end up talking to them for one or two sessions and that's it.  What do I need them on my roster for?  It's just causing my server extra work every time I log in!

 

So anyway, I spent a good couple of hours here cleaning up my roster and now it's nice and small.  I'm not entirely pleased with Adium X's roster deletion handling because just about every time I deleted a roster item, it reappeared and I had to delete it again.  =/  That said, it's a beta, so what do I expect.  =)

 

Logging in is now lightning fast.  I know some folk take offense at being removed from a roster, but if I removed you, this gist of it is, we don't talk much, I have no reason to need to know when you are online and/or initiate regular chats with you.  Certainly doesn't mean I'm not willing to talk to you. 

 

Anyway, was kinda fun to do the housecleaning.  There's a couple of legacy network contacts I still need to boot, but that involves well....  finishing adding support for that in the IM Gateway plugin.  ;D  or rather, fixing it

 

I'm thinking about spending a little time and packaging up PyICQt and PyAIMt into 0.8 releases.  PyAIMt is more work because it means I'll be pulling over updates from PyICQt to PyAIMt, but hey, no worries.

 

I got to try out an eval version of Jabber XCP.  I will finally have something to test XCP support with with the Pys!  Yay!  Setting up XCP was not entirely trivial.  It took me about an hour and a half and about 80 pages of documentation.  I'm not sure how much of this was postgres sucking or not, but it definitely wasn't as easy a process as I expected.  That said, now that it's running, it's lightning fast.  (well it's also not handling the load of my real contact list, but still)  Anyway, thanks to the XCP folk for hooking me up with a copy to test against!  I've always hated supporting something I couldn't test myself. 

 

I've been finding that some of these java based tools for .. well all sorts of tasks .. are quite nice.  I like Jive's forum software quite a bit, I adore Fisheye... far more useful to me than websvn ever was.  In fact websvn was never really useful to me.  I also adore JIRA, though I must admit it's a little too "serious" for something I'd probably want to use with my Py transports.  I love it for the IM Gateway plugin though.  It's got a really nifty feel to it.  Something else I think is really neat is that it looks like a lot of the the folk that make such products "play nice together".  By that I mean, I see Jive Software (Jive Forums) using JIRA and Fisheye, Cenqua (Fisheye) using Jive Forums.. don't know if they use JIRA, the JIRA people using Jive Forums ... etc etc.  Same with IntelliJ... it's just really neat to see them all using each other products.  It's like one big product hug circle.  =)

 

I'm basically in charge of Java-JML nowadays.  The former developer doesn't have time for it anymore.  Sourceforge is still kinda similar to how I remember it, but they do appear to have a few neat new things.  =)  I like the project and am certainly cool with being in charge of it.  Will give me a better understanding of MSN anyway.  I've applied for an open source license of IntelliJ of my own so I can make use of it with non Jive projects.  At first I was tentative about this because I didn't want to start using a tool that like the original developer of java-jml couldn't use, but I based off the license, I could indeed share it with all other devs on the project.  That's very cool.  More importantly, I saw that the joscar folk and other such projects are using it, which gave me a lot of "ohhh  other similar projects are doing it, ok then" warm fuzzy.  =)

 

While this weekend has not really started off on a happy note, I think I might make it a release day and try to get a couple of things released today.

0 Comments 0 References Permalink
4

Today we released the first beta version of the IM Gateway plugin for Wildfire.  I'm quite excited to have a release out, but also a little pensive as I always am with a release.  This one I'm expecting quite a lot of bug reports on because well, it's an early beta and that is the way of things.  I wanted to get a version out soon-ish so that folk could play with it and could start getting me some solid bug reports to work from.  I never run into the same problems my users run into.    Always interesting to see things like...  "my friend is using ICQ version 1 and I can't receive messages from him!"

 

Anyway, I took a break from developing after fixing a last couple of bugs this weekend to make sure that I didn't get involved in something that would temporarily delay the release.  Spent some time on PyICQ-t in the meantime.  Upgraded it to use James's twistfix stuff and also to kill the pubsub support I was working on, since it wasn't useful anymore after the recent updates to PEP.  I would like to put out a new release of that soon.  My typical "get everyone on the same page" release.  Besides, right now they don't work with Twisted 2.4.  =/  (right now meaning, the current releases)

 

I have been feeling like crap for about a week so I think I may try to calm it down and just relax until I am better.  No sense in making myself sicker.  Besides, that will give folk time to comment.  In the meantime I will do something leisurely like.. get out a release of the Pys.  lol  Why is that leisurely?  Well because it's already done, it's just a matter of I need to put out the release.  PyAIMt will be somewhat different in that I need to port over my bazillion changes to it.  I may not dive into that until I'm feeling better.  Then again, honestly, it's kinda mindless work, so it might help to get my mind off being sick.

4 Comments 0 References Permalink
4

The Wildfire gateway plugin is coming along.  Not as fast as I'd like at the moment, but I keep running into minor stumbling blocks outside the context of the actual plugin (read: getting sick, that sort of thing).  That said, I'm switching internal libraries for MSN.  The one I was using does not behave well in a multi-user environment.  Furthermore, it had some kind of annoying debugging that there wasn't an easy way to turn off.  I've switched to a more recent looking library.  It was between that and another one whose documentation was all in... I believe Korean.  All things considered, the function call names were in english, so I could have muddled through, but if both look good, why not choose the one I can read.  We'll see how that goes.  This one requires a little more knowledge of the underlying concepts of MSN's IM.  It'll be fine.  =)

 

As for the Py's, I've done nothing with them for a bit now.  The pubsub stuff I was working on was causing some file system problems and, on top of that, the recent updates to pep makes my work semi-useless.  No worries, I'm glad to see it doable in a much nicer fashion.  James is working hard on some wonderful new revampings to the underlying code for PyMSNt that I'm looking forward to pulling on over to PyICQt and PyAIMt.  I will, however, watch and wait until things look like they're good to go.  I don't have a gauge for this, so I'll just post it aloud here...  do people want me to put out a PyICQ-t and PyAIM-t with all of my current updates that's an actual release?  (underlying code will be cleaned up to lose the pubsub stuff first if I do that)  Otherwise, I'll be waiting for some bigger updates.

 

It's interesting to note that looking at code in one language sometimes helps you clarify concepts in your head  in another.  Just the way joscar does a few things made me go "oohhhh  yeah I could do that with pyaim as well".  shrug  I thought it was neat...

4 Comments 0 References Permalink
0

Well I'll tell ya...  Daniel has been busy with a side project that he is not going into here just yet.  I apologize for the lack of work on PyICQt and PyAIMt lately, but don't worry, I'll be back to them at some point.  =)

 

Adium X is looking better and better with every beta release.  Great job guys!  It remains my primary chat client.  Spark, on the other hand, has become my "I don't want to be bothered" client.  ;D  (since it only logs into one place and overall I really like the interface)  Psi by far remains my favorite dev/test client.  Some would argue with me, but if I were to call anything the definitive/most extensive implementation of a Jabber client, it would be Psi.  (especially the dev tree)

 

I've been busy with a lot of personal/home projects as well lately.  So much to do.  =)  Just wanted to assure people that I am not ignoring my other projects.  ;D  They're just on a short break!

0 Comments 0 References Permalink
14

I've been racking my brain over a bizarre problem I've run into.  I may have posted about it before but I want to post fresh about it regardless.

 

There is an occasional problem that occurs with PyICQt and PyAIMt (specifically.. oscar.py) where outgoing messages are "delayed by one".  By that I mean, lets say you send a message.  It does not leave the machine.  However, when you go to type another message, the typing notification triggers the message to leave, and now the typing notification is stuck.  I have watched these events come into oscar.py, go through everything they need to go through, and "leave my code" via self.transport.write.  At the same time, I'm sitting here watching the network traffic coming from the box and nothing leaves.  (until the next event occurs)  It's only outgoing events too.

 

So here's some misc notes I've made about this:

 

- does not occur with Twisted 1.3.0, started happening in Twisted 2.*

- does not appear to occur with the epoll reactor, but I haven't tested this thoroughly

- thought it was only the poll reactor, but that doesn't appear to be true

- occurs with python 2.2 - 2.4

- can occur on both mac os x and linux

 

I had a thought the other day that perhaps I'm accidentally overriding some important variable that is used by a protocol.Protocol, but that does not appear to be the case.  I did notice that I'm using ClientCreator which in Twisted 1.3.0 was listed as unstable.  Seems to not be in Twisted 2.*.  However, I don't really see anything different there.

 

I find it highly unlikely that my code is NOT causing this in some way, but something beyond my code is where the problem is really occuring.  I would expect to see a lot of posts on the twisted lists if it weren't being caused by my code in some way.

 

Bah, I have no idea what's going on.  I don't have hard facts on this yet, but I believe that it doesn't always "start" like this.  Like occasionally I'll be fine, no delay, and then it will 'come on' at some point.  Then again, maybe it's just that I had events going at the time that were triggering everything to run correctly.

 

My original thought was that I wasn't finishing off my packets to OSCAR in some way and OSCAR was sitting there waiting for me to finish my statement, so to speak.  However, I've been able to observe the messages never leaving in the first place.  So ... bah.

 

I don't feel like I have enough hard facts to put together to bug the twisted community with.  I feel like I'd be saying "well there's something wrong, but I can't prove it".  How useful is that?  =/

 

I don't understand why Twisted 1.3.0 doesn't have this problem.  That part is extremely weird to me.

14 Comments 0 References Permalink
0

I have just released minor code change updates for PyICQt and PyAIMt.  These updates fix a security hole in the MySQL XDB backend.  I highly recommend you update immediately if you are using the MySQL XDB backend.  If you are not, then you can ignore these releases.

 

I've been trying to make it a personal policy not to post every release on my blog unless I simply have some blog type observations to make about the releases.  However, this one is a security release set and I want to get the word out as much as I can.

0 Comments 0 References Permalink
0

Idle Time

Posted by Daniel Henninger May 2, 2006

On a mild aside before I get into this, I added a little project tracker to my blog.  Pretty nice.  Obviously I'm always working on JWGC (to a lesser extent lately), PyAIM, and PyICQ, but I often have little side project spinoffs or "major" things I want to do with the transports or JWGC.  I dunno, they seem to fit well into a little mini project tracker.  =)

 

Anyway, so people keep asking me to implement idle status in a better way.  Currently I am aware of only a couple of methods of doing this:

 

1) jabber:iq:last, requires polling this attribute regularly if you want to keep up with idle time, eww

2) adding the idle time to a presence status string, useful if you are reading said status field, not useful otherwose

3) simply setting the status to away, and extended away, as the person gets more and more idle... many folk don't like this way of handling idle.  I don't either.  I think idle is 'it's own thing'

 

So my proposal is this...  PEP seems to be the way and the light nowadays.  I believe idle status fits well into the pubsub model.  If you want to know the person's idle status, you subscribe to it, and you get update as the client itself 'sends' updates.  More importantly, it doesn't have to be updated much.  If your client decides that you are idle, it sets your PEP idle status to the timestamp when you started being idle.  At that point, it doesn't have to be updated until you come back.  Pretty efficient if you ask me.  Anyway, I believe this is a good way to go and on top of that, it would allow idle and away and such to be independent of each other.  You could easily see Away but only idle for 5 minutes.  Or away but idle for 3 days.  You get the idea.  Clients could easily handle this and set a cute little idle icon or something.  So I'm aiming to write up a JEP for this and submit it.

0 Comments 0 References Permalink
0

PyAIM and PyICQ have bother undergone a lot of fixes recently.  The only problem is, I have noticed that something is wrong with the buddy icon communication between two people.  That being . . . . I send and receive the buddy icon -every time- a message is sent.  (yikes!)  It's supposed to be storing a hash of the icon so it doesn't ask for it again.  Something is clearly wrong with the hash...  I want to fix this before I put out either release because it's horrible horrible horrible abuse of bandwidth to just send those every time.  =/  Stay tuned...

0 Comments 0 References Permalink
1

Well, after long last I released 0.7.  I was very hesitant to do so as there are still a slew of bug reports open.  Thing is, it's hard to tell if they are still occuring.  I wanted to get everyone on the same page.  More importantly, I wanted more folk to be able to enjoy the new features.  Here's hoping it does not take too heavy of a beatdown of new bug reports.  =)  Typically right after a release is when I see a slew of new big bug reports, so I'm ready for them.  Don't be surprised if there's a 0.7a out soonish, but I believe all of the major issues are worked out and I'm comfortable that I did the right thing by releasing it.  I don't know, I'm always nervous putting out a new release.

1 Comments 0 References Permalink
0

Well, I just got the other style buddy icons working.  Wouldn't want them to bother using the same style of checksum, would we?    Anyway, I do have a fair number of open bugs but I need to get PyICQ on a "everyone on the same page" release.  Besides, people have been waiting on a new version for a while now.  On the todo list are:

 

- Add support for JIT spool format (legacyjit driver)

- Update web interface admin pieces to be locked down to only admins

- Various doc updates here and there

 

Other than that, we're almost there.  Woot!

0 Comments 0 References Permalink
0

Why is PyICQ's release taking so long?

 

Well, primarily because avatars and ICQ aren't as functional.  As I mentioned earlier, there's other entirely different methods of handling icons and I am reluctant to release a new version until I have avatars happy.  There's plenty of bugs to tackle.  =(

 

Well ok, then why are you working on the web interface?

 

Because I'm frustrated with the avatars are the moment and want to do something fun for a bit.  =)  I'll get back to avatars soon.  The web interface isn't taking that long.  My goal is to integrate WebReg into a built-in interface that comes with the transport.  This will also provide a way for people without a full-service jabber client to register with the transport.

 

How are the encoding problems coming?

 

Sadly, it's hard to tell.  Since I don't speak or write in other languages, it's typically difficult for me to tell if it's working correctly until someone else tells me it's busted.  It seems like every time I get the UTF support going good, I've broken something else in the process.

 

You were considering adding groupchat back... any luck?

 

No.  I thought maybe I could connect to AIM chatrooms or something.  Does not appear to work.  I tried multi-chat functionality in the real ICQ 5 client and well, it's not "real" chat support.  It's "we're going to take you to this flash program that's basically IRC".  Whatever works . . . but I think I'll be yanking that support back out.

 

Any other big gotchas?

 

ICQ used to only be plain text messages.  Period.  However as of I think ICQ 5 they now have html-ified messages.  This makes parsing the messages very confusing -except- that I did discover that there's a flag that's attached to the message to say "hey, this is html".

 

Any other big noteworthy items?

 

Robert Quattlebaum hooked me up with a wonderful patch set to fix up xhtml support and a lot of other fixes.  I need to massage it into both the PyAIM and PyICQ code.

 

Why massage?

 

Well, parts of his changes involve fixing the tlib pieces.  Most of tlib is "stuff that was busted in Twisted 1 that we had to fix".  Twisted 2 fixed things and we started using the real pieces.   So his patches to the tlib stuff I have to evaluate to make sure things are functional under Twisted 2.  I don't really want to have a "stub Twisted piece" again, so ... well we'll see.  I always massage in patches anyway.  There's often minor tweaks I do here and there, or I move functionality around.  I am trying to be very conscious of what should go in oscar.py and what should go in the transport, because oscar.py -is- still meant to go back into Twisted some day.

 

Any estimate on a release?

 

Not really, but I'm hoping for soon.  I may put out a "lots of improvements but not everything is fixed" release at some point.  Just to get more people on the same page, get us all working with the same thing, get those new features out.  (there's a lot of them)

 

Whatcha been doing with the web interface anyway?

 

Well, I used to have a "websecret" config option and there was one and only one password that could be used.  What I've done is, with the help of thetofu's code from palaver, switched the authentication to be "auth against a jabber server".  My goal here is that you can log in as yourself, if you are an admin you see admin stuff, but normally you just see some info about your account -or- you get to register from the web form and not have to deal with 8 bazillion "hey, wanna accept this buddy into your roster?".  Before I go too far into this I think I'll enforce SSL.  Anyway, I think this'll be pretty fun.  I also want to make it so an admin could change config options and shut down/start up the transport itself while leaving the web interface going.  Don't think that will be too hard.

0 Comments 0 References Permalink
2

I can't begin to express my dismay at the number of ways buddy icons are handled in the world of OSCAR.  There are different variations, and I'm going to attempt to type them here while they are in my head so that I can pick this up tomorrow.  So here goes...

 

First of all, we have the extended status handling of buddy icons.  With this method, we effectively upload a checksum of our icon to our buddy list.  The OSCAR servers then say, via extended status "about yourself, to yourself" that you need to upload said icon, thanks.  Once you've done this, the OSCAR servers proceed to 'tell the world' (I guess everyone in your buddy list) that you have a new buddy icon via extended status.  This is what I have implemented in PyAIM and PyICQ right now.

 

Then there's an odd format that involves instant messaging.  I say odd because I'm not clear on a lot of it.  Ok so, there are two flags that can be attached to a message.  One of them says "I want your icon!".  Another ways "I have an icon, and it has this cksum".  So I'm not sure if the person on the other end is supposed to read this latter one and go "ok well, I'm going to get it from the buddy icon server" or....

 

You can apparently send an icon directly to a user (via the server).  So is this a direct result of #2?  Good question.  This seems to trigger in gaim when someone has that "I want your icon!" flag.  But it also appears that clients will ask for this over and over so it's up to you to track that you did send this punk your icon and you aren't going to send it again.

 

So how the hell does this relate to the buddy icon server oriented stuff?  It seems like they.. well conflict is the wrong word.  But they are kinda redundant.  Looks like more study of the gaim source code is necessary.  I definitely need to start including these flags though, and catching these direct icon sends.  Man, what a confusing mess.  =)  There does not appear to be a direct way to go "hey, gimme your icon" that can happen behind the scenes.  It looks like either you are going to get a notification via extended status, or you are going to ask for it via an instant message, or you can get over it.  =/  Unless there's -yet another mechanism- that I am missing.

2 Comments 0 References Permalink
1 2 Previous Next