Yahoo chat room support is now in trunk. Many thanks to Kai (Kay) Zhang for this effort, which he made as part of his Fedora Summer Coding project. The code still needs more testing, so I also need to start working on the chat room implementation in ayttm.
I expected git-svn to commit the patchset along with the history in Kay's git repository, but unfortunately that did not happen. So those who want to see the history of commits for this may take a look at his libyahoo2 github repository
The FAD (Fedora Activity Day) was announced over a month ago with an intention to get some real work done during an event. I really only had a chance to participate in 1/4th of the FAD (1/2 day on Saturday), since I had to fly to Bangalore on Saturday evening to spend the weekend (or whatever was left of it) with family. But that was enough to get whatever I wanted out of the event.
Being pretty much a newcomer into the Fedora community, there wasn't much that I could think of to directly contribute but I wanted to do something. I really only maintain 1 package, which also does not have much traffic, so I wasn't exactly brimming with ideas. Rahul helped me there by asking me to do an Autotools workshop. I was also looking forward to meeting some of the guys I had met at FOSS.in last year; Susmit, Hiemanshu and Sayamindu. I could not meet Hiemanshu (did he come at all?), but it was good to meet Susmit and Sayamindu after quite a long time.
We started the day with my autotools workshop; I hope at least someone found it useful. I demonstrated the process of autotoolizing a simple C program using the same example I used during my Fedora classroom session earlier this month: linkc. The main reason I keep choosing this program is that I am too lazy to find or write anything on my own. The other reason is that the program helps to cover quite a few things at one go -- it is small, it has an external dependency, a subdirectory and some distributable files. So all those things win over the fact that the app just doesn't work as advertised. Oh well...
Once the only "session" of the day was over, everyone announced their aims for the two days while Sankarshan distributed some swag (t-shirts, stickers and buttons). After that it was pretty much everyone working on their own stuff. Me too.
Only a couple of days before FAD, Ray van Dolson added me as a co-maintainer for libyahoo2 in Fedora so that we could share the workload of doing releases/bug fixes. After discussion with him, I decided to do a libyahoo2 release into rawhide during the event. So I finally had something that I could do, which was much closer to Fedora.
I knew that the release would break freehoo, a console messenger for yahoo since libyahoo2 1.0.0 broke all backward compatibility, so I set about fixing that. The result was a bug report with a patch to fix freehoo to build with the latest libyahoo2. Finally, I also changed ayttm to dynamically link against libyahoo2 instead of cloning the code base all the time. There was absolutely no incentive in maintaining two code bases for it, so it finally had to go.
By the time the ayttm change was done, it was time to leave. But before that, Kushal asked me to take a look at libraw to see if I could pitch in with something there. So I will be looking at autotoolizing it and packaging it for Fedora. I was supposed to do it today, but all of my day was spent in playing catch-up with work at my day job. Maybe I'll have more time tomorrow for it.
I have finally got myself an account on github. My first fork (obviously) is ayttm. Here I'll be putting in all the major destructive changes I cannot put into the main repository right away since even I'm not sure if it is a good idea in the first place. The first commit is the revamped conversation stuff. Note that chat_room.* is out and conversation.* is in. And a lot of code has changed. And a lot of things have broken.
The last day of FOSS.in. Kartik wakes me up saying "You have to pack, get up". I got up, went across the hall and rang Ram2's bell a few times to wake him up.
So I packed up my stuff and got ready. This time I did not forget to wear my fedora. We had our breakfast and realized that a number of people had left early, either for the venue or to meet someone in the city. When we went out to our bus, we found that it was not there. We started talking to rickshaw drivers and bargaining with them when one guy came up to us saying that he was here to take some people from the hotel to NIMHANS. That was us. But we weren't sure, so we had him call his boss and confirmed that it was indeed us.
Susmit: "Well, if he wanted to drop us to the venue then why are we wasting time calling people? Why not just pile into the bus and go ;)".
So we finally reached the venue, only to find that it was almost deserted. People started crawling in quite late and the place eventually filled up. I sat down with Kital at the Fedora booth and fixed my package submission for Fedora. At 12:00 I went up to Lennart's FSH talk, but did not find it as useful as the previous talk. He could just have combined this one with the last talk and done one marathon talk, but I guess that would have been too long. Anyway, it was time for lunch.
I was pretty listless after lunch because there wasn't enough time to hack on anything significant, so I decided to take a nap at the booth. I woke up to find that I had only 20 minutes to say good bye to all the people I came to know during these 5 days. Wait, a phone call. An automated message telling me that my flight had been delayed by half an hour. Well, I had some more time now, so I went up to the hack centre to check out who was doing what. I bugged Gopal for the Speaker kit and he finally shooed me off with some stickers. I told him that the coordinators had done a great job, something I managed to notice this time since I was not sitting in the corner and hacking like last year.
While I was roaming about, I entered the Gnome POTD and saw Oliviere Crete giving a talk on Telepathy. I sat down and listened. And I have to admit that I was quite impressed with the layout. I remember wondering why I was working on getting ayttm and libyahoo2 up to speed when such a wonderful effort was underway to do messaging the *right* way. Now that I think of it though, it is not the only right way to do things. While ayttm may not be as extensible as the Telepathy framework+Empathy, etc, it has a totally different use case. To be able to fit into a sub-1 MB package and work well with minimal dependencies. And it can work on *BSD. The workout participation for ayttm unfortunately fizzled out since it was pulled off the itinerary and it is not popular or cool enough for people to want to contribute to it. But I managed to make some headway into the chat window stuff and will hopefully get that out of the way soon. Next week I plan to work on the webcam stuff for yahoo at Rahul's request. OK, I digressed.
I had to leave the talk halfway since I was getting late. I stepped out of the hall and managed to say goodbye to everyone I recognized and could catch hold of. I managed to find Pradeepto just as I hauled my bags up to leave. We said our goodbyes and I left for the gate, trying to find a rickshaw. But what I found was a bus, a BIAS-7 going to the airport :)
So I'm now sitting in the airport lounge reflecting back on one of the best events I've attended so far. This was very special for me because I got to know a lot of very good guys: Pradeepto, Aanjhan, Sayamindu, Joerg, Gopal, Susmit and so many others. The best part of the week was the BoF sessions all of us would have in Pradeepto's room, talking about foobar and sharing stories. I did not have too many uber hacks to talk about through this week, but a lot of cool incidents that seemed to make a big difference to the way I thought about the Indian FOSS movement and the people involved.
This was fun. I hope I get to do this more often.
The penultimate day of FOSS.in/2009. And me and Kartik got up even later than usual. We managed to get ready quickly and reach on time for breakfast, only to realize that practically everyone else was late. We left for the venue (eventually) at about 10:30. Philip had already arrived at the venue and he asked me about the ayttm workout, which was to happen today. I thought it was cancelled, but we decided to go for it anyway. So we spent the time before lunch in the hack centre with Kartik and Ram 2 going about their Debian workout and Philip scp'ing his latex presentation back and forth on his server since he was stuck with his Mac.
I came up to the hack centre to work on ayttm but saw Russell Nelson teaching a bunch of people how to solder stuff. This got me excited since I remembered my my childhood, with me trying to make some weird stuff with wires and pins (yes, a couple of them exploded too :P) and trying to "repair" stuff, eventually breaking them. So I had to get up and see what he was doing. That way, I would be putting the soldering iron my wife recently got me, to constructive use.
Russell explained some basics of soldering and then went on to show a small example of attaching an LED and resistor to a small microcontroller board. I stuck around to see how soldering was done and then finally decided to skip the software part and get back to ayttm.
We sat down to hack again after lunch, but Philip vanished after a while, probably to prepare for his talk. I continued trying to get some stuff together while we also battled with a relatively unreliable wireless connection. The organisers finally pulled down the wireless in the hack centre since they were overloaded. I spent the rest of the time mucking about with nothing in particular. All the while, it was quite entertaining listening to Rahul Sundaram, Kartik and Ram2 discussing Debian and Fedora release cycles.
Finally it was time for Philip's talk. While I got up to go down to the hall, we were joined by a bearded guy who came up to talk to Ram2. I casually looked at his tag and realized that he was Baishampayan Ghose. I have only probably conversed with him or read his emails on mailing lists or heard about him, so meeting him in person quite suddenly was a surprise, which kinda left me a bit tongue-tied ;). He recognised me instantly (probably due to the tag) and became the first person other than Philip and Kartik to ask me about ayttm/libyahoo2 :). We then walked down to the hall to attend Philip's "Shut up and Hack" talk.
I thoroughly enjoyed the talk, mainly due to the spontaneity. He basically talked about reasons for which hackers hack. Not just software hackers, he talked about hackers in general. He then went on to make some useless and some other useful little snippets of code to explain how one could hack. The point was to not call a committee to decide when, where and how to scratch an itch; just scratch it now.
Bluesmoon was followed by Blues before Sunrise, which was strictly OK, because of which I walked out after the first few songs. We had a fun time with Himanshu and Kartik finally getting the better of Rahul Sundaram in pulling his leg. Pradeepto was lying down in a corner and soon after, everyone was gathered up around him and were chatting away. Gopal came up to chat too and once again managed to call me the "bakra who Philip caught to work on ayttm" :P. He had said exactly the same thing at last years FOSS.in. It turns out that Philip had asked Gopal if he could contribute to ayttm, which Gopal was able to conveniently turn down since he soon joined Yahoo! :P
All this was followed by a speakers dinner at the hotel, which was quite a lot of fun too. Kushal had 7 bowls of soup till the time I was hanging around and was probably looking to have more. There were occasional shouts of "PulseAudio sucks!", "PulseAudio rocks!", "KDE sucks" and "Lenny rocks!" just to pull each others legs. It was quite cool to watch a lot of people get a little drunk on beer and having fun in general. Me, Kartik, Aanjhan, Ram2 and Pradeepto then came down to Pradeepto's room and were chatting about foobar right up to about half an hour ago. Now here I am sitting in the hotel room with Kartik fast asleep. I'll go to sleep now.
This has turned out to be a long post. Yes, it was quite a long day.
FOSS.in begins on Tuesday next week at Bangalore. I will be conducting two workouts, one on Ayttm: Face Lifts, Porting and Hacks and Libyahoo2: Getting up to speed. As of now, the libyahoo2 workout is set for Day 1 and Ayttm is set for Day 4. This means I will miss the Debian POTD talks and workouts, which I really wanted to attend. Also, Philip has his Shut up and hack workout scheduled on Day 4 too, so we may have to try for a reschedule for either ayttm or shut-up-and-hack.
I've also started hacking on the chat windows stuff in ayttm to make them the way I want them to be. If I'm not done with them by the time I get to FOSS.in, I'll most likely continue hacking on it during the event and/or during the Ayttm workout. Those who like the dirty details may read on.
The current chat windows and chat room code is slightly bulky and a lot of code is duplicated. Also, the chat logic and UI stuff is all mixed up, which makes reading code difficult in some places. I'm trying to change this into a slightly different model. Introducing Conversation, which defines pretty much from individual chats to conferences to chat rooms. This component will be responsible for all chat logic. This in turn simplifies my ChatRoom stuff since it is just a buddy list more than the ChatWindow. Also, both ChatWindow and ChatRoom will only be passing events to Conversation and dumping HTML messages (from Conversation) to their respective chat boxes. I'm aiming to reduce the code size as well as build in some extensibility (service specific toolbar buttons for example) as a result of this rewrite. Another unintended result would be a slightly reworked UI. Read the ayttm journal or follow the ayttm-devel mailing list to know what's going on there.