Sunday, March 25, 2007

My first open source code change

For a person who has used open source for 7 years, and given the fact that I've been a programmer, it is a big shame that I'd never programmed open source. It all changed last week.

Our department email server used Postfix aliases, but I wanted to configure something that doesn't require a super-user access whenever anyone wanted to add/modify the membership. In other words, I wanted to disintermediate the sysad, and give power to those people who actually take the decisions. If there is a new visiting faculty, the office should be able to change the faculty list membership, rather than wait for the sysad, who might have more important things to do. Every email to the respective classes, or to the faculty or to staff, or to the alumni, all had to go through this software. After investigating a bit, I installed GNU Mailman to handle the aliases.

Immediately, people began to report problems. All the vacation/bounce messages got sent to the list administrator (that is, me) and not to the person who sent the email. This meant that the person who sent the email didn't even know whether the recipient had actually received the email or not. And complaints kept pouring in, especially from the alumni team, till my lazy self couldn't tolerate it much longer.

My objective was to use the lists as a transparent form of aliasing. For instance, second-year must send emails to all students in their second year. Nobody wants to know about the mailing list manager. I wanted to ensure that the sender of the mail is not changed - Mailman always changes "Sender" to -bounces, so that it becomes a catch-all filter for all the bounces and hopes that clients recognize "Reply-To" header to send replies. I absolutely didn't need mailman to overwrite actionable mail headers.

I found out there was no configuration option for what I wanted. On the mailman mailing lists, people were worried about RFC 2822 interpretation, and hence didn't want to do anything. I'd implemented RFC 821/822 (previous avatar of the above RFC) as a course project way back in 2002, but I didn't have time to go over the new RFC again - not even in the final month in a b-school :)

As always, the RFC had (this is my guess) a few assumptions which didn't apply to my case. It assumed that I would be running a large mailing list (like LKML for instance) of people not knowing each other. Therefore, bounces should go to the moderator or list administrator. Having read the RFCs on DNS, HTTP, HTTP Cookies from start to end, top to bottom, and reverse, and having seen first-hand the problems of a non-RFC compliant browsers during my professional career, I could not under-estimate the effects of RFC violations. But, what the heck, I've got a problem to solve, and politicking about some stupid RFC didn't solve the problem. Violating RFC is not a blasphemy. Take, for instance, the case of HTTP 302 redirect. Or the fact that despite RFC 2109, nobody is sure whether to use Netscape cookies or Version 1 cookies. Thus emboldened, I decided to to do some code changes.

My incredible confidence (some might call it arrogance) as an erstwhile kernel/network programmer and the stupid courage to take on a foreign language (Mailman is written in Python) helped in getting started. After a couple of grep's, I narrowed down on the offending code segment. After a couple of glances, I could immediately understand that I just had to change one function argument when calling deliverfunc in Process(): change the envsender (the Envelope sender) to origsender (the original sender). Though this was on a live functioning system handling more than 5K emails per day (including spams), I just went ahead and did the change. Problem solved. Next thing is to get on the mailman mailing lists and tell people about this.

This was my first practical non-commercial code change. It wasn't much. It is probably very trivial. But as Neil Armstrong said "one small step for ..." - I wouldn't complete it. Maybe I should do some open source coding as a hobby. Open source programming must also be done by users - it is too serious a thing to be done by just programmers.

Now, let me start studying for the mid-term in World Class Manufacturing Strategies course tomorrow ...

Labels: , , , , , , , , ,

Tuesday, March 13, 2007

The IIT LAN Ban Saga

Unlike other things in IIT, the LAN Ban issue didn't die ... It was supposed to have been effective on Feb 26th, but like all other things in IIT, it started a bit late. That's one thing about IIT: outside the campus, people run faster than a local, but inside, you enter into a time/culture-warp. The "IIT culture" is so different - people wearing jeans, t-shirts and chappals going fashionably late to the class, and this considered as norm.

The DoSA (Dean of Student Affairs, in IIT lingo :-) seems to have taken this up as a personal crusade. The suicides of a couple of IIT students are mentioned in the same breath, so probably, he was under pressure to be seen as doing something.

My view hasn't changed much - the AOE folks started to play cards yesterday night, and for that, they all had to come to a single room. If the "authorities" are looking for more social interaction, they got it. It appears that IIMs too have the problem. I personally have met quite a few depressed people who really have fun when they go into others' rooms. My hostel, hostel 13 is built in a way that makes socializing more forbidding, as compared to the older hostels. The empty wings are depressing.

The departmental situation isn't much better. Since everyone has a computer/laptop in the hostels, the libraries and department labs, the traditional social places, aren't used, and hence not maintained. People try to rush to the hostels after classes. In all projects that we do (and we do quite a lot), we go online for any paper or journal access. Why bother to go to the library ? I really can't understand how people did projects before Google! Consequently, socializing (how much ever little it may be) happens only in hostels (and on Orkut), and therefore, the interaction among the PGs, UGs and PhDs is very low, since we all stay in different hostels.

This is similar to the corporate debate on cabins v/s cubicles for employees. When I joined my job, there was a cabin system, and I always felt a bit insecure about what was going on behind the closed doors (oh, not that way): were they leaving me out of a deep technical discussion, etc. When we shifted the office, we had a cubicle system for everyone (including the GM), so there was an incredible feeling of camaraderie. Though the distractions were high and irritating, I think our team started being more transparent and helping out each other, even if we didn't ask for it. People became more approachable. The feeling of transparency more than offset the bad effects of the breaks in concentration.

So, in a limited way, the "LAN Ban" is a good thing.

On the other hand, if the objective is to get people to attend classes, then the move is pretty stupid. Despite the hype, a lot of the profs are pretty ordinary (bet the profs think we are ordinary too). The classrooms are huge communal dormitories. It is really tough: how are you motivated to teach students, who stare at you glassy-eyed ? Really, the boot is on the other leg - most of what the profs teach is present in the books or can be got from the Net, so why bother attending classes ? Very few profs are worth attending. Very few can teach what is not in the books.

In the meantime, a lot of noise is being generated in the blogosphere: the issue got dugg. My blog got linked to the DNA India front-page. Once again, the IIT newsgroups have been bombarded with tons of posts.

One thing is certain: though a review has been promised after a month, a lot of sensitive egos are on the line. I don't think there is any going back on this decision, how much ever people try to raise hell. Of course, since I'll be finishing my MBA in scarcely 45 days, I really wouldn't mind a 24-hour ban after I leave :P

Labels: , , , , , , ,

Saturday, March 03, 2007

Budgets and hypocrisy

Another budget comes and goes. New taxes, new exemptions, but same old story: industries whining about extra tax, salaried class whining about extra tax, corporate leaders (who should in fact know better) telling their sob story to the press ... nothing really has changed.

Funny enough, everybody professes to be a patriot and a patron of social equality, etc. Yet, they balk at paying extra taxes. Of course, the government should provide universal education, eliminate poverty, replace all buses that we burnt in riots, compensate victims of our apathy, provide modern infrastructure, take care of street lights (but first somehow become aware that the tube lights are not functional in first place), increase pay to the underpaid staff, and they better do it - or else, we'll take care of them next time when they come visiting houses begging for votes.

And how is the poor government going to do all that ? I don't know and I don't care - it is not my problem. But no, we will not give the government a single paisa more.

Of course they rationalize it: It is not that we don't want to pay taxes .. Don't you know that our taxes fund corrupt government servants ? No, obviously, I've never bribed a single government official in my entire life, so, corruption is only between neighbours and babus.

No wonder, we are where we are ...

Labels: , , , ,