SamiSalkosuo 100000PDRA Identificações:  jython clenotes notescli openntf alphaworks notes lotus 1.342 Visitas
This blog entry is about the history of Command Line Email Client for Lotus Notes, or CLENotes, available at OpenNTF.org. CLENotes was previously known as Lotus Notes Command Line Email Client, or NotesCLI, and it was available at IBM alphaWorks.
In the beginning: The Reason
History of Lotus Notes Command Line Email Client started around Spring 2002 while my work involved to use some pretty resource-consuming software products in my laptop (Thinkpad T20, if I remember correctly).
I had to shut down the Notes client in order to do my work and it meant that I couldn't access my mail unless I stopped my work to just read my email. This was unacceptable and after a while I thought about why there is no command line access to Notes email. I investigated and learned about Notes Java API and decided to do something to solve my problem.
In the beginning: IBM alphaWorks
I started development around May/June 2002 and I finished the first version in couple of weeks. After the initial development, it was just for me and I used it as part of my daily work, some days days I used it a lot and other days not at all. I realized sometime in Autumn 2002 that command line client might be useful to others as well.
Pretty soon after that realization, I started the process to publish NotesCLI to IBM alphaWorks. The process took several weeks but I did got it approved and the first 1.0 version was published at IBM alphaWorks on December 3, 2002.
Development: Versions 1.x
The version 1.0 was actually command line shell to read email from Notes and also to send email using SMTP. Sending mail using Notes was not implemented at the time and I don't recall exactly why I used SMTP instead of Notes, but probably because SMTP seemed to be easier. I used Java Mail API for sending mail. Notes version at the time of release was 5.0.3
Version 1.1 followed quite soon after the first release and I removed the shell feature and started to use command line options. Command line options were actually suggested by a user who had downloaded NotesCLI but I don't remember who it was. Within six months of the initial release I had updated NotesCLI 5 times and then there was a break in development for a year and a half or so. My work changed so that I did not have to use so resource-consuming products.
Dying project: Versions 2.x
Version 2 was released in late 2004 and I had done complete refactoring for it. Codebase was totally new because I felt that old 1.x version was not very maintainable. Notes version at the time was 6.5.2. There were only minor changes after the release of 2.0 and last release of 2.0 codebase was in the late 2005.
After the last release in 2005, NotesCLI became less and less important for me and after a while I thought the project dead. But still, NotesCLI was downloaded every month dozens of times and total downloads since the first relase is well over 10,000.
During 2008, however, I thought about resurrecting NotesCLI but it was not until August 2008 I got the incentive to do it. The editors of IBM alphaWorks had noticed that Lotus Notes Command Line Email Client hadn't been updated for three years and they were planning to retire it. But I couldn't allow it. After all, it was still downloaded and used and so I told to editors that update was on it's way and started the development. Before I started development I had already decided to refactor it and start a new version with different set of functionality and totally new codebase.
Development resurrected: Versions 3.x
The new codebase was based on Jython, powerful script language and interpreted on Java virtual machine. I chose Jython because it is easy to modify and because I wanted to use and learn a new language.
I developed version 3 of NotesCLI a few lines at a time over about two months of calendar time. After finishing the first 3.0.0 version, I started the process to publish it to IBM alphaWorks, and because the process was totally different than the first time I published NotesCLI, it took some time to get NotesCLI approved and version 3.0.0 was released on February 13, 2009.
I have updated NotesCLI v3 a few times based on user feedback. The last version at IBM alphaWorks was 3.4.0 and it was published February 18, 2010.
Beginning of a new era and version 4.0.0
After I had published version 3.4.0, I decided to submit the project as open source. At first,I thought about creating new project in sourceforge or somewhere similar but then I stumbled upon OpenNTF.org and my choice was made. OpenNTF is natural environment where Command Line Email Client for Lotus Notes could live.
Version 4 of NotesCLI is a major milestone even though the functionality is exactly the same as in version 3.4.0. CLENotes is now an open source project in OpenNTF.org, released December 1st, 2010. License has been changed to Apache v2.0 and name is also changed from Lotus Notes Command Line Email Client to Command Line Email Client for Lotus Notes, or CLENotes.
What is coming in the future? Further development based on user feedback. And perhaps version 5 will have again different codebase (possibly plain Java again or maybe I learn a new language again: Scala or Clojure or Groovy or Ruby or....).
SamiSalkosuo 100000PDRA 327 Visitas
Long, long time since my last blog entry in this blog. It's not difficult to guess that I have had other things in mind :-)
One of them was to publish Command Line Email Client for Lotus Notes (CLENotes) as open source at OpenNTF.org. CLENotes was previously available at IBM alphaWorks with name Lotus Notes Command Line Email Client (NotesCLI).
One of the other things I've done lately is science fiction. I started to write my own science fiction stories and if you are into science fiction, please check them out at Smashwords. I update a blog related to writing science fiction, the Strangers' Universe Blog (updates happen more often than in this blog:-).
Lately there have been several bug reports/feature requests to NotesCLI in the forum. And it is good, it shows that NotesCLI is actually used somewhere :-)
I have fixed bugs and next task is to enable NotesCLI to send HTML mail.
Instructions to update NotesCLI are in the Space and I also just started to send NotesCLI updates to my Twitter feed so those that are interested may follow it.
I have also thought about the future of NotesCLI. Implementation is now done using Java and Jython 2.2.1. Java won't change but is Jython actually the
"right" language for the job? It seemed so a year ago but now I have doubts. The biggest reason for doubts is tooling support. I use Eclipse in development and
Eclipse's code completion, JavaDoc integration and other features are great for Java development.
But for Jython there is no code completion and dynamic aspect of the Jython language makes it actually harder to have code completion. Not to mention, lack of integrated documentation.
These two things actually make Java comparable with Jython in development work. Meaning that although Jython is easier language than Java, tools in Eclipse make Java development at least
as easy as Jython development.
Today I created my first presentation using Lotus Symphony.
That's something :-) I have used other office tools and I had some doubts whether or not Symphony is right tool for me. But since I had no showstoppers or issues
or anything with Symphony, I guess it is right tool for me. Apparently I am "average" user of office tools :-)
There are several good ideas about Symphony that I like: Eclipse, Open Office, tabs for documents, internal browser, no cost (of course).
But perhaps the most interesting idea is plugins. Plugins opens a whole new world of possibilities. I could create plugin that saves document to version control each time I save it and so gives me a history of document creation. I could scan document for text string or words and look it up from dictionary. I could create a document template for meeting notes and have it pre-filled with customer data from CRM.
And a lot more, only limitation is imagination.
Note to self: download Symphony Developer Toolkit and create something.
This fifth part of the sample application is the second part of DepartmentInfo portlet. Here we add Ajax feature to the porlet using Dojo tooltip builder in WebSphere portlet Factory.
Here we create another Service Provider for getting employee information.
The steps to create service provider are the same as in part 2.
Third part of the sample application creates a model for DepartmentInfo portlet.This model uses service provider to get department
data from the database.
Second part of the WPF sample application shows development of a service provider. Not showing on the video, but I have already set up development environment including connections to Portal Server and created a new WPF project.
Before making service provider that connects to database from a Portal Server, I also installed WPF test WAR to Portal so that SQL builders find available data sources in the Portal.
The next blog entry in this series shows the development of a portlet that uses this provider.
I uploaded to Youtube some videos about development with WebSphere Portlet Factory. There are nine videos about the development of sample application.
This blog entry starts series of entries where I explain a little more detailed what happens in the video. Hopefully, this helps to make WPF learning curve just little bit easier.
Video is available as HD. URL to video is http://www.youtube.com/watch?v=o1L7zQIOKoM.
First video is about what is to come. 2-minute video shows the application that uses WPF built in features. Application has two portlets that access SAMPLE-database that comes with DB2 database, I used here DB2 Express-C. Following table describes what happens in the video in a specific time window.
Other videos are explained in later blogs.
I had a meeting yesterday with a customer and we talked about WebSphere Portlet Factory. Among other things customer was frustrated that it is difficult to know what variables data services are using. Since WPF automatically creates code and names variables for data services you just have to know what you are doing.
Or... go to Model's Application Tree => WebApp => Data Services => dataservicename ==> methodname
and you get the variables for input parameters and also for result similar like the picture below.
But you still have to know where to look.....:-)
I added a message board to NotesCLI space. Message board is members-only and it is used to share code, improvements, extensions and ideas related to NotesCLI.
Message board was actually my intention from start when I opened the space. Unfortunately there were some issues with it (see this forum thread) but dW folks (thanks Tom!) fixed it and now it works just fine.
I presented about WebSphere Portlet Factory in Lotus Developer Days in Finland. Before I could do the presentation I had to get to know WPF.
I had heard about it but not used it. When I installed and started learning it I visitied product site, wiki site, saw many presentations about it and all those sources emphasized
WPF value propositions. Here are a few WPF value propositions:
Of those value propositions first two are very appealing: faster development and simplified maintenance. Everybody wants that. For me, especially maintenance was the keyword. I have been
in situations where I had to maintain code developed years ago by myself or (even worse) by someone else. That's not fun, and if WPF would actually make life easier then it would be worth to learn it.
Developing with WPF is different than I am used to. Using WPF I don't write the code directly but I configure builders that generate the code for me. This is software automation and analogy is of course manufacturing automation. In WPF we have a Model that is basically the application "production line". In the "production line" (Model), there are several Builders ("Robots" ) that work with their piece of code
to assemble to actual application. "Robots" (Builders) are instructed/configured using Profiles and wizard like interface.. And after Model is finished, "production line" is deployed to runtime and runtime generates the application code.
My presentation in Lotus Developer Days included a few video clips about WPF development and I have uploaded them in Youtube (in HD-quality) here http://www.youtube.com/user/SamiSalkosuo.
For each video there is very brief description. I plan to publish better descriptions later, but I don't know what would be the best place for publishing... Perhaps here in my blog or developerWorks site or WPF wiki (be sure to check this out, it's best way to get started http://www-10.lotus.com/ldd/pfwiki.nsf). Where would you like to see it?
I write this entry using my mobile and Opera Mini browser. Seems to be working fine. Now I can blog whenever and wherever :-)
I just published developerWorks space dedicated to Lotus Notes Command Line Email Client.
I hope that NotesCLI space will relevant and useful to NotesCLI users.
SamiSalkosuo 100000PDRA 386 Visitas
Welcome to my Blog!
This is the first entry and this blog is about... what? Probably about Lotus Notes Command Line Email Client (aka NotesCLI) and other stuff I work with on and off daily job.
BTW, NotesCLI was updated yesterday and it includes options to access remote server and database.