Genii Weblog

Civility in critiquing the ideas of others is no vice. Rudeness in defending your own ideas is no virtue.

Tue 3 Mar 2020, 03:48 PM
I figured that if I wrote this series for long enough, it would touch some nerves. That happened with my post, Branching out: Models, msgs, and microservices, which has had some questioning whether you couldn't just as easily do the task in LotusScript instead of using domino-db in Node.js.
Guess what? Of course you can. 
But the fact that the question was asked raises a different point, so while a lot of people are at Engage, I thought I'd mention my thinking about languages and libraries, and especially about LotusScript vs. others. There is nothing wrong with LotusScript. After learning approximately ten languages (and forgetting about eight), I have lost count of the useless debates I have heard about languages. Yes, it is easier to accomplish some tasks in one languages and other tasks in another. But LotusScript has most fo what it needs for most small scale applications, and it can be tortured into some fairly impressive large scale applications as well.
But you don't use LotusScript because of the features of the language. You don't even use it because it is the only language you know. Trust me, picking up most modern web languages is pretty simple, whether it is JavaScript or Python or something else. The reason you use LotusScript is because it has the Notes classes and you are working in Notes. The extensive classes make working with Notes fairly easy. When IBM wanted Java to succeed, they ported those extensive Notes classes to Java. But Java is a tough pill to swallow for people who've only used scripting languages, and after all, those classes are in LotusScript now. So, while some embraced Java, many stuck with what they knew and what worked.
So, looking back at the title of this post, what if you think of the Notes classes are simply the libraries available to LotusScript? For those familiar with my Midas LSX, it is another set of libraries available to LotusScript. That's two sets. If you dig hard, you can probably find five more. Maybe.
So, what does Node.js have that Lotus doesn't? To start with, over 350,000 modules, each of which is the equivalent of a set of classes in LotusScript. Are they all valuable? Nope. Are they all free. Nope. (Neither is Midas, for that matter, and it has flourished for twenty-three years now, so free isn't everything.)  NPM is widely regarded as the largest repository of packages modules in the world. The second largest is Apache Maven, which is the Java equivalent. Again, hundreds of thousands of sets of classes available. The third is probably the Python Package Index (aka PyPI).
When you want to do something in LotusScript, you check out the classes. If it isn't there, you are mostly out of luck. The one exception, and it is a major one, is that web services allow you to call APIs and use them, thus allowing some use of external libraries and APIs inside Notes. Still, if you want to work with more than Notes, or pull in some cool technology that solves a specific problem your Notes customers are having, it is a challenge.
When you want to do something in Node.js, you search for a module. Easy to install, easy to find, wildly diverse. There are modules to do every arcane thing you could want to do, from very general helper classes to highly specialized modules for specific chemical engineers to geek out over, for example. Maven offers the same for Java. Python, regarded by some as the most commonly used programming language in the world, has slews of libraries available, from fun and frivolous to deadly serious.
LotusScript has how many again?
Now, I want to be fair. Between the native Notes classes and Midas LSX, there is almost certainly more Notes-specific functionality than in all the other repositories combined. (Which, frankly, is a damn shame, and I intend to do something about it, hopefully with a lot of help from others. But more about that is a few days..) But what HCL is attempting to do is open up a gateway between Node.js and Notes/Domino. I applaud them for that. If you can build an application in Node.js and push/pull data from Domino using either domino-db or the Domino Access Services API, you can start harnessing some of those hundreds of thousands of modules in your applications for Notes customers. If you can start accessing more Notes-specific data, design, and functionality from domino-db, software developers can start pushing out modules that are Notes-specific. Whether the software developers will show up depends heavily on how Notes/Domino is accepted, as we tend to follow the money. But first, there need to be a more Notes-specific API available in Node.js than the current very limited domino-db.
HCL is working on it.
Genii Software is working on it.
Will you join us in building the libraries that make Notes as accessible and usable as other platforms, and perhaps more so? Don't worry about the LotusScript, it will still be there and may continue to be the best way to access Notes-specific functionality. Maybe. But wouldn't you like a forest of possibilities instead of a just one or two trees?
Posts in this series: 

Copyright 2020 Genii Software Ltd.