Tangled in the ThreadsJon Udell, November 22, 2000
From the mailbag
Notable projects and productsReaders point Jon to a variety of interesting software projects
Readers of this column are a creative and eclectic bunch. They write to me about all sorts of interesting projects they know about, or are working on. Here are some of them.
Zope for Perl?
I've wondered, from time to time, why there isn't an object publishing system, a la Zope, for Perl hackers. Here are three Perl projects that locate themselves in that space.
Leslie Michael Orchard wrote to tell me about Iaijutsu, which is described on SourceForge as follows:
Iaijutsu is an Open Source object oriented web content management and application framework written with Perl. (And chock full of buzzwords, to boot!)
As an object oriented framework, Iaijutsu seeks to address the problem domain of web content management and application development with a set of flexible, reusable, and extensible classes. In other words, solve all the common problems of web programming once and get on to the more interesting stuff.
As a content management system, Iaijutsu gives the ability to create, edit, and maintain web site content with a common, consistent, and easy to use web interface. Pieces of content are treated as objects, with a set of properties to maintain (ie. text, dates, images) and actions which can be performed upon them (ie. create, edit, delete, view).
As an application platform, Iaijutsu addresses web programming with a 3 tier or layer approach: Content, Presentation, and Logic are separate but linked aspects. Content refers to the raw text, images, and data which comprise a site. Presentation is the particular look and feel or target interface the web site or application serves (not necessarily limited to HTML web browsers). And Logic is comprised of the rules and behavior of the web application.
The prolific Slashdot book reviewer known as chromatic is also the author of a Perl-based object web server called Jellybean, another project hosted on SourceForge.
Here's what chromatic says about Jellybean:
- Pure-Perl -- it's easy to deploy, especially on Unix platforms. It's easy to extend, too, and fix bugs, if you know Perl.
- Cross-platform -- in addition to Unix, it runs successfully on Windows and probably MacPerl. The only modules it requires are available from both CPAN and ActiveState in PPM form.
- Easy to deploy and install -- configuration is simple, using text files and short Perl programs. The Beanstalk Beanpack makes it easy to add new features while the server runs.
- Easily extended -- master a few concepts and you can turn any CGI into a Jellybean-aware application.
- Functional web server -- Jellybean supports most of the HTTP standard, and can perform the common features of a web server.
- Smallish footprint and distributed computing -- Jellybean can be run on a laptop in conjunction with a web browser when the user cannot connect to a central server. The Synchronization objects can shuttle data back and forth from the user's offline stash to the group's central repository.
- Customizable -- there's room to do a great many things.
Matt Sergeant, a leading Perl/XML wizard, wrote to tell me about AxKit, which stands for "Apache XML Delivery Toolkit." Matt says:
For a while now you have lamented on the lack of a Zope-a-like in Perl. Well I just wanted to quickly point you to AxKit. The focus is slightly different at this moment, because I've merely been laying the infrastructure, but I think you'll find what I have quite interesting (at least I hope so!). The next stage is to build a CMS [Content Management System] around this framework.
The current system is based on plugin components, and it only takes a short amount of coding to replace those components with something different. So while right now everything is read from the filesystem, the next step is to move to a database backend that handles version control and workflow. The entire CMS will be actually built using the current system, which will allow you to use the CMS from a variety of devices, including handhelds, which I think is a major step forwards (or possibly not - it remains to be seen!).
This reminded me more of Cocoon than Zope. And a Perlish Cocoon would be a wonderful thing. When I saw a Cocoon demo, I was amazed to see how all of its power was crippled when it came time to do some simple string manipulation that would have been child's play in Perl.
Here's what Matt said when I asked him about that:
Unfortunately it's not possible to create XSLT extensions in Perl -- although that would be a nice addition I think it's beyond our current capability. But we do offer a template language that is pure Perl, which of course gives you the full expression power of Perl, but with the combined power of declarative templates and XPath. It's called XPathScript.
Peerware and groupware
Several folks wrote in response to my column on Groove, with pointers to interesting Groove- or P2P-related stuff.
You might be interested in our Groove tool. Check it out at http://www.agora.co.uk/groove/RAGTool.htm
It's a project status tracker. I'm really curious to see what other kinds of Groove apps emerge in the coming months.
It was a pleasure to read your "Let's Groove" column about Ray Ozzie's peer-to-peer platform. Having worked for over five years with Notes and then over a year for a P2P startup (PeerMetrics) I was pleased with the simplicity of using Groove. However, this simplicity might be exactly what turns off the corporate clients since everyone of them is different and has slightly different security, workflow, and project management requirements. What this type of a collaborative tool requires is a shift in the corporate culture away from centralized control and the existing project management procedures. How many companies are ready for that?
Thank you for bringing up the administrative complexities of running Notes. This general point is something that has been largely ignored in the peer-to-peer literature.
I have yet to see an article about how P2P software will reduce the administrative costs within a business. While sharing CPU cycles and bandwidth is very advantageous to big businesses and good collaborative tools might increase productivity, I think it is the exponentially growing IT departments that have the biggest impact on the bottom line. Peer-to-peer software allows businesses to scale without the weight of an overblown IT department. Now, with payroll being the biggest expense of *every* business, this is a very significant advantage of P2P software.
Thanks, Peter! Although you were too modest too draw attention to it directly, here's a poiner to Peermetrics' Java-based P2P platform.
A self-described "Notes geek," Charles hopes that Lotus will "move into a more open-standards way of doing things" and cited two projects that illustrate what he means:
There is a small fringe of Dominotes consultants who are Internet-literate and do wacky things like implement Wiki in Notes (http://www.emconnect.com/wiki/html/Emc/FrontPage.htm) or hook up Python to Notes classes (http://www.dominopower.com/issues/issue200008/command001.html).
Martin Heller focuses on REBOL in his column this month. Here's more on the language from Ed O'Connor, who's written several time to clue me in to REBOL:
REBOL downplays OOP (hold your boos). The inventor of REBOL, Carl Sassenrath, was a longtime OOP guru (he ported Smalltalk to the Sun platform some 20 years ago). But with REBOL he wanted a more lightweight, flexible yet powerful architecture. So rather than leveraging a biological model (OOP), Carl based REBOL on human communications and linguistics.
Hence REBOL is a "messaging" language. With REBOL, the idea is that you can quickly assemble domain-specific syntax and vocabularies for processing and transmitting information. REBOL Technologies calls this "dialecting". It's like XML, but more flexible because it encapsulates meaning in a way that's much richer than markup. The icing is that REBOL includes data transport, manipulation and the ability to morph into XML if need be.
An example of dialecting is the vocabulary REBOL/View includes for creating GUI's. You don't have to use it, but it can make simple GUI construction very rapid. It also lets your scripts generate message boxes and dialog boxes very easily. Here's an example that uses an image background, titles the window and includes an e-mail button:view layout 640x480 [ backdrop %ocean.jpf title "Welcome Page" button "Send E-mail" [ send email@example.com "REBOL is pretty wild" ] ]
REBOL Technologiesw has already written a dialect for creating slideshows, and they're working on a desktop metaphor. Interesting stuff for a 265KB cross-platform scripting language!
Next-generation Web UI
Several columns have wrestled with the question: "How do we recapture the richness of the GUI without sacrificing the simplicity of the Web?" Here's one interesting approach to breathing life into client-side Java.
Our company, AppStream, Inc., is developing several solutions for Java technologies in the area of streaming applications (as opposed to streaming media), version control, and user profiling. We are readying a solution that will:
- stream the JVM
- manage deployment of JVMs
The benefits are obvious to Java users and developers who moved away from client-side Java due to slow downloads time (applet, JVM) and inconsistent environment. We are able, for example, to detect which version of the JVM is currently installed, which version is needed, and if newer to STREAM the delta. Alternatively if a different JVM is needed altogether we will stream that one as well. The user does not have to wait for the entire JVM to download to start executing. As soon as the required classes are streamed the applet or application can start executing.
Jon Udell (http://udell.roninhouse.com/) was BYTE Magazine's executive editor for new media, the architect of the original www.byte.com, and author of BYTE's Web Project column. He's now an independent Web/Internet consultant, and is the author of Practical Internet Groupware, from O'Reilly and Associates. His recent BYTE.com columns are archived at http://www.byte.com/index/threads
This work is licensed under a Creative Commons License.