IBM and Lotus Notes: how NOT to code

OK, it’s rant time.  I think I’ve probably ranted about this before, but I am too lazy to search my own blog, so you have my apologies if I am repeating an already ranted about subject.  So, what is it?  Well, it is the lame programming coming out of IBM.  Specifically, the lame shortcuts that whomever developed the templates that ship with Lotus Notes. OH MY.  Not only are the templates a mess, the multitude of coding techniques used are sloppy, poorly thought out and just bad. 

I’ve been doing Lotus Notes development work since 1995 and have noticed the quality and quantity of the shipping templates has been on the decline since Big Blue assimilated Lotus.  Throughout that entire time, Lotus/IBM have preached ‘thou shalt not use undocumented features’.  Meaning, there are undocumented functions in the Notes formula and LotusScript languages that should not be used because they are: unstable, may be deprecated later, unfinished or just don’t work as they were supposed to work.  I’ve pretty much stayed away from such things.  I got bit once and do not wish to have that happen again.

IBM, however, does not practice what it preaches.  In fact, they stopped shipping several templates because they removed one or two of these ‘features’ and rendered the templates useless.  That, though, has NOT kept them from doing the very thing they tell us NOT to do.

The company that employs me is currently making the switch from Notes mail to an Exchange environment, but they are keeping the Notes servers and other Domino infrastructure.  We went through a several months long period where we tested our Notes applications and found a few minor issues, but nothing major.  Unfortunately, one thing we did not test very well were those bloody templates.  Oh, we did some testing but, apparently, it was not good enough. 

Before I go on, let me explain something.  Since we are not getting rid of Notes right away, we still have to maintain the Domino Directory.  Everyone will still get a Notes ID.  In the person document, we have the Exchange mail address in the ‘forward’ field.  It works well.  Very well, in fact.  Very well until you try to use one of those damned IBM designed templates. 

We have many databases that are derived from those templates and, of course, they all send mail.  Well, in IBM’s INIFINITE WISDOM, they use a function that will explode a list of names.  This function will lookup the names in the address book and return the proper Notes name, UNLESS YOU USE THE BLOODY FORWARD field.  If that is populated, this function (@ExplodeNameList) returns THAT value.  Of course, it NEVER, EVER corresponds to a valid Notes name.  This causes problems with author and reader fields, can block access to some or all of the application and other numerous issues.  In some cases, there is no getting around this:  the application becomes useless.

It’s no wonder my company and many others have decided that Lotus Notes is NOT the way to proceed in the future.  With practices such as this, IBM will kill its own product and the sole reason they spent billions of dollars buying Lotus and running it over the last decade.  It is also indicative of a company that lacks any real pride in its own products.  People deride Microsoft for what they perceive as poorly developed products.  Those people have, obviously, never had to deal with Lotus Notes and IBM code.

Digg This


4 thoughts on “IBM and Lotus Notes: how NOT to code

  1. Some thoughts and questions…What templates did IBM stop shipping? I don’t recall but in 14 years of Notes work I’ve almost never used the IBM templates.If you’re apps are working enough that you need them, why switch to Exchange? You just doubled your costs or more on extra licenses for email and you already had email…In my experience you’re correct, IBM will use undocumented commands, but I’m not sure if I’ve ever seen them break.I’m not interested in arguing about Exchange vs Domino. Personally I prefer domino of course. What didn’t you like about email that made your company want to absorb the cost of Exchange? I like how you can modify the mail template if needed. Certainly you can’t modify to code that is Outlook. Regarding your apps, you can modify the code to add additional authors and names fields. So rather then trying to fix the problem it may be easier to insert code into new fields that contain the proper notes name?Just some questions/thoughts… good luck to you!

  2. Works as designed.When you use a different eMail system other than Notes you don’t use the FORWARD field. You select the Mail type, specify other and enter the email address there. Check it out.

  3. Stephen: I am not really sure why the forward field is being used, but it is. The problem is HOW IBM chose to implement that particular function. Why in hell would you return a name from that field? It makes no sense at all. Why wouldn’t the function work the same either way? It was a bad decision. And the bigger issue here is why do they use these functions at all? They preach to us to NOT use them, but they do so anyway.

  4. David: the decision to move from Domino to Exchange was made by others in the company. Personally, I would have preferred Domino, but the deed is nearly done. The company that employs me is a fairly large company with thousands of employees. Several templates from the 3.x days have disappeared. One of them was a call/problem tracking application that used several ‘undocumented’ functions as well as took advantage of some behavior that IBM/Lotus changed. We use several of the currently shipping templates such as the discussion database template and document library template. Just about all of them use this @ExplodeNameList function.Your suggestion about the notes is pretty much what I was going to do. It really irritates me, though, that IBM did this.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s