Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
As posted the other day my nomination to ITSO was accepted and I'm now on the team for writing a Redbook wiki on plugin (or component if you will) development for Lotus Notes, Lotus Sametime and Lotus Symphony. We had our first call yesterday and we're currently putting together the table of contents and discussing what to include.
For products versions we chose to target Lotus Notes 8.5.2, Lotus Sametime 8.0.2 and Lotus Symphony 3 beta 4. Of course we will try and make the samples work in prior versions but that's the versions we're aiming for. Any objections?
On the first call we also discussed the target audience for the wiki and defined who we're writing for. Here's what we came up with:
"We're writing for Java developers with some experience in the language that is they know the syntax. We will aim to give them a high level introduction to the plugin model and give them the material to dive deeper and make sure the appropriate Eclipse resources are linked in. The specific topic sections should readable to those who want to dangle their feet but also deep enough to allow a Java developer that know about plugins to actually start building stuff to make production quality plugins. "
How does that sound?
I would be very interested in hearing what you (yes you!!) the Notes developer wants to know about plugin development and maybe what's holding you back from getting started. Is it Java? Is it extension point documentation? Or is it something else? Please share and I'll do my best to make sure it's covered or at least written about here on the blog.
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
Naturally, things like update sites need a proper treatment.
But. specifically, what does a knowledgeable Notes developer need to do to load and open a plugin just by double-clicking a workspace square?
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
What do you mean by the ahove? Do you mean "how to get started with plugin development incl IDE setup etc." or literally "how to invoke a plugin when double-clicking a workspace icon"?
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
The IDE setup is non-trivial. Testing by launching through eclipse also should have a treatment. I guess that'll be an early chapter.
For deployment, I'm thinking:
I'd like to see a section on how to set up and use update sites. (Easy, but non-obvious) Also, using the widget catalog (from the dev/admin perspective - how to publish a plugin you've written.)
And, I guess in the broader general term, I want to see use cases in production. A big one being, "I want to write a custom full-screen UI for this database/application. How to I get it to come up for my users when they launch this database from the workspace?" (i.e. your second question). Also, things like sidebar summaries, integration via Property Broker wiring (from both the LS and Java side - probably needs a good long chapter or three).
I realize that I sound a bit scattered, I'm writing all this off of the top of my head. I hope it's somewhat helpful. A lot of things about Notes 8.5 are coming easily to me. deployment isn't, which is why I thought to mention it.
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
Great to see a RedBook coming on for Plugin development. I would re-iterate rharan's point - there should be section for how to get started and trouble shooting the IDE setup.
All the best to your team!!
Yep.. Setup, Deployment and Testing
Setup is tricky business because those wiley characters running Eclipse will make significant interface changes even in minor releases that totally re-write the setup instructions. Just to compare, I went through Google's lengthy Android installation process for eclipse and that was smoother and easier than the Notes plugin development plus I knew nothing about Android SDK and I actually got the basic tutorials compiled and running in the emulator.
There seems to be no obvious documentation on deployment, and what I did find was quite dated, early 2009. Once again people in IBM are off doing other "important" stuff rather than keep their technology doco upto date. Perhaps it's there, but I haven't found it, (so happy to be proven wrong on that if someone can point it out).
Finally, testing. I want to be able to test my plugin independently before rolling it out. So, some sort of dummies guide on that would help alot.
The lack of side bar development out there in the real world, is probably an indication of the difficulties in getting started. I know that from my work with Domino servlets, that once you have your environment setup, coding a solution with the Notes-Java SDK is a breeze. So, looking forward to your output on this Mikkel.
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
What I appreciate is to understand the global philosophy before going into details, why you chose this implementation other that etc, such things.
In another way, I like to have a "from high" view of the problem, the possible solutions, why you chose that one, then get into details.
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
- plugin with access to the current open document
- plugin with access to a NotesDocumentCollection of the selected documents
- plug-in that uses a HTML UI but can handle external Drag & Drop
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
- What is Expeditor and how does it relate to Eclipse, RCP, and Lotus Notes?
- How to install Eclipse + Expeditor (including a lot of warnings that <span style="font-weight: bold;">versions are important</span>)
- How to create a sidebar app and how to extend the toolbar
- What is an extension point and how do I use one? With as many examples as possible, since the extension points that relate to Notes client development aren't listed anywhere that I know of.
- How to interact with Notes data and Notes views, including a discussion on threading
- How to develop an app that works on both version 8.0 and 8.5
- Introduction to SWT, especially layouts and listeners
- Lifecycle of a plugin (from Notes startup to shutdown)
- Creating and understanding Features and Update Sites
- Deploying plugins via update site, via widget catalog, and via widget XML files, including information about the backend provisioning process
- How to sign a plugin
- How to debug a plugin
- Extending the standard Notes widgets, like web pages and live text
- Things an administrator can do (accidentally or intentionally) to affect plugin installation and/or capabilities, including plugin-related policies and options in the preferences file
If I think of anything else I'll let you know.
:-)
- Julian
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
- How to install and setup Eclipse + Notes (Linux, Mac, Windows) with different versions
- How to install and setup Eclipse + Expeditor + Notes (Linux, Mac, Windows) with different versions
- How to configure a developer environment running different versions of Eclipse, Expeditor and Notes... if it is needed at all?
- How to create a plugin that dynamically add action buttons to a database view without changing the database
- How to sign and deploy plugins, widgets etc.
- How to create a plugin with third-party API's (fx. Apache) for use by other plugins
- How to interact between traditional Notes database design and sidebars (listeners etc.)
- How to interact between traditional Notes database design and XPages within sidebars
- How to trigger resize, dock/undock of a sidebar
- How to use the different kind of browsers in the platform (embedded, ...) and maybe a comparison of their functionalities and possibilities
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
Development
1) Sametime awareness in another plugin
There are some samples out there but they are scattered. There are multiple ways to do this depending on whether the application has a direct or indirect link into sametime. (Indirect would be implicitedly requesting a person's status, Direct would be resolving the person object from the sametime client based on past chats, etc.)
2) CSS in SWidgets
The handful of good examples I have found are in chinese. All of these seem to require changing themes and I have not seen any samples where you could define the styles of your SWidgets without changing themes.
3) Live text in detail
Livetext has the potential to be VERY useful within plugins but there is hardly any documentation. This documentation would be on how to integrate live text with plugins and not widgets, since widgets seem thoroughly documentated in this aspect. We need to know how to add a contribution to the eclipse menu so that a plugin can react to it (much like your Blog already covers) and also how to do the opposite, have data within a SWT plugin that reacts on Live Text you have defined.
4) Important extension points and packages for different tasks
We know the obvious like sideshelf, but what about the less documented that could be useful? I see we have extension points available for com.ibm.rcp.toolbox, com.ibm.rcp.content, com.ibm.rcp.autorecognizer, etc. but there is no documentation.
5) Pros and Cons as far as eclipse extension points/packages vs IBM extension points/packages. When would use an STable over a Table? (I noticed that STable adds new functionality but it can be VERY rigid and not allow much modification).
6) Limitations. Are there any practical limitations to what you cannot do within the environment and certain packages? For example, is Live Text being recognized from within an SWT control just not possible due to limitations?
Testing and Deployment
An overall testing and deployment of plugins guide would be very useful. Perhaps this should be a seperate red book.
1) How do you write automated tests for plugins? Is JUnit recommended? Is UI worth testing? Etc.
2) How do you automatically build plugins? Is it worth using something like Maven or just an ant script? For example, I was playing around with an ant script to build the feature, update site, extension.xml but it was not very portable between plugins. There is also an issue that if I place something like @VERSION@ in the plugin.xml it causes the plugin to not compile. This would lead to something like 8 things needed to be changed/kept an eye on between plugins.
3) How do you automate signing of plugins after build?
4) Why is creating the extension.xml manual? How can I automate it?
5) I want to automate everything in the plugin development/deployment process that I can. Are there painpoints where it just won't be possible? For example, getting it into the catalog/update site?
Policy
4) How do you add the signing certificate to the client so that it knows that it is trusted? (We used a mail template change, but is there a better way).
A little side note. It would be VERY amazing if IBM could bundle the expeditor toolkit with eclipse and provide it to developers so they wouldn't have to go through the hassle of configuring it. Auto detect notes JRE locations would be very nice. There should be one place where I set the notes directory during config and all the rest should be handled automatically.
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
Julian Robichaux has a nice list I must say, but would like to add 2 things:
- How to handle UIJobs, wait for their results etc.
- Creating dynamic menu's / toolbar options. It is easy to use extension points to add menu options, but you can't add / remove options during runtime depending on for example roles. This is something which customers often ask for.
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
I tried to do that for a paste special action, where only plain text is pasted and not HTML or RichText or whatever.
However, the shortcuts worked fine in the eclipse elements of the Notes Client, but not in the native elements (e.g. in the body of a Notes mail).
Re: Redbook: So we are writing this Redbook on plugin development - what do you wanna know?
In the Symphony 1.3 toolkit was included a pdf named Symphony Developer's Guide which featured an example using an auto-recognizer (chapter 6 from Part 7 of the pdf). that used an extension point, com.ibm.rcp.autorecognizer.Recognizer.
In the new Symphony 3 toolkit, all the references about that recognizer feature were removed from the Symphony Developer's Guide. So I'm not sure, does that extension point still exists or it was removed starting with version 3? Will the code that worked for 1.3 which used auto-recognizer still work with target platform set to Symphony 3?
Also, ,do you know where I can find an example on how to use auto-recognizer of Symphony 3? I could not find any official documentation from IBM about that.
Thank you very much in advance
With best regards,
Sorin




