Skip to main content

By clicking Submit, you agree to the developerWorks terms of use.

The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

All information submitted is secure.

  • Close [x]

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerworks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

All information submitted is secure.

  • Close [x]

Open Standards, Open Source, and Domino 6, Part 1

A quick tour of Domino 6 Open Standards

Raj Balasubramanian, Consulting IT Architect, IBM, Software Group
Raj Balasubramanian is a Consulting IT Architect for IBM Software Group. He works on customer engagements delivering application and infrastructure related projects. His interests range from anything technical to history and physics. During his copious spare time, he enjoys dating his wife and talking about robots with his sons. You can read about his technical and personal escapades on his personal blog Gurukulam (http://balasubramanians.com/blog)

Summary:  This first of a three-part article series presents a quick overview of the Open Standards implemented in Domino 6. We then introduce several Open Source projects that we will examine in more detail in parts 2 and 3 of this series.

Date:  01 Mar 2004
Level:  Intermediate
Also available in:   Japanese

Activity:  4956 views
Comments:  

The IT landscape has been drastically changed by the advent of the Open Source movement spearheaded by Linux, Apache, and others. In the past several years, several governing bodies (consortiums, working groups, and committees) have devised standards for IT systems. These industry standards (collectively called Open Standards) are intended to help minimize the challenges associated with integrating products from different vendors.

The Open Source movement has recently seen a good deal of support from major IT companies, such as IBM, Sun, Oracle, Computer Associates, and Novell. This has taken the Open Source movement from academia and the eclectic few to the mainstream. (The author's son even has his own Linux desktop!)

This three-part article series investigates how various Open Standards are implemented in Domino 6 and how you can use Open Source products to complement and extend Domino 6 functionality. In part 1, we discuss the Open Standards implemented in Domino 6 and introduce key Open Source projects that will be discussed later in this series. Parts 2 and 3 of this series will cover how to extend Domino 6 functionality with a few of the available Open Source projects. These articles will include working code samples and packages.

This article assumes that you're an experienced Notes application developer.

Open Standards

There are several Open Standards bodies that have contributed standards, specifications, and RFC (Request for Comments) documents. Some of the key ones outlined in this article include:

The Open Standards relevant to Domino 6 can be grouped into two broad categories: Internet protocols and application and data protocols.

Internet protocols

Let us start by examining Internet-related protocols. The following are some of the key protocols and the corresponding RFCs that are discussed in the series:

NameRFC
Hypertext Transfer Protocol (HTTP/1.0)1945
Hypertext Transfer Protocol (HTTP/1.1)2616
Session Initiation Protocol (SIP)3261
Session Initiation Protocol (SIP) -- Specific Event Notification3265
Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile3280
Definition of the inetOrgPerson LDAP Object Class2798
Lightweight Directory Access Protocol version 3 (LDAP v3)3673
LDAP Data Interchange Format (LDIF2849
POP3 Extension Mechanism2449
Internet Message Action Protocol (IMAP4)3348
Simple Mail Transfer Protocol (SMTP)2821
Internet Inter-Orb Protocol (IIOP)CORBA/IIOP

Domino started supporting most of these standards in R5. Domino 6 implemented the standards in its core server and exposed native functionality via these standard protocols. This has allowed Domino to become a robust Web server, implementing HTTP RFCs while providing a Web "face" to the traditional Domino NSF (Notes Storage Facility) data format. For application access, Domino supports IIOP in its implementation of DIIOP (as a add-in server task) for remote Java access to the traditional Domino data format. At the same time, the Domino server can still access Domino data. There is also an LDAP server implementation on the Domino server (as an add-in server task) to expose traditional Domino Directory data via LDAP. Plus, Domino offers an implementation of all the mail-related RFCs, including support for POP3 and IMAP clients to access your mail file and SMTP to send and receive mail, and supports MIME.

Domino can be a X.509 Certificate Authority (CA). With Domino 6, there is a convergence between the native Notes certificate and the standard X.509 certificate. In addition to being a CA, Domino fully supports Secure Socket Layer (SSL) on the server and client side.

Lotus Instant Messaging (formerly Sametime) now supports Session Initiation Protocol (SIP) as a transport mechanism in addition to its proprietary communication method. SIP was introduced in Lotus Instant Messaging 3.x as a means to connect two different Lotus Instant Messaging communities or a Lotus Instant Messaging community with a SIP-enabled non-Lotus community. With the convergence of voice over IP (VoIP) and multimedia/real-time protocols, SIP has seen greater acceptance within the industry and is now the de facto standard for establishing signaling-based telephony-like sessions over the Internet. Future releases of Lotus Instant Messaging will offer more core support for SIP and related standards.

Application and data protocols

Looking at the standards related to the data/application layer of the OSI model, we see a number of players who govern standards for the various technologies in this arena. These include:

We will see how you can leverage these standards with Domino 6 to solve practical problems in your environment.

Open Source

To some, Open Source and Open Standards have become synonymous. But there is a difference. Many Open Source projects are related to one or more Open Standards. In most instances, Open Source projects are the first to provide a reference implementation to a specification or standard proposed by an Open Standards body. For example, Apache’s Jakarta project provides a reference implementation for the Sun J2EE Servlet and JSP specifications, SendMail implements the SMTP RFC, OpenLDAP implements the LDAP RFC, and OpenSAML implements the SAML specification.

The challenge with Open Source is that many new projects have emerged in the last few years. This makes it very difficult to keep up with and evaluate the ever-changing and growing body of Open Source software. Another challenge is that some Open Source projects are actively maintained, some are updated only sporadically by contributors, and some have been dead with no activity for years.

In this article, we will examine Open Source projects that have achieved widespread acceptance and success in the recent past with a focus on those related to Domino 6. We categorize the various Open Standards and Open Source projects as follows:

  • Application development
  • User interface/data presentation
  • Application-to-application
  • Security

The following sections look at each of these in turn.

Application development

We start our tour of Open Source offerings by briefly introducing a number of projects designed to assist application development. We will look at how Domino developers can leverage these standards and projects in our next article in this series.

Setting up an Eclipse IDE

This procedure lets you set up a free development environment based on Eclipse. (These instructions were performed on a Linux RedHat 9 laptop. Note that a newer version of Eclipse has been released since the writing of this article, so download the latest versions of the plug-ins we mention in the following steps.)

  1. Download the Eclipse (GTK) software.
  2. Install Eclipse on your Linux machine. First, add GEF and EMF runtime to Eclipse. To do this, download the GEF and EMF files. Then unzip the contents of the files to your {Eclipse_Root} directory.
  3. Launch Eclipse (or if it is already open, re-launch it).
  4. Click the Finish button when prompted to accept the plug-in updates.
  5. To get UML support, download the UML core file and example files. Then unzip the contents of the files to {Eclipse_Root}.
  6. Launch Eclipse again (or re-launch if its already open).
  7. Accept the plug-in updates by clicking Finish.
  8. Create a new project by choosing File - New - Other. Then select EMF Wizard and choose UML2 in the right panel. (If you can see UML2 in the right pane, your plug-in install succeeded). Follow the on-line instructions to create your first UML project.
  9. Set up a C/C++ environment. To do this, download the files and unzip the contents to {Eclipse_Root}.
  10. Launch or re-launch Eclipse.
  11. Next, set up a Python environment. Download the files and unzip the contents to your {Eclipse_Root}/plug-ins directory.
  12. Launch or re-launch Eclipse.
  13. Select Preferences from the Window menu.
  14. Set the path to the Python interpreter. This will depend on where you have installed Python; see the following illustration:

Eclipse
Any good developer needs to have an Integrated Development Environment (IDE) to develop, unit test, and debug in her favorite language and on her platform of choice. The popular languages among Domino developers are the Lotus Formula language, LotusScript, and Java. Domino Designer provides a great IDE for these languages. But if you need to develop a Struts application, a C# application, or (better yet) an application in a dynamic language, such as Python or Groovy, you need a separate IDE for each.

The Open Source framework called Eclipse provides a single IDE for an application developer wanting to dabble in any of the previously mentioned non-Domino-specific languages. Eclipse was originally a Java development project, but because it is a framework, it provides plug-in development to the platform or language of your choice. Because it is Java-based, it runs on all the major desktops (Windows, Linux, and Macintosh). For example, the author has set up an Eclipse IDE to compile C, C++, C#, Java, and Python, and model using UML 2. This provides high-end Web development, J2EE application development, XML editing, and unit testing. All this runs on a single home Linux workstation. (Refer to the first sidebar to learn how to get started with your Eclipse IDE.)

.NET
With the introduction of .NET from Microsoft, traditional Visual Basic/Active Server Pages/Component Object Model/Microsoft Transaction Server (MTS) applications are being migrated to VisualBasic.NET, C#, and the new .NET framework. There is an Open Source project named Mono that has an implementation of a C# complier on Linux. We will talk more about Mono in the next part of this article series.

Python
Python has emerged as a powerful programming language since its introduction in the early 1990s. The power of Python is in its flexibility and simplicity. With support of COM in Win32 Python, there is a choice for Notes/Domino programming on Windows platforms, using Python in addition to Visual Basic.

Java
The use of Java as a programming language and as an application framework has risen in the last five years. There are many Open Source projects that let you host and get your feet wet in existing and emerging Java technologies. JCP (Java Community Process) is an open body to deliver specifications and reference implementations on various Java APIs. For example, JSR 168 is a Java API specification for building portlets, JSR 180 is a SIP API for J2ME, and so on. We will discuss Apache-based Java projects later in this article series.

User interface/data presentation

Domino has always been a great platform to host, access, and present data. In addition, XML and related technologies have been embraced by IBM/Lotus. Domino 6 natively supports XML functions and calls for parsing. XML itself is an Open Standard proposed by the W3C. You can review the details of the XML specification. The related technologies for transforming XML data (such as XSLT/XPATH/XPointer) are all standards-based as well. The original XML parser was written in C/C++ by IBM/Lotus and contributed to the Apache Software Foundation (ASF).

Cocoon
There is a key Apache Jakarta project named Cocoon that focuses on delivering an XML-based publishing framework (using XML and XSLT) with minimal coding. This lets you generate PDF files, XLS spreadsheets, or dynamic Web pages without actually opening an IDE and compiling any code. Cocoon is a J2EE application that can be hosted in any J2EE Web container (such as Tomcat or WebSphere). We will look at Cocoon more closely in our next article.

GUI toolkits
To deliver a rich client to a Unix desktop, you need a GUI toolkit that allows you to build sophisticated user interfaces using the language of your choice. Java SWING provides a Java-based GUI environment. GTK+ (GIMP Toolkit) is another set of libraries delivered on the Unix and Linux platforms. GNU uses GTK+ to build their GNOME desktop. There are C# bindings (in GTK#) available for GTK+. There is also another popular GUI toolkit named wxWidgets that builds on GTK+. It provides native C++ bindings to build GUI applications on Windows, Unix, Macintosh, and Linux. There is also a variant of wxWindows with Python bindings called wxPython.

SVG
Scalable Vector Graphics (SVG) is an XML-based graphics standard from the W3C that provides interactivity and richness to existing Web pages. SVG currently requires a plug-in (for the browser) to view the image. But there are several Open Source implementations that will convert an SVG file to a PNG or JPG file format.

Setting up an RSS news reader

Follow these steps to set up a free RSS news reader based on Mozilla. (These instructions were performed on a Linux RedHat 9 laptop).

  1. Download the Firebird RSS Reader plug-in.
  2. Install Firebird on Linux.
  3. Open the XPI file (downloaded in step 1) using Firebird.
  4. Set up RSS Reader.
  5. Create a new bookmark folder, for example RSS.
  6. Open the Options dialog and go to the Extensions Section.
  7. Choose RSS Reader Panel and select the newly created bookmark folder (RSS in our example).
  8. Create a bookmark by visiting any blog or Web site that has an RSS feed and add it under the RSS bookmark folder.

You can now view news feeds (using RSS) by selecting the RSS Reader under View Sidebar.

RSS
Rich Site Summary (RSS) is an XML-based syndication standard. This has been popularized by explosion in the “blogging" arena. Blogging (short for Web logging) is an online journal or diary on the Web maintained by a user or an entity. The concept of blogging has been propelled by the user community (initially within the “techie" world and now in the mainstream). Most media companies and even 2004 U.S. presidential candidates have RSS feeds. Universities, such as Harvard, offer blogs as communication media. Blogs are becoming important because they offer current information from sources you know and trust.

Most blogs on the Web have an RSS feed available. Using a RSS aggregator or viewer, you can view the feed efficiently. The second sidebar explains how to install an open source RSS reader. You can also learn more about RSS by reading the developerWorks article, "Content feeds with RSS 2.0."

Application-to-application

With the spread of distributed computing, application-to-application communication has become an important issue. There have been great strides made in making communications and interoperation as smooth as possible. IIOP by OMG was the first step towards an open standard to define and implement inter-communications between distributed applications. With the release of the new Enterprise Java Bean (EJB) specification, you now have new security interoperability between CORBA/IIOP and EJB via Common Secure Interoperability (CSI).

Recent advances in Web Services have produced the next major step in application integration. Although there will be integration challenges with vendor-specific implementations, Web Services provide a definable way to communicate between applications on different platforms and hosted on varying runtime frameworks. Hence, Web Services are now seen as a panacea to all distributed system integration issues.

In the next article in this series, we will see how to leverage Web Services and IIOP to deliver application-to-application communication between Domino 6 and other distributed systems.

Security

Security is a very broad area covering many topics. In this article, we focus on security supporting the key standards and projects that could potentially be used with Domino 6. The three key areas we discuss in this series are directory, Web Services security, and single sign-on.

Directory
OpenLDAP provides a reference implementation of the LDAP RFC. In part 2 of this article series, we will describe how to install and configure an OpenLDAP Server on Linux and then run it in a collaborative Domino environment.

Web Services security
There are several security-related specifications for Web Services. A comprehensive list of these specifications is available. The one technology we will discuss is SAML (Security Assertion Markup Language). This is a specification hosted by OASIS. SAML defines a standard format to deliver authentication, authorization, and attribute data in a distributed environment. The scope of SAML can be applied beyond the Web Services boundary, but for this article, we consider SAML as it relates to solving some of the Web Services security challenges. OpenSAML provides a Java and C/C++ implementation of the SAML specification.

Single sign-on
SAML is often touted as a provider of a single sign-on (SSO) mechanism. SSO is a hot topic with the proliferation of portals in the enterprise. SSO is also at the forefront of Web Services discussions. Shibboleth is an Open Source project that provides federated identity and access control between academic institutions. Shibboleth leverages OpenSAML to deliver its functionality.

Kerberos is another open project (created at MIT) designed to provide network authentication. Microsoft leverages the Kerberos technology in its Windows 2000 server. IBM and Microsoft co-authored a specification to provide Web Services security with Kerberos.

What is next?

In this article, we briefly introduced various Open Source projects and Open Standards that pertain to Domino 6. In the next article, we will discover how to leverage some of the Open Source projects, including Cocoon, Mono, Axis, wxPython, and open standards such as LDAP, RSS, XML, and Web Services to solve practical problems in your Domino environment.


Resources

Learn

Discuss

About the author

Raj Balasubramanian is a Consulting IT Architect for IBM Software Group. He works on customer engagements delivering application and infrastructure related projects. His interests range from anything technical to history and physics. During his copious spare time, he enjoys dating his wife and talking about robots with his sons. You can read about his technical and personal escapades on his personal blog Gurukulam (http://balasubramanians.com/blog)

Report abuse help

Report abuse

Thank you. This entry has been flagged for moderator attention.


Report abuse help

Report abuse

Report abuse submission failed. Please try again later.


developerWorks: Sign in


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

Choose your display name

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


Rate this article

Comments

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Lotus
ArticleID=102289
ArticleTitle=Open Standards, Open Source, and Domino 6, Part 1
publish-date=03012004
author1-email=
author1-email-cc=

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

For articles in technology zones (such as Java technology, Linux, Open source, XML), Popular tags shows the top tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), Popular tags shows the top tags for just that product zone.

For articles in technology zones (such as Java technology, Linux, Open source, XML), My tags shows your tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), My tags shows your tags for just that product zone.

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Special offers