- Smasher - This plugin was developed as a simple tool to authenticate with the boundary firewalls used on the IBM network. It was my first ever Sametime plugin, in fact it was originally developed before the Sametime client adopted a plugin architecture. The smasher development is fully described in an earlier blog posting.
- Auto-Hello - Many people choose to start Sametime chats by sending a simple message Hi or Hello. to which I must reply Hello before the conversation really starts. I developed the Auto-Hello plugin to automate this process. After I released the first version, I learned that Sebastian Thomischke had already developed a similar plug-in so I collaborated with him on this plugin. This plugin never have many active users and when Sebastian left IBM the source code was lost.
- Proxy Buddies - When the person you want to chat with is not on-line, you must find someone else to chat with. For Hackday 4, I worked with Mark Wallace to develop the proxy buddies plugin which was an automated utility to select someone else to chat with. It was implemented in a modular way where separate plugins could provide different mechanisms for finding alternative buddies to chat with. We developed plugins which would provide lists based upon:
- Looking for on-line people within the target person's management chain
- Looking for people in the same department as the target person
- Searching for people within the target's person's social network by using the SONAR API
- Message Attendant - some instant messaging systems (but not Sametime) provide a capability of sending instant messages to people who are not currently on-line. I was thinking about ways to achieve the same functionality in Sametime and I came up with a secure mechanism whereby a Sametime user could provide limited delegated authority to a bot program to take messages on their behalf when they are not online. This mechanism was subsequently the subject of a patent application, so I can't describe too much detail here.
- IMQ (or Instant Message Queue) - was another attempt to tackle the issue of sending messages to people who are not on-line. It works by allowing people to queue up messages so that they will be automatically delivered when the person was next on-line. This plugin received a mixed reaction. Some people thought it was very useful function, but others thought that it was a potential source of SPIM. After hearing the concerns, I added features to stop the inappropriate use of the plugin. However, the feature was never adopted into the core product because of the mixed reactions.
- MicroBlogCentral/Status Updater - My idea for a Hackday 6.5 project was to develop a Sametime plugin which would be able to post to several micro-blog sites at once. When I did investigation, I found out that Jessica Ramirez had already developed such a plugin, so instead I decided to team up with her to extend her plugin. A few other people joined in with us and the resultant project is described in detail by me in an earlier blog post. A version of the plugin with slightly reduced functionality was subsequently released under an open source license through OpenNTF.
- Persistent Note store - A customer was developing a Sametime extension with the Sametime Connect Toolkit, but they ran into problems when they cound that they needed to use functions which are only available from the Sametime Java Toolkit. They contacted me through their support representative to ask if it was possible to mix the two toolkits in a single extension. I advised them that such mixing was possible and in order to illustrate the method, I sent them code that extended the BuddyNote sample that ships with the Sametime Connect Toolkit to store the notes on the Sametime server instead of the local file system (this was only possible by using the APIs provided in the Sametime Java Toolkit). This was subsequently published in an article on the DeveloperWorks site.
Friday, October 22, 2010
My Sametime Plugin Portifolio
Thursday, September 23, 2010
Open Source Software (OSS) Barcamp coming this weekend
The Open Source Software (OSS) Barcamps are "un-conference" type events that are held every 6 months or so to promote all things relating to open source software. I have attended a few of these and always found them to be very interesting. IBM hosted the last event in April of this year, but I was not able to attend due to injury. The next event is scheduled to take place in University College Dublin this coming weekend.
Here is a copy of the presentation I intend to deliver:
It is not just me that will be speaking. In fact, there is such an interesting set of speakers wanting to speak that they extended the schedule to two parallel tracks over 2 days (click here for details). I strongly encourage anyone based in Ireland with an interest in open source software to attend - you will hear many interesting talks and you will also meet many like minded enthusiasts. Registration is is free, but you must apply for a ticket in advance (last time they sold out but I believe there are still some tickets available this time due to a larger venue).
I will be involved in providing AV support for the event. We hope to record some of the talks and post them on-line afterwards for people who cannot make it in person. We may even stream some video live on a newly created OSSBarCamp channel on Ustream. However, I am just learning how to use this platform so I am not making any promises.
Thursday, July 15, 2010
How I became known as Mr Smasher
Back in 2005 I started to hear a lot of excitement about a new client for the Sametime service known as IBM Community Toolkit (ICT). The interesting thing about this client (which later became the basis for the Sametime v7.5 and subsequent clients) was the fact that developers could easily extend the functionality by means of plug-ins which were only loosely coupled with the core client. A number of interesting extensions were available and proving very popular. At the time there was very little documentation on how to write a plug-in, but many people told me that it was easy to figure out the interface by looking at one of the samples which were circulating on the IBM Intranet. At the time I had been a manager for a few years and I was worried that my programming skills were getting rusty and so I decided to try developing an ICT plug-in as a spare-time to learn more about this new environment.
At the time much of the Lotus development effort was focussed upon the Workplace project (which subsequently became known as the project nobody wanted to mention) and so I decided to develop an ICT plug-in which interfaced to the Workplace server. I spend roughly a half a day a week on this project under an initiative known as "Think Fridays". Unfortunately I found it quite difficult to make progress with this project because the Workplace server was very unstable at the time and the interface was not very well documented. My life was made even more difficult by the fact that the CVS server I was using to save my source code was behind a boundary firewall. Boundary firewalls are network devices used inside IBM to isolate parts of the network and only allow access to packets to/from machines which have been authorised. Unfortunately there was problem with the firewall that I needed to pass through to get to the CVS server. The firewall used to reboot itself frequently which meant that it lost the list of authorised machines. I was often frustrated by the fact that my CVS commits failed and I had to go through the multi-step process required to re-authorise my machine against the firewall.
One Friday I decided to put the original project on hold until a more stable version of the Workplace server was available (which I was assured would only take a few weeks). In order to continue my learning I decided to instead spend my Think Friday time working on a simple utility with would automatically monitor whether my machine was authenticated against the firewall and if not perform an authentication. One thing that made this easy was the fact that the in general the credentials used for authenticating against the firewall are the same as the credentials used for logging into the Sametime server.
It turned out that this was an excellent choice as a plugin for me to write as an educational excercise because it was not too hard to write. I was able to have the bulk of the plugin written in 2 weeks (i.e. half a working day per week implies it was written one full working day). The normal firewall authentication method was via a browser and so my plugin used REST style programming to emulate the same process, which was something I wanted to learn (and was surprisingly easy).
There were a few minor bugs that were tricky for me to solve and so I asked a colleague for advice. Naturally I had to explain to him what it was doing, he was very impressed with the idea and as well ask showing me how to solve the problem he asked me for a copy of the plugin so that he could use it for himself. He in turn mentioned it to a few people and so it began to be circulated within the lab. I never really planned to distribute this plugin, but then again I had no objection to giving it to anyone who asked.
Around this time there were serious problems with the Firewall used in the IBM Dublin lab - it was constantly rebooting and forgetting the list of authenticated users. The local IT support people ordered new hardware to solve the problem, but there were a lot of irate engineers while waiting for the new hardware to arrive. One of the IT support managers asked me if I minded if they recommended the smasher tool to people who were complaining about the firewall issues (if the re-authentications were automated people would not be so upset with the problems). This seriously increased the number of people using the smasher plugin.
Gradually people outside of the Dublin lab became aware of the tool and started using it also. They reported to me that smasher had issues with some of the boundary firewalls used inside IBM which did not use the same authentication UI as the Dublin firewall. It was relatively easy for me to add support for a new login-UI when I was made aware of it, but as smasher grew in popularity the workload of providing support began to grow. Since my job description at IBM does not involve supporting firewall authentication tools, I was looking for a way to drop support for a tool which had already served its purpose for me (I had already learnt all I needed to know about plugin development).
Andy Piper from IBM UK suggested that I should create an IBM internal open source project so that anyone who wanted to add features would be able to do so themselves (this is a project whose source is freely available, but only inside IBM). This sounded like a good idea - there was no point in making it a public open source project since there is no other company I know who ised boundary firewalls like IBM does. Shortly after I created the open source project, Billy Foss (an engineer from the IBM Raleigh office whom I never even met) kindly offered to take over as the chief maintainer of the smasher plugin.
After 5 years, smasher continues to be very popular despite the fact that there are now a number of excellent alternatives available:
- BSO Bug me not is a very popular tool developed by Thomas Gumz in the Littleton lab. The only serious limitation with this tool is that it is designed to only work on Windows machines.
- My own current favourite is Bugmenot Firefox plugin which was developed by my colleague Stephen Kruger
- Scratch your own itch: I didn't spend time wondering what would be useful for many people in IBM, instead I simply focused on what would be useful for me. I suppose I might be more typical than I realise, because it turns out that it was also useful to many other people.
- Start something completely new: I often see poorly designed tools and feel that I could easier develop a better version. Unfortunately it often turns out that my version is not really better than the existing tool (perhaps better in some ways, but worse in others). I think the key to my success with smasher is the fact that it was a completely new type of tool and therefore there was no existing tool to complete with.
- Don't aim too big: If you are looking to start a hobby project, I think it makes sense to aim at a small niche. I know that most entrepreneurs aim to find the biggest possible market, but if there is a big market for something then someone will start a formal team to tackle the problem and there is no way that a single hobbyist can compete with a professional team.
- Be humble: I never tried to convince anyone that smasher was a wonderful tool, if I did I am sure that people would have been only too happy to point out its flaws.
- Accept help: If you are lucky enough to get offers of help you should accept the offers gratefully. In addition to lightening the load on you, you will probably find that anyone who has helped with the project will become your best advocate.
Thursday, December 17, 2009
Delighted that Sametime 8.5 has finally shipped
Sametime 8.5 includes updates to several parts of the product. Many customers will be excited about the new meeting room client which provides maximum functionality and is ideal for the frequent user of Sametime. However, I suspect that the feature most customers will get excited about is the new Java free web client. Obviously the server is mainly coded in Java, but there is no Java code downloaded onto the browser. We are using the Dojo Toolkit and the latest AJAX techniques which means that the code executed in the browser is all JavaScript. As well as ensuring we are fully buzzword compliant, this means that user can join meetings mush faster because there is no Java Applet to download. It also means that we can now support virtually any browser. Our officially supported browsers are Internet Explorer, Firefox and Safari which should cover a large percentage of users. For other browsers (e.g. Google Chrome) we don't guarantee them, but if you try them you will probably be pleasantly suprised to find they work.
If you want to try it out for free you can visit Lotus Greenhouse. Currently a Beta version is installed on Greenhouse, but I am sure it will be upgraded to the gold coe very soon.