Charles recently started blogging, and one of his first entries explains his passion around Domino:
As my applications became more complex I started hitting walls. Debugging Lotus Connectors was difficult and frustrating, and the documentation was atrocious. New features in Domino, such as policies and remote debugging, simply did not work. Clustering Domino servers across multiple platforms required lots of workarounds that you only found by trial and error. I grew to loathe Domino Designer and it's bizarre property window, code stuffed everywhere and the half-baked classes implementation.There's no doubt about it -- Charles is direct in his comments, on the blogs and in the e-mails we've exchanged. I respect that, from him or anyone -- as long as it doesn't cross the line into personal attacks. Besides, this kind of passion is what defines the Notes community.
So off I went to find the new new thing, something that offered everything Domino had without all the annoying bits. In my quest I tried out MS Access 2003, C#, VB.Net, J2EE, and Ruby on Rails. Broadening the scope I worked with LAMP, OpenACS, Zope/Plone, and Puakma. Most recently I tried out SharePoint Portal 2007 and Exchange 2007. I never found anything that could reach the bar set by Notes and Domino. ...
For all it's knobby warts, I truly do love Notes and Domino. I see in Hannover an opportunity for IBM to finally get it right. The criticisms I voice stem from an intense desire to silence the naysayers.
Link: Charles Robinson: My love/hate relationship with Domino >
Post a Comment
- 2
Mike5 | 7/20/2006 3:18:05 AM
Hey, we have mostly Java agents, so we use Eclipse for the developemnt, and store all the code into Subversion. Since Hannover is based on Eclipse, MAYBE!!! (please, be it so) it will be easy to use some sort of a central VCS system to store and manage the code.
- 3
Pedro Quaresma | 7/20/2006 4:21:17 AM
@1: I'm sorry, but having code scattered everywhere in the database is bad design methodology, and it can/should be avoided. Here's what I do:
- Buttons, actions or hotspots: calls agent using ToolsRunMacro/RunAgent formula. Those agents simply call one sub/function in a script library (called scrlib_[DatabaseName]Std)
- Form/View events: call one sub/function called [EventName]_[Form/ViewName] from a scriptlibrary named scrlib_[DatabaseName]Events
etc. This means all my code is always in the script libraries, and can easily be found.
I don't think that Notes should be blamed for the programmers' methodology, whether it's good or not. :)
- 4
Adeleida http://www.adeleida.co.za | 7/20/2006 4:58:02 AM
@2: Yes, that is exactly the type of thing I would love to see, yes please...
@3: Yes, agreed :) and those are some really nice tips, thanks. Just a bit of defense for me post here: part of the point I'm trying to make is that you have to put in some serious programming standards in place and convince your developers to follow those to ensure that all apps are clean and maintainable because it is not a natively clean interface to code in (such as, say, Eclipse). My vision is a development environment where one would be able to deploy something like Rational tools to assist in development.
<more defense> Also, imagine the scenario where you inherited a rather large Notes application written by someone with no sense of standards or methodology, and you have to work on it urgently to fix a bug that cropped up (because, of course, of the poor standards): major nightmare, especially trying to convince the client that the first week of work is just cleaning up architectural issues in the code while he tries to convince you the previous developer did this type of thing in no time.
Apologies for the long rant. Will keep quiet now ;)
- 5
Nathan T. Freeman http://www.openntf.org/nathan/escape.nsf | 7/20/2006 5:17:33 AM
@3 - I hope you don't do that for EVERY button/hotspot/event/action in your design. I've known coders who are obsessive about doing everything via Script Libraries, and one of the nasty consequences is that you load half a dozen libraries and 478 constants in order to accomplish something that's literally two lines of @function code, just because you're slavish to the approach. (well, not YOU specifically, but those that are zealots about such an approach.)
The basic problem with the IDE is that you can't trace your code like hyperlinks. If you could, say, click on a function name behind an action and have designer automatically open the definition of that function, the fact that you have to trace the code would be much more managable. You can create a methodology to overcome the limitations of the IDE, or you can establish a methodology that makes the IDE a nightmare, but the problem remains the limitations of the IDE. It's definitely gotten BETTER, but it's not going to be good until Lotus has some team members flogging the Designer developers who have been building complex Notes applications for > 8 years. There's no one like that on the team now.
An interesting consequence of not having those team members is the relative misery of designing a cross-NSF Notes application. You simple CAN'T use a lot of the best facilities provided (embedded views, for instance) when you need to have a suite of databases generated from a set of templates.
It's weird. As far as I can tell, there simply aren't any Notes development gurus at IBM. Andre Guirard and Thomas Gumz are the closest I can think of, but even there, you're talking about guys who have built apps for one or two purposes, not the hundreds of different complex business apps that the leaders in the DominoSphere have done.
Maybe if they made Rocky Oliver the Domino Designer Czar, we might start seeing some solutions to these problems.
- 6
Doug Bruce http://www.welldynamics.com | 7/20/2006 5:46:20 AM
Can i ask what issues / workarounds you see with clustering across multiple platforms ? We cluster across RHEL4/SLES4 (both Linux), with Win2K3,Win2K and an NT4 box (ok all windows), but we have a Solaris box in that cluster as well. Technically that's 6 different OS's and they just work - we don't have any workarounds in place, we just installed Domino, configured the cluster and bob's yer uncle.
We even cluster *cough* across a WAN link to Australia from Texas - just don't tell tech support, makes em nervous ....
- 7
Ed Maloney | 7/20/2006 8:16:18 AM
You have to remember that most Notes developers are not traditional programmers. They build apps that are essentially Excel macros on steroids. If you want/need n-tier applications there are plenty of other tools for the job. That said, if IBM would just give us decent forms (you know... that look like Word and actually print the same way that they look on screen), a data grid control and some GUI ODBC/SQL tools, I'd be happy.
Oh okay... and export as Excel or PDF options would also be nice.
- 8
Sean | 7/20/2006 8:29:17 AM
Just think what we would have now after five additional years of development and integration of Java and Domino. My comment may not sit well with some of you but Charles would never had to look elsewhere if IBM did not yank Garnet from Domino 6 Beta back in 2002.
- 9
Nathan T. Freeman http://www.openntf.org/nathan/escape.nsf | 7/20/2006 9:06:36 AM
"They build apps that are essentially Excel macros on steroids."
Too bad this is a family blog. I can't respond to that remark as it deserves. :-/
- 10
Chris Miller http://www.IdoNotes.com | 7/20/2006 9:34:24 AM
Cluster across OS bugs? Not here! No issues or problems. Countless versions (even cross versions) coupled with WAN and Internet sites. Oh yes, and all this across numerous customers and domains, VPN tunnels and wierd firewalls.
- 11
Ed Brill http://www.edbrill.com | 7/20/2006 9:36:44 AM
@8 Sean, Garnet would never have addressed that in its entirety. The IDE would have had to make substantial leaps forward in Java programmability, too. Instead, we now have an open platform choice -- Eclipse -- as the next generation, and that openness extends beyond Domino. That's precisely the reason Garnet was cancelled -- the open choice was/is the right choice.
- 12
Charles Robinson http://cubert-codepoet.blogspot.com | 7/20/2006 10:01:26 AM
@6/10 - The issue I ran into was with running agents that use LCLSX. I'm in the process of migrating all my Domino servers from an iSeries to Red Hat Enterprise Linux and set up a cluster between the two, just to see how it worked. During testing I discovered that my LCLSX agents that call stored procedures failed when the applications ran on RHEL AS 4. It took several weeks to finally find a solution: { Link }
I have a workaround, but it was completely unexpected and even surprising to one of the Enterprise Integration support people.
@8 - I think servlets and JSP's would do little to address my problems and frustrations. All we would have is an even stronger push to learn Java, which I am resistant to for a number of reasons.
- 13
Villi Helgason | 7/20/2006 11:15:14 AM
I am a J2EE developer. Most of my code is accessible in the IDE (WSAD), but try tracking down code in a huge application, built on top of a framework or two, and written by tens of design pattern crazed enterprise architect astronauts:)
Then there is the jsp, with embedded javascript, in line java, html, css, xml, and xsl. Add struts to the mix and you have code scattered all over the place.
The final piece of the puzzle is the database group, (or data warehouse overlords) with their stored procedures and foreign keys. This very normalized data then needs to be pumped all over the place, using enterprise tools like PowerMart, or better yet, pumped using a mix of enterprise tools, and at least three schedulers, one of which is JCL on OS400 :)
Domino is more of a "one place stop", and it is quite easy to store your code in an organized and logical manner, if you give it a little thought.
- 14
Pedro Quaresma | 7/20/2006 11:35:07 AM
@4 I know what you mean, specially regarding "inheriting a Notes application". :) I've had to do some serious re-structuring of other developers' coding a few times during my (short) career.
@5 I am probably a zealot then :) I indeed follow this procedure for every button/hotspot/event/action in my applications.
Might take more 30 seconds per element but surely pays off in the end. Knowing that the code is not scattered around the application makes my living much easier.
Of course if it's an issue that can be solved with a couple @formulas, I'll do it that way. I didn't mean to imply that "everything has to be LS", but for everything that has to be LS, I'll place it in a script library.
- 15
Sean | 7/20/2006 11:39:24 AM
ED IBM and SUN didn't really think we would all drink the cool aid and switch everything over to "100% PURE JAVA" did they? My comment is simply what 80% of the Notes shops felt at the time. Many of us looked elsewhere for OOP and RAD.
Eclipse was in it's infancy in 2002, and Garnet and the Domino IDE was far from any kind of end all solution so many us went down the road of evaluating other products just like Charles. Over the last few years we have since developed over 200 custom applications in Notes and have successfully created a few hybrid applications using both Domino and Java. I felt the same frustrations as Charles did and for me personally I do feel that sticking with Notes over the last 10 years was a good career decision. Hopefully Hannover will deliver RAD with a new IDE and I won't need to or be forced to switch over to the dark side of the force.
- 16
Ed Brill http://www.edbrill.com | 7/20/2006 11:58:29 AM
@15, good comments, but I don't see how they support the notion that things would have been somehow substantially different if Garnet had shipped.
- 17
Axel | 7/21/2006 7:20:26 AM
As allways: It depends on the tasks.
In an agile market, its allways good to master a few for those technologies to fill demands by customers.
My customers don't care if an app is coded with Nodes, Shruby on Trails, J3EF or MS.NET. They want solutions and thats only fair.
- 18
Pedro Quaresma | 7/21/2006 9:39:21 AM
@17: From my experience, customers do care about the platform the app is coded on. Specially on larger-ish companies where integration with other systems/platforms/architectures might be an issue.
- 19
Johannes Madsen | 8/14/2006 10:50:01 AM
@3: Personally I like Notes' ability to spread the code around. You always know where to find e.g. a validation formula; if the field is deleted, the relevant formulas are removed as well and you don't end up with a lot of unmaintainable code. I think it's much easier to manage a Notes application than e.g. a similar application written in Visual Basic.
I like it when I have to maintain some code written by others or dig into some old code of my own. I do work with traditional coding as well. The only thing that beats Notes' way of working is the Object Oriented languages (e.g. Java).




Charles touches on something that is, unfortunately, a big drawback of Notes: scattered code. Yes, you can try and maintain some illusion of three tiered development with Script Libraries and Agents, but the truth is that code is all over the place, behind hotspots and action buttons, embedded in design element events and agents - SIGH! It is ok if it is a single developer working on an application and the person knows where all the stuff is sitting, but if you try to "plug & play" developers at a client and make sure anyone can support an application at any time, you run into trouble as it sometimes take a rather large time to figure out where to look to find that line of code that does something. Not to mention the line of code, say, in a view, that leads to another piece of code in an agent, that calls up a Script Library, that calls an imported java library on a hard drive, etc. etc. Yes, you can buy expensive third party tools that help manage your Notes code, or you can set a lot of coding standards and hope that your team of developers will spend (a lot of) extra time complying to only putting code into agents/libraries and never touching an @Formula in their lives, not to mention document exactly what they're doing in the backend so that the next developer can have a quick read before he tumbles in... <snort> <sorry> but here is my Christmas Wish for Hannover: please, please, is there some way to try and get Notes to have its code in a central place? My brain is not big enough to imagine how this could be possible, it is just far too complex and functional an environment for me to visualise it. It is exactly these complexities and functionalities which is why we love it and will not trade it for any alternative clean 3-tier environment out there, but maybe some genius could think up a magic solution. So, in short, we want it all. :)