{"id":165,"date":"2000-06-21T21:15:51","date_gmt":"2000-06-22T04:15:51","guid":{"rendered":"http:\/\/www.jeffcarl.com\/?p=165"},"modified":"2020-07-08T19:04:32","modified_gmt":"2020-07-09T02:04:32","slug":"jabber-and-zope-can-open-source-beat-the-most-popular-commercial-products","status":"publish","type":"post","link":"https:\/\/www.jeffcarl.com\/index.php\/2000\/06\/21\/jabber-and-zope-can-open-source-beat-the-most-popular-commercial-products\/","title":{"rendered":"Jabber and Zope &#8211; Can Open-Source Beat the Most Popular Commercial Products?"},"content":{"rendered":"\n<p class=\"has-medium-font-size\"><strong>By Jeffrey Carl<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright\"><img loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"109\" src=\"http:\/\/www.jeffcarl.com\/wp-content\/uploads\/2020\/04\/bwatch.gif\" alt=\"Boardwatch Magazine\" class=\"wp-image-22\"\/><figcaption>Boardwatch Magazine, June 2000<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"has-background has-light-gray-background-color\"><em>Boardwatch Magazine was the place to go for Internet Service Provider industry news, opinions and gossip for much of the 1990s. It was founded by the iconoclastic and opinionated Jack Rickard in the commercial Internet&#8217;s early days, and by the time I joined it had a niche following but an influential among ISPs, particularly for its annual ranking of Tier 1 ISPs and through the ISPcon tradeshow. Writing and speaking for Boardwatch was one of my fondest memories of the first dot-com age.<\/em><\/p>\n\n\n\n<p>\u201cJabber\u201d and \u201cZope\u201d sound like two characters from \u201cAlice in Wonderland.\u201d Or maybe characters in Quake II (\u201cjabber saw the light from zope\u2019s BFG-10K\u201d). Either way, what they really represent are attempts by the open-source community to beat commercial offerings in emerging critical Internet areas: instant messaging (IM) and web application development.&nbsp;<\/p>\n\n\n\n<p>Can they do it? On one hand, projects like Apache and Linux or *BSD have shown that open source software&nbsp;<em>can<\/em>&nbsp;lead the industry in performance. On the other hand, both projects face the perennial Achilles\u2019 heel of open-source projects \u2013 lack of commercial distribution channels and a corresponding difficulty in gaining enough market share to become a standard. Let\u2019s take a look at both projects, how ISPs can use them, and whether they can beat the big commercial packages.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jabber<\/h2>\n\n\n\n<p>Once upon a time, there was Mirabilis ICQ (\u201cI Seek You\u201d). And lo, it was good. Then it was bought by AOL and became the basis for AOL Instant Messenger (AIM). Then Microsoft\u2019s MSN and Yahoo! got into the act with similar programs that could communicate with the zillions of ICQ\/AIM users. Then AOL said, \u201cOh no you&nbsp;<em>don\u2019t<\/em>.\u201d Then Hell froze over and Microsoft started complaining to AOL about \u201copen standards\u201d and MSN et. al. whined to Congress about it\u2026<\/p>\n\n\n\n<p>Right now, IM is a mess. AIM, with an astonishing 45 million users, holds tight to its grip on ICQ, keeping its service proprietary. Few people are inclined to shed tears for Microsoft because it\u2019s being disadvantaged by proprietary systems. Still, many users are seeking an IM program that, like J.R.R. Tolkien\u2019s \u201cOne Ring,\u201d would \u201cbind them all together.\u201d<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is it?<\/h2>\n\n\n\n<p>There are plenty of open-source ICQ clones (like LICQ [<em>www.licq.org<\/em>], popular on Linux). Jabber is quick to point out that it isn\u2019t just another ICQ clone. As the project\u2019s FAQ page says:&nbsp;<\/p>\n\n\n\n<p>Put simply, Jabber is an open source, cross-platform, completely extensible, end-all to Instant Messaging as we know it. Never again will you have to worry about finding the right client to talk to your friends, nor will you have to concern yourself with having three or four different clients open so that you can chat with all of your associates. And all you have to do is pick the client that you like for the platform you want!<\/p>\n\n\n\n<p>Jabber is genuinely different from other instant-messaging products, although the differences are \u201cunder the hood.\u201d A Jabber user gets an account with a Jabber server, and the server then takes care of all the \u201cheavy lifting\u201d \u2013 communicating with other servers and translating the protocols of other IM systems into Jabber\u2019s own XML (eXtensible Markup Language)-based messaging protocol. In theory, server modules can be written to parse any other IM protocol, and connectivity to those systems is then automatically provided to the client.&nbsp;<\/p>\n\n\n\n<p>How does it work?<\/p>\n\n\n\n<p>Joe User gets an account with a Jabber server. He also gets accounts with AIM and Yahoo! Pager. His Jabber server stores his account info and \u201cbuddy lists\u201d (roster) for each IM service, allowing him to access all of them through his one server and one client. Assuming that the server has the requisite protocol \u201ctransports,\u201d he can then communicate with users of any of these services from his Jabber client.&nbsp;<\/p>\n\n\n\n<p>The native Jabber protocol is an XML stream over a TCP socket, allowing for a number of possibilities for how and over which port it can be sent (a bonus for its potential ability to evade firewalls, critical to the success of any IM protocol). The Jabber client communicates only with its server, which then handles all of the protocol-translation and communication issues.&nbsp;<\/p>\n\n\n\n<p>What\u2019s so great about it?<\/p>\n\n\n\n<p>Obviously, the ability to communicate with any IM protocol is a&nbsp;<em>huge<\/em>&nbsp;plus, potentially making Jabber the \u201choly grail\u201d of IM platforms. Also, its reliance on the server model simplifies matters for users significantly.<\/p>\n\n\n\n<p>While it promotes unity among IM protocols, Jabber also promotes competition within its own ranks, and Jabber users can choose from a number of different Jabber clients, each with their own foci, strengths and weaknesses. Its open standard and protocol means that anyone who would like to create a new client or offer new features can do so with (relative) ease.<\/p>\n\n\n\n<p>Also, Jabber is intended to be cross-platform. Work on clients is reportedly underway for *nix on command line and X-Windows, Win32, MacOS, browser-based, and even Newton.<\/p>\n\n\n\n<p>What still needs work?<\/p>\n\n\n\n<p>As of this writing in mid-April, just about&nbsp;<em>everything<\/em>. Jabber is still very much a work in progress (its server has yet to reach 1.0 status or implement working transports for other IM systems), and it remains to be seen a.) how well its compatibility with other IM protocols will work, and b.) how well it will work by itself. Most of the clients are still missing some user-interface niceties, and a working standard for security\/encryption of Jabber messages has yet to be implemented.<\/p>\n\n\n\n<p>Jabber is like Rambus \u2013 one of those long-shot bets which will either take over the world or be a perennial also-ran. It has all of the right ingredients, but only time will tell whether it fulfills its promise.&nbsp;<\/p>\n\n\n\n<p>A critical hurdle is the same interoperability issue which has plagued other IM clients: will AOL try to block it? AOL\u2019s ICQ users are such a tremendous asset to AOL that it\u2019s hard to imagine that AOL&nbsp;<em>won\u2019t<\/em>&nbsp;try to block Jabber out if it gains much share of the market.&nbsp;The jury is still very much out on Jabber\u2019s eventual success \u2026 and whether, if it can\u2019t communicate with others, it can succeed on its own.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zope<\/h2>\n\n\n\n<p>Zope (the \u201cZ Object Publishing Environment\u201d) is \u2026 well, it\u2019s hard to describe in a hurry. But it\u2019s very cool.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is it?<\/h2>\n\n\n\n<p>It describes itself as an \u201capplication server,\u201d and its goal is to provide a framework for creating and maintaining large websites with advanced functionality like site users, feedback and content databases. Elements of Zope (currently at version 2.1.6) compete with both higher-end commercial software like WebObjects or Cold Fusion, as well as open-source site spinoffs like slash (the source code for the backend to&nbsp;&nbsp;<em>slashdot.org<\/em>).&nbsp;<\/p>\n\n\n\n<p>Zope is portable, since it\u2019s written in Python (with some performance-critical parts in C); currently, it runs on Windows NT and nearly any Unix. Installing and running Zope requires that you have Python (<em>http:\/\/www.python.org<\/em>) version 1.5.2 or higher installed on your server. It requires Python to be built with threads support; if you\u2019re installing Python to use Zope, be sure to run the pre-installation&nbsp;configure&nbsp;script with the&nbsp;&#8211;with-thread&nbsp;option.<\/p>\n\n\n\n<p>Zope began life in the Bobo Web Object System, developed by a company called Digital Creations (<em>http:\/\/www.digicool.com<\/em>). The Bobo framework was open-sourced, while the company sold a commercial application server based on it, which was named Principia.&nbsp;<\/p>\n\n\n\n<p>Seeing that the application server market was dominated by big names whose marketing muscle Digital Creations could never compete with, the company decided in December 1998 to combine Principia and Bobo, rename it Zope, and open-source the whole shebang. Zope began to gain recognition and users, while Digital Creations shifted its business model to providing commercial support and consulting for Zope.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How does it work?<\/h2>\n\n\n\n<p>The heart of the system combines an ORB (Object Request Broker) with an object database, allowing pages to be simply and dynamically created. The main components of Zope are:&nbsp;<\/p>\n\n\n\n<p>\u2022 the ORB, which extracts information from the database<\/p>\n\n\n\n<p>\u2022 the object database itself&nbsp;<\/p>\n\n\n\n<p>\u2022 the publisher, which interfaces with a web server<\/p>\n\n\n\n<p>\u2022 the template system, for dressing up content in your customized page templates<\/p>\n\n\n\n<p>\u2022 the management structure, which handles authoring\/access permissions&nbsp;<\/p>\n\n\n\n<p>Here\u2019s the short,&nbsp;<em>short<\/em>&nbsp;version: you download Zope to the server where its content will be server from. Zope is available as a Windows executable, in RPM format for Linux, or tar-gzipped source archives for Solaris, Linux or any other *nix. For a quick start, just run the Zope setup script, then run the&nbsp;start&nbsp;script it builds, and away you go. Zope launches its own web server on the port of your choice (default 8080), although you can easily configure it to use Apache, IIS or another server.<\/p>\n\n\n\n<p>You can then use a web browser to view pages or go to its \u201cmanage\u201d interface. Using these controls, you can create new folders and add content to them. You also use the manage interface to assign basic functionality (who can access or alter the contents, HTML templates and error messages, etc.). This interface also provides \u201capproval\u201d and \u201cundo\u201d functionality as well.<\/p>\n\n\n\n<p>The content comes in the form of \u2026 well, lots of things \u2013 users, images, or other items usable by the database. Primarily, though, it will be DTML (Document Template Markup Language) objects, which can contain XML, DTML or good plain old HTML. DTML works like server-parsed HTML on steroids, offering very advanced functionality. An example might look like this:<\/p>\n\n\n\n<p>&lt;!&#8211;#var my_header&#8211;&gt;<\/p>\n\n\n\n<p>&lt;!&#8211;#if &#8220;AUTHENTICATED_USER==&#8217;Jeff'&#8221;&#8211;&gt;<\/p>\n\n\n\n<p>&lt;h3&gt;Here is the customer list:&lt;\/h3&gt;<\/p>\n\n\n\n<p>&lt;table&gt;<\/p>\n\n\n\n<p>&lt;!&#8211;#in showCustomers&#8211;&gt;<\/p>\n\n\n\n<p>&lt;tr&gt;<\/p>\n\n\n\n<p>&lt;td&gt;&lt;!&#8211;#var cust_name&#8211;&gt;&lt;\/td&gt;<\/p>\n\n\n\n<p>&lt;td&gt;&lt;!&#8211;#var cust_type&#8211;&gt;&lt;\/td&gt;<\/p>\n\n\n\n<p>&lt;td&gt;&lt;!&#8211;#var acct_balance&#8211;&gt;&lt;\/td&gt;<\/p>\n\n\n\n<p>&lt;\/tr&gt;<\/p>\n\n\n\n<p>&lt;!&#8211;#\/in&#8211;&gt;<\/p>\n\n\n\n<p>&lt;\/table&gt;<\/p>\n\n\n\n<p>&lt;!&#8211;#else&#8211;&gt;<\/p>\n\n\n\n<p>&lt;em&gt;Sorry, you can\u2019t read this!&lt;\/em&gt;<\/p>\n\n\n\n<p>&lt;!&#8211;#\/if&#8211;&gt;<\/p>\n\n\n\n<p>&lt;!&#8211;#var my_html_footer&#8211;&gt;<\/p>\n\n\n\n<p>And there, you have a complete, well-formatted HTML page. The DTML page above calls in an external HTML page header that you uploaded named&nbsp;my_header, checks to see if the user has permission to view a table, and if so calls an object which is a SQL query that you defined earlier called \u201cshowCustomers\u201d and displays the results in a table. If the user viewing the page isn\u2019t the one it expected, it prints an innocuous HTML message. For everyone, it then prints the external HTML footer you named&nbsp;my_footer.<\/p>\n\n\n\n<p>All of this can be easily done with CGI, but learning the DTML syntax is significantly easier for most people than learning Perl or C. Furthermore, the ability to integrate this into a sitewide management structure is a&nbsp;<em>big<\/em>&nbsp;plus.<\/p>\n\n\n\n<p>So, essentially, with Zope you don\u2019t so much build pages of a site as you build objects of content \u2013 FAQs, stories, other information \u2013 which get stuffed into a database. You then create folders and pages that are DTML frameworks which can include one simple content object (for a simple, non-dynamic page) or make complicated queries (the last five news objects submitted, all objects submitted by a certain author, the most recent graphic of a certain type, SQL queries, etc.). If you\u2019re unfamiliar with the process, it takes a while to \u201cwrap your head around it,\u201d but it provides a&nbsp;<em>tremendous<\/em>&nbsp;amount of possibilities.<\/p>\n\n\n\n<p>A very readable introduction that lays out the functional aspects of using Zope (as well as giving a much better explanation of DTML examples like the one above) can be found at&nbsp;<em>http:\/\/www.devshed.com\/Server_Side\/Zope\/Intro\/<\/em>. An in-depth look focusing on Zope\u2019s database model is at&nbsp;<em>http:\/\/webreview.com\/pub\/1999\/03\/05\/feature\/index2.html<\/em>. There is an excellent library of pre-built and member-contributed projects that provide example code to learn from at&nbsp;<em>http:\/\/www.zope.org\/Products<\/em>, as well.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What\u2019s so great about it?<\/h2>\n\n\n\n<p>First, Zope provides an interface to adding\/administering the site\u2019s content which is accessible through a web browser. It allows for relatively complex security\/permissions setups, which allow the administrator to set access privileges for various groups of contributors (administrators, writers, designers, etc.). Zope makes use of the emerging WebDAV (\u201cWeb-based Distributed Authoring and Versioning\u201d[<em>www.webdav.org<\/em>]) standard to collaboratively manage and handle versions of pages or objects on a site. This also allows for good integration with existing software which supports WebDAV, like Microsoft Office 2000 or Internet Explorer 5 on the client side or Apache with&nbsp;mod_dav&nbsp;on the server side.&nbsp;<\/p>\n\n\n\n<p>Zope provides its own transactional object database, which means that you won\u2019t need to add another database (e.g., MySQL, Oracle, MS SQL, etc.) to provide a back-end. One of the primary benefits to using a transactional (keeping track of additions\/changes as \u201ctransactions\u201d) database like the one Zope provides is that it allows you to \u201cundo\u201d changes if you need to. The database is optimized to match the needs of most web databases, which are frequently being queried but only occasionally have new data written to them. The Zope database is also easy to back up, and is designed to work with \u201csimple URLs\u201d (unlike those created by WebObjects).&nbsp;&nbsp;<\/p>\n\n\n\n<p>One of Zope\u2019s strong features is interoperability with existing SQL databases. You can set up a Zope database connection to an existing database and apply SQL queries from a Zope DTML page to the older database. Zope also makes good use of XML, allowing interoperation with XML data sources. The Zope database stores a great deal of information besides just your primary content objects; it also keeps track of user postings and threaded discussions, user logins and permission settings, and allows users to customize the way they view the site.<\/p>\n\n\n\n<p>Like any good open-source product, Zope makes very good use of open standards. Aside from WebDAV, SQL and XML, Zope supports HTML 4 and CSS, HTTP 1.1, FTP, FastCGI, DOM, LDAP and other goodies.&nbsp;<\/p>\n\n\n\n<p>Lastly, it was announced in late March that Digital Creations would be open-sourcing its ZEO (Zope Enterprise Option), which can turn Zope into a distributed system. Allowing Zope to scale to multiple machines should make it a feasible choice for high-demand sites which need to be served from multiple machines. Zope has also announced interoperability with Microsoft\u2019s SOAP (Simple Object Access Protocol) sort-of-standard. Whether this will become a \u201cbig deal\u201d remains to be seen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What still needs work?<\/h2>\n\n\n\n<p>At first glance, Zope is just plain difficult to understand for most people. The Zope feature tour (<em>http:\/\/www.zope.org\/Tour\/ar01.html<\/em>) is a good start, and the Zope Guides (<em>http:\/\/www.zope.org\/Documentation\/Guides<\/em>) are helpful (if understandably incomplete) but some more \u201chand-holding\u201d higher up in the online documentation might convince more users to \u201cget their feet wet\u201d with Zope.<\/p>\n\n\n\n<p>Zope is certainly on the right track with the emerging standards it uses, but some of these standards will take time to build the user base to allow Zope to really shine (for example, when WebDAV publishing will work from more applications than just IE 5 and Office 2000). The WebDAV standard itself isn\u2019t fully fleshed out yet, and I have to admit that any standard which Microsoft has taken a strong interest in makes me worry a bit.<\/p>\n\n\n\n<p>Lastly, Zope simply isn\u2019t for everyone. If you have a relatively small or simple site, the overhead of learning and serving Zope will probably be a waste of time. If you\u2019re willing to put in the time, using Zope from the get-go will help you scale your site if you need to \u2013 but in many cases, using Zope is swatting a fly with a sledgehammer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Verdict: Jabber, Zope and You<\/h2>\n\n\n\n<p>What can Jabber and Zope do for you? Well, in the short term, you can offer support for them and promote them to your customers. With Zope, ISPs can offer Zope support and make a presence in the small (but growing) market for Zope site-hosting.&nbsp;<\/p>\n\n\n\n<p>With Jabber, ISPs can run their own local Jabber servers. In the short term, it can be used by supplying your NOC with a Jabber nick through which clients can contact them; in the long term, if Jabber meets its promise, your local Jabber server can be a great way to tie users to you (to be Machiavellian, your Jabber server will hold all of their IM contacts and make it a pain to migrate elsewhere).<\/p>\n\n\n\n<p>Will either of these projects ever gain the ubiquity of Apache, sendmail or Linux\/BSD? Probably not. But Jabber holds an&nbsp;<em>extraordinary<\/em>&nbsp;amount of promise, and can be an excellent value-added tool for ISPs \u2013 and it\u2019s free \u2013 so there\u2019s little reason not to be an early adopter. Zope will almost certainly remain a limited-interest project, but it can be of use to you for your own web sites as well as providing a differentiating service for site hosting.&nbsp;<\/p>\n\n\n\n<p>Can Jabber and Zope beat out the commercial competition? Only time will tell. But, considering the cost (nothing but your time), it\u2019s almost a no-brainer for you to \u201cdo the right thing\u201d and support open standards, and to investigate providing support for both with your ISP.&nbsp;<\/p>\n\n\n\n<p>Who knows? If you bet on enough long shots, one of them might turn out to be a winner.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Jeffrey Carl Boardwatch Magazine was the place to go for Internet Service Provider industry news, opinions and gossip for much of the 1990s. It was founded by the iconoclastic and opinionated Jack Rickard in the commercial Internet&#8217;s early days, and by the time I joined it had a niche following but an influential among &hellip; <a href=\"https:\/\/www.jeffcarl.com\/index.php\/2000\/06\/21\/jabber-and-zope-can-open-source-beat-the-most-popular-commercial-products\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Jabber and Zope &#8211; Can Open-Source Beat the Most Popular Commercial Products?<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":22,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,66],"tags":[],"class_list":["post-165","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-boardwatch-writing","category-tech"],"jetpack_featured_media_url":"https:\/\/www.jeffcarl.com\/wp-content\/uploads\/2020\/04\/bwatch.gif","_links":{"self":[{"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/posts\/165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/comments?post=165"}],"version-history":[{"count":1,"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/posts\/165\/revisions"}],"predecessor-version":[{"id":166,"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/posts\/165\/revisions\/166"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/media\/22"}],"wp:attachment":[{"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/media?parent=165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/categories?post=165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jeffcarl.com\/index.php\/wp-json\/wp\/v2\/tags?post=165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}