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.
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 Internet Engineering Task Force (IETF)
- World Wide Web consortium (W3C)
- Java Community Process (JCP)
- Organization for the Advancement of Structured Information Standards (OASIS)
- Object Management Group (OMG)
- Ecma
The Open Standards relevant to Domino 6 can be grouped into two broad categories: Internet protocols and application and data 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:
| Name | RFC |
| 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 Notification | 3265 |
| Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile | 3280 |
| Definition of the inetOrgPerson LDAP Object Class | 2798 |
| Lightweight Directory Access Protocol version 3 (LDAP v3) | 3673 |
| LDAP Data Interchange Format (LDIF | 2849 |
| POP3 Extension Mechanism | 2449 |
| 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:
- Extensible Markup Language (XML) and Document Object Model (DOM)
- XML Schema
- XML Schema Language Transformation (XSLT)
- Simple Object Access Protocol (SOAP)
- Web Services Definition Layer (WSDL)
- Universal Description, Discovery, and Integration of Web Services (UDDI)"
- Scalable Vector Graphics (SVG)
- Security Assertion Markup Language (SAML)
- Unified Modeling Language (UML)
- RDF Site Summary, Rich Site Summary, Really Simple Syndication (RSS) 1.0 and 2.0
We will see how you can leverage these standards with Domino 6 to solve practical problems in your environment.
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.
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.
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.
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."
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 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.
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.
Learn
-
The Open Source home page provides a good general overview of what the Open Source movement is all about.
-
The World Wide Web consortium (W3C) page is a good resource for Open Standards information.
-
You can learn more about RSS by reading the developerWorks article, "Content feeds with RSS 2.0."
Discuss
-
Participate in developerWorks
blogs and get involved in the developerWorks community.
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)




