Integrating web applications
There is an exploding number of high quality open source web applications. From Drupal to Moodle, from Elgg to phpBB, the choice seems endless. The problem is no longer “can I find an open source application to meet my needs”, but rather “what is the best open source application to meet my needs?”
Answering the second question is not always easy because different applications have different strengths and weaknesses. Elgg is good at presenting and searching user profiles. Moodle has many features for on-line courses. PhpBB is great for discussions. Drupal and Joomla can be used to construct more generic news and feature sites and have plugins for specialised applications ranging from collaborative books to private messaging. In the real world, many projects require a combination of these features. The tendency has been to port features from one application to another so that Elgg can support blogging, for example, or PhpBB private messaging. This has been made easier by plugin architectures and the rise of PHP as the dominant open source web application programming language.
Nevertheless, endlessly adding features can lead to bloated web applications that are the “jack of all trades but master of none”. This can divert precious development time from making an application the best that it could be into duplicating features that are better implemented elsewhere. A better situation would be to find ways to bolt together specialised applications that combined provide the features required for a specific project.
There are numerous barriers to integrating web applications. However, solutions are now available to overcome some or all of these problems.
A common look and feel
Integrated web applications should flow together seamlessly with a common navigation and graphic design. Most current web applications have separated back end functionality from front end design using a combination of CSS, XHTML and template engines like PHPtemplate or Smarty. This makes it easy to redefine the look and feel of a web application and to implement a common design across multiple applications. CSS allows the redefinition of many design elements ranging from the appearance of titles to the location of entire sections of a web page. Template engines go even further and make it possible to specify the layout and information displayed for a blog entry, comment or navigation box, for example.
There is not yet a common set of CSS tags defined across applications, and creating design templates often requires a detailed understanding of each specific web application. Fortunately, most current web applications have a standard set of templates that can be used as a good starting point. Typically implementing a design may take only a few days for each application.
Single sign on and profile exchange
Most web applications maintain their own user databases. They have often complex registration processes that may require clicking on a link in a confirmation message and filling out a registration survey. Each application has its own password to set up and remember. The registration process is made even more tedious because users often have to enter essentially the same information over and over for each application.
Recently new technologies, including single sign on and profile exchange, have offered solutions to make registration and login much simpler or even completely invisible. OpenID is based on the clever idea that passwords are not necessary if authentication is based on asking a second application if the user is already logged in on the same machine. As a result, applications using OpenID only require users to sign on to one application, the OpenID server. OpenID also has a simple profile exchange mechanism, which means that applications can transfer user data from the OpenID server. This means that registration may be unnecessary and that users can maintain their information in one place and have it automatically transferred to and updated in other applications. If the applications share the same domain, then it is even possible to store the OpenID username in a cookie and automatically register and log users in, making the separate user databases completely invisible.
There is already a preliminary OpenID server plugin available for Elgg, which has many features that may make it an ideal profile exchange server.
Google is perhaps the ultimate integrated search application, making it possible to find information across all the world's public websites. But there are a number of reasons for other search applications as well – perhaps because it is useful to search by the creator of the information, or to search for specific resources like tags, or because the information is not public and lies behind a login or firewall.
In 2005, Microsoft proposed an open standard for syncronising data across multiple web applications called Simple Sharing Extensions (SSE). SSE is based on RSS, a series of standards for syndicating website content in a standard format. SSE extends RSS by adding ways to signal that a piece of existing content has been changed or deleted. This makes SSE an ideal mechanism for integrating search results across multiple web applications. Each application can provide an SSE feed and then one application serving as the search engine can periodically read these SSE feeds and store the results in a database.
A second standard called OpenSearch proposed by Amazon, also in 2005 and also based on RSS, deals with the opposite end – syndicating search results. OpenSearch defines a standard way for applications to request search results, and a standard format for delivering them in XML. Thus, any application that wants to provide search results simply needs to provide an SSE feed and an OpenSearch parser to display search results on its web pages. The complexities of managing a full text search engine for each web application are no longer necessary – this task can be assigned to one application, such as Drupal, which already has a fast full text search engine and an existing plugin to syndicate OpenSearch results.
Integrating search is similar to integrating user data – one application can be assigned the responsibility for collecting and distributing the information, freeing up other applications to focus on providing other functions.
New technologies such as template engines, OpenID, SSE and OpenSearch make it possible to seamlessly combine several web applications and benefit from the best features of each. Over the next few months, we can expect to see plugins for many of these technologies become available for most popular web applications, opening up the way for new combined applications with unprecedented functionality.