It's often said that open source Latest News about open source doesn't innovate. It imitates. That's certainly what the proprietary software industry would have you believe. Looking at the activity in some of the most prominent open source projects in use in enterprises today, it's tempting to agree.
For example, although open source databases are incredibly popular for all kinds of mission-critical applications, neither MySQL or PostgreSQL is really doing anything that IBM (NYSE: IBM) Latest News about IBM, Microsoft (Nasdaq: MSFT) Latest News about Microsoft, Oracle (Nasdaq: ORCL) Latest News about Oracle, and Sybase (NYSE: SY) Latest News about Sybase haven't been doing for years. Similarly, the OpenOffice.org productivity suite is an impressive example of community-driven development, and yet its only real purpose is to create a free, standards-based clone of Microsoft Office. Even Linux itself is an attempt to rewrite Unix as free software.
Apache Leads the Way
None of this discounts the fact that open source has blazed a trail or two of its own rather than simply following the pack. The Apache Web server is a prime example. Apache has been the Web server of choice since it was forked from the National Center for Supercomputing Applications' httpd in 1995. According to Netcraft, the Web site and server barometer, 62 percent of all Internet Free How-To Guide for Small Business Web Strategies - from domain name selection to site promotion. Web sites run Apache today, compared with 31 percent running Microsoft IIS (Internet Information Server).
As Microsoft's Internet Explorer demonstrates, however, mere popularity isn't a measure of first-rate performance. Apache is most often the default Web server installed on most Linux servers, but its success isn't simply due to familiarity or lack of competition. Rather, it offers stability, high performance, a stellar security record, and an impressive array of features and extensions that give it many more capabilities than its commercial competitors.
Apache effectively created the market for Web server software and continues to lead the way. In five years' time, IIS will no doubt be around in one form or another, but Apache will still lead the pack, pushing the envelope of what a Web server can do.
So was Apache a fluke? Is it the lone case where the open source community was able to anticipate demand for a product before proprietary vendors could implement it? Hardly.
Across the software industry, countless developers, individuals and companies are experimenting with open source methods. One reason is that community-driven development allows a software product to grow organically. As Eric S. Raymond observed in his seminal work, The Cathedral and the Bazaar, "Every good work of software starts by scratching a developer's personal itch." When a group of developers begins to collaborate in an open fashion, each one scratching a unique personal itch, the result is software that expands to fill those functional areas not addressed by proprietary offerings.
Examples of this kind of collaborative innovation can be found across the IT landscape. To prove it, we marshaled a handful of essayists to showcase the abundant examples of how open source software is not only matching the capabilities of proprietary software, but going it one better.
Open Source Breathes Life Into Java
There can be no doubt that open source has been a tremendous boon to Java Latest News about Java. The JCP (Java Community Process), by which the Java language and platform moves ahead, seems to inch forward at a glacial pace. Committee review and approval are slow, thoughtful processes, but they're conducted at a pace that cannot be wholly condemned. Java, after all, is the leading platform for enterprise applications and, as such, it should evolve slowly, even when needs are pressing. Resolving one set of problems by creating another is never a good solution.
At the other end of the spectrum, however, is the open source community, which has been galloping ahead with numerous important innovations. The fundamental tools of enterprise Java today are all open source: Ant (for building applications), Hibernate (for persisting data to disk), JUnit (for running unit tests), and Maven (for continuous integration); not to mention the highly regarded Eclipse and NetBeans development environments and the PMD source code validator.
Java developers also benefit from several open source frameworks, such as JSF (JavaServer Faces), Spring, and Struts. Then there are the numerous containers: Apache Tomcat, Geronimo, Jetty, Jonas, and Resin -- to say nothing of many smaller containers for embedded use. Open source has been a tremendous font of imagination and productivity for the Java world.
Between these two streams -- the JCP and open source -- stand the three major providers of enterprise Java technology: BEA (Nasdaq: BEAS) Latest News about BEA Systems, IBM and Sun Microsystems (Nasdaq: SUNW) Latest News about Sun Microsystems. They all straddle the line between open source and closed tools. Although many IBM tools are proprietary, it has been a major contributor to Java itself and to the open source community. BEA has become very active of late with its "blended" strategy, in which its proprietary tools actively support open source products. In addition, BEA also has donated code and bodies to several open source projects.
Sun remains something of a holdout. Zealots have been hectoring Sun to open source Java, in hopes of accelerating innovation in the platform. Sun, however, has dragged its feet. There is some logic to its action -- or lack thereof -- namely, that opening the Java code could splinter Java into differing versions, thereby diminishing its vaunted portability, but the community has stridently attacked this stance.
This puts Sun in a position to which it is unaccustomed, in view of its long-standing contributions to open source. Sun remains the only company to have open sourced its own operating system and a complete office productivity suite. Indeed, it has open sourced many Java technologies. So, perhaps grudgingly, at LinuxWorld in August, Sun made explicit the time frame in which it intended to open the Java libraries and Java Virtual Machine, in addition to launching a community Web site where developers can track its ongoing progress.
Will all this vigorous energy in the direction of open source benefit Java in the long term? Its slow pace of development aside, part of Java's success lies in the stewardship Sun has shown. Taking that role out of Sun's hands by opening the Java source code could result in brilliant enhancements to the platform, or it might end up damaging it.
Devices Gain an Edge With Linux
Linux is finding success in much smaller devices than the servers and workstations that have traditionally been its mainstays. For embedded systems developers, the advantage of Linux over proprietary OSes lies as much in its flexibility and openness as in its low cost.
The consumer electronics market has an insatiable demand for new technologies, but developers working with proprietary embedded platforms from the likes of Microsoft and Symbian Latest News about Symbian must depend on a single vendor to deliver device drivers and support for the latest hardware. Their developer counterparts in the open source community, however, often begin tinkering with technology as soon as it's released. The code they produce may be raw, but it appears quickly, which in turn allows them to produce prototypes faster, get to market sooner, and gain first-mover advantage over their competitors.
Linux also makes it easier to build complex embedded applications. Traditional RTOS (real-time operating systems) for embedded devices are single-purpose platforms designed for running one task in a single processor thread. Embedded Linux resembles its heavyweight cousin, in that it's a general purpose OS designed to run multiple applications. This versatility helps developers to serve an increasingly sophisticated customer base that demands ever more of digital devices. What's more, the absence of complex proprietary licensing terms frees developers to customize every level of their applications, choosing the components they want while ignoring others.
Competition among vendors is inevitably good for customers. In the embedded Linux market, top vendors such as MontaVista and Wind River compete not only against proprietary OS vendors, but also against each other. In addition, some device manufacturers choose to go it alone, producing their own flavors of embedded Linux, independent of the OS vendors. Because Linux is open source, each variant becomes part of a broad ecosystem of developers, customers and partner companies, all contributing to the larger whole.
This atmosphere of "competitive collaboration" leaves still other companies free to build upon the Linux base with additional tools. For example, Trolltech offers Qtopia, a complete environment for rapid development of embedded Linux applications and user interfaces. The core Qtopia technologies are available under the GNU GPL Latest News about GPL (General Public License), giving developers the same visibility into Qtopia code that they enjoy with the Linux kernel itself. Similarly, Nokia (NYSE: NOK) Latest News about Nokia has released its own open source application platform, Maemo, which can be found on embedded devices such as the Nokia 770 Internet Tablet.
These toolkits offer an additional advantage to developers: familiarity. Qtopia is based on Trolltech's well-established Qt toolkit for desktop Linux systems; Maemo is based on similar technologies from the Gnome project. The result is that application developers can use their existing skills to build software for embedded Linux, unlike proprietary OSes.
These advantages add up to an ever-increasing range of devices powered by Linux. From Sharp PDAs Latest News about PDAs to TiVo (Nasdaq: TIVO) Latest News about TiVo set-top boxes, Linksys wireless Get the Facts on BlackBerry Business Solutions routers to Motorola (NYSE: MOT) Latest News about Motorola mobile phones, more companies are betting on Linux as their springboard to success in the fast-paced and highly competitive device market.
New Frontiers for Multimedia
It's easy to assume that source and multimedia are mutually exclusive. A common criticism of free desktop Linux distributions such as Ubuntu is that they lack support for multimedia playback, even for common formats. Don't blame the distributions' packagers, though. A maze of patents has accumulated around multimedia through the years, covering every aspect of playback and encoding. Even the MP3 format is restricted by patents that conflict with the requirements of free software licenses.
Independent developers haven't been ignoring multimedia, however -- far from it. A number of open source projects manage not only to skirt the restrictions of existing technologies, but also to improve on them.
For example, Ogg Vorbis is an open source "lossy" audio compression technology. As does MP3, it doesn't retain every bit of data but reproduces a signal that sounds more or less like the original. However, Vorbis uses advanced psychoacoustic modeling to deliver better sound quality than MP3 at a similar level of compression. What's more, it is not encumbered by patents and is completely royalty free.
For video, look no further than the Dirac project, sponsored by BBC Research. Although still experimental, Dirac uses wavelet compression, an advanced mathematical technique that, in theory, should deliver better quality video than current methods. BBC owns some patents on the Dirac code, but it has granted perpetual royalty-free licenses to anyone who wishes to use them. Similarly, On2 Technologies has granted a perpetual license to its VP3 compression codec, which has become the basis of another open source project, Theora.
While development of open source multimedia technologies proceeds apace, adoption is another matter. Vorbis is a mature codec that delivers superior performance, but few device manufacturers support it, despite the fact that it requires no licensing fees.
The problem is content. Hardware makers will support the formats that content providers offer, and, increasingly, that means formats that support DRM (digital rights management). Unfortunately, whether it's Apple (Nasdaq: AAPL) Latest News about Apple, Microsoft, Sony (NYSE: SNE) Latest News about Sony, or another company, proprietary DRM effectively makes the technology provider the gatekeeper for the entire multimedia stack. This, too, is a challenge that open source can answer.
The Open Media Commons, sponsored by Sun Microsystems, is an attempt to develop DRM technology through community participation. At its core is open source code that Sun has taken pains to ensure does not run afoul of any existing DRM patents -- an area nearly as treacherous as multimedia itself. The hope is that a fully open DRM scheme will allow customers to use DRM-restricted content in approved ways across a range of interoperable software and devices from various manufacturers.
The common theme of all these projects is that cooperation and collaboration will accelerate adoption of digital audio and video, even as they push the technologies forward. Patent restrictions and proprietary code have held back multimedia long enough; the way ahead is open source.
When 'Wide Open' Means Secure
There's a reason nearly every security appliance vendor uses open source tools, and it has little to do with licensing. The vast majority of these devices -- ranging from spam Latest News about spam and spyware filters to network scanners to intrusion detection and prevention systems -- are not only built on an open source platform such as Linux or FreeBSD, but they also actively use other open source products to accomplish their given tasks.
On any platform, the most popular network port scanner and OS fingerprinting application is Nmap -- either on its own or integrated into dozens of other applications. Nmap, an open source tool, provides a quick and accurate method of determining open ports on any given IP address or subnet; it can also determine the OS of a particular device by examining the way IP packets are constructed.
Another example is Nessus, a popular open source vulnerability scanner. Nessus can use Nmap to scan a host, but goes much further by attempting to trigger potential exploits on the target system to verify its integrity. The plugins available for Nessus number in the thousands, and more are added on a regular basis as exploits are discovered -- thanks again to the fact that the source code is readily available.
Snort, the widely used IDS (intrusion detection system), is also notable. As is Nessus, Snort is available packaged as a commercial product, but the open source version is still going strong. Other open source tools, such as OpenSSH and OpenSSL, are industry standards -- in use everywhere by thousands of different products on dozens of platforms.
Last, there's the operating system layer itself. Although no OS is truly secure, security tools offered on a Windows platform are immediately suspect due to well-documented security issues of the underlying OS. Linux, FreeBSD, NetBSD or OpenBSD-based products have a much better security track record. OpenBSD claims to have had only one remote hole in the default install in more than eight years.
To the uninitiated, the concept of open source may seem at odds with high security. The prevailing thought is that making the source code available makes it easier for hackers and virus writers to exploit bugs in the code. You only have to look at Microsoft -- one of the most staunchly proprietary software vendors around -- to see that this really isn't true; in fact, the opposite is true.
A commercial product may have a quality assurance team of a few dozen people, but most significant open source projects -- those that are served by vibrant and growing communities -- effectively have QA teams numbering in the thousands. Many of those folks know the code intimately, as they've contributed to the project. This leads to a more secure product, as bugs are exposed quickly and the fixes are subject to review by many more pairs of eyes than are available in a commercial setting. As a result, a great many security professionals view open source as being more secure than proprietary code, and this impression is finally beginning to penetrate throughout the industry.
Languages Thrive on Community Scripting
Scripting languages, sometimes called "dynamic" languages, have become all the rage, in part because they let developers get a lot of work done with comparatively little code. This "bang for the buck" derives from new approaches that push more of the work onto the compiler and runtime environment -- such as deriving a variable's type by its value -- in addition to special shortcuts for frequently performed actions.
Scripting languages, including Perl, PHP, and Python, have another aspect in common: They are almost universally open source. In many areas, the difference between open and closed source might not be important, but it appears to be critical in scripting languages. Curiously, this aspect isn't due to open source's agility in fixing flaws, but rather to its capability to create community -- that is, a group of users who rely on the language and promote it actively.
A dramatic example of the importance of open source can be seen by comparing the fates of two scripting languages loosed on the world at roughly the same time: Ruby and NetRexx. NetRexx was designed by IBM, based in part on Big Blue's successful mainframe scripting tool, Rexx. It runs interpretively or can be compiled to Java bytecodes. As a language, NetRexx is highly productive and easy to learn, with numerous elegant constructs. Because it compiles to Java bytecodes, all Java libraries can be accessed from NetRexx, plus it enjoys the performance benefits of the Java Virtual Machine.
Ruby, on the other hand, is purely interpretive; it has no virtual machine and so runs slowly. The language itself has elegant points, but much of its advantage comes from the use of nonintuitive syntactical elements, derived in part from Perl's shorthand syntax. NetRexx and Ruby have another important aspect in common: They are both available for free.
So, which of these two languages is more successful: the fast, elegant NetRexx or the less intuitive and far slower Ruby? Contrary to what one may expect, Ruby is flying high today -- NetRexx is nearly dead.
The key reason, I believe, is that Ruby is open source and NetRexx is not. The result is that Ruby was able to build an active developer community -- especially in Japan, where it was created and has been popular for a decade. Ruby gathered steam until David Heinemeier Hansson wrote "Ruby on Rails," a wildly popular Web application framework. Rails is Ruby's killer app. It is a paragon of design elegance and has guaranteed Ruby an enduring role. Meanwhile, NetRexx limps along untended and friendless, despite its great merit. Had IBM open sourced it, scripting today might be wholly different.
Open source alone is certainly no guarantor of a language's success. Indeed, there are many open source languages with no hope of success. Although open source alone is not sufficient, it is necessary. Without it -- and lacking the resources of a Microsoft to create community -- few new languages will likely ever reach the needed critical mass of users and evangelists.
More Options for Enterprise Messaging
Open source tools and e-mail share a long history. Mail servers such as Exiin, Postfix, and Sendmail enjoy widespread use, to say nothing of a healthy assortment of open source mail clients, from Mozilla Latest News about Mozilla Foundation Thunderbird to Pine. But e-mail isn't the be-all and end-all of enterprise messaging. For advanced features such as group calendaring, shared address books, and IM integration, enterprise customers typically have had just two options: IBM's Lotus Notes and Microsoft Exchange.
This is beginning to change. Although the Big Two of enterprise messaging are likely to dominate for the foreseeable future, a number of attractive alternatives have begun to appear, particularly for small to mid-size enterprises. Not surprisingly, many of these promising newcomers hail from the world of open source.
Perhaps the most ambitious such project, Open-Xchange, replicates the functionality of traditional groupware servers in an open source package. OpenXchange integrates a variety of open source tools -- including the Apache Web server, the Tomcat Java servlet engine, and the PostgreSQL database, among others -- to offer full e-mail, calendaring, and collaboration capabilities through a Web-based UI. Commercial add-ons allow Open-Xchange to interoperate with Microsoft Outlook and Palm (Nasdaq: PALM) Latest News about Palm handheld clients.
Still other open source messaging servers take interoperability a step further. Zimbra, for example, uses AJAX (Asynchronous JavaScript and XML) technology to integrate messages with outside data sources, from address book lookups to Google (Nasdaq: GOOG) Latest News about Google Maps. What's more, Zimbra was designed from the ground up as an interoperable system of components, many of which are exposed as Web services. Third-party developers can connect to these components' APIs to gain direct access to Zimbra calendar items, address books and e-mail.
Because Zimbra is open source, developers don't have to navigate around proprietary pitfalls. They can get right into the meat of the code and integrate their own software directly. Open source messaging systems also impose no legacy communications interfaces. In place of proprietary Microsoft Exchange protocols, OpenXchange and Zimbra take advantage of a suite of open standards including WebDAV, LDAP, iCal and HTTP.
The significance of this open approach to messaging is remarkable. Because companies rely so heavily on e-mail as an essential business tool, critical enterprise data ends up stored on e-mail servers. When those servers are based on proprietary software, companies are at the mercy of a single vendor to orchestrate e-mail storage, retrieval, search, archiving, backup, integration and management. A messaging system based on open protocols and open code gives customers assurance that they'll be able to access their data when they need it, over the long term. Further, active development communities will increasingly allow those systems to compete with the proprietary stalwarts, not just on price and availability, but also on features.
Wednesday, December 6, 2006
GNUstep, the open source OpenStep
More than 10 years ago, an incredible machine with an even more incredible OS was released. It was called NeXT and NeXTStep was the name of the OS. We had never seen something like that before : it was a very nicely designed machine, with a breathtaking display. The OS was based on BSD 4.2 at the beginning and 4.3 a bit later, with a very compact mach kernel. With it, appeared the first graphical and object oriented development tool : Interface Builder (Thanks to Jean-Marie Hullot and Bertrand Serlet for such an unbelievable tool). Commercially speaking, this machine didn't really succeed. Then, NeXT decided to port the framework to different OSes such as Sun, for instance. This API was called OpenStep. From there, GNU started a big project, GNUstep, http://www.gnustep.org, to build a free OpenStep implementation. This article tries to present this great work, even if it is not yet finished.
To start with...
For GNUstep, you need another great free product : Window Maker. It's a window manager a la NeXT. If you don't know it yet, you can take a look at it. At the time of this writing, the latest version is 0.64.0.
This window manager is part of the GNUstep project and you can get it from http://www.windowmaker.org.
Let's add, Window Maker runs on almost every Unix platform, either commercial or free. It's a bit different as far as GNUstep is concerned. It will run on most Linux flavors, NetBSD, FreeBSD, OpenBSD, it is more or less stable dependent on the OS you run it on. Regarding commercial Unixes, it will run on Solaris, Irix... with more or less stability.
Once your screen looks like NeXTStep, you can go to GNUstep web-site to get everything you need.
And what do you need ? Obviously, an objective C compiler (remember, it's an object oriented framework). gcc 2.8 and up will do the trick. Recommended is the libobjc. Apart from the tools needed to compile, you need GNUstep stuff : that is the base library, at least, the gui library, the X11 backend (xgps or xdps)... and so on. There is a lot you can download, it's up to you : check the list to make your choice. For instance, you can get Gorm which is the Interface Builder implementation (only as CVS), and of course, the examples or the users apps.
To install...
You just have to compile what you downloaded ! Seriously, you should read the READMEs, the INSTALLs. You also have a GNUstep HOWTO, recommended reading.
After compiling, most of your work will concern environment variables and programs to launch at startup time (the engine for instance, called gdnc).
As mentioned earlier, you can have two different backends : the X one and the dps one which is the Display PostScript free implementation. This last will provide much better results but it's much less evolved than the X backend.
According to your OS, check the paths, when defining the environment variables. At least, you must define the GNUSTEP_SYSTEM_ROOT variable and the path to the different scripts or programs.
Once you have finished with this part, you can "play" with GNUstep.
Examples
There are a lot of examples available from the GNUstep website, either going to the User apps section or to the download section. They are the best way to get familiar with GNUstep if you don't know NeXTStep or OpenStep. Most of them are working examples and allow to understand the philosophy behind the framework. Looking at the code will teach you a lot about Objective C. For someone knowing C, Objective C is quite easy to learn, and in any case much easier than C++ (well, this is only my opinion).
Among these examples, a very nice one is the font panel. It really looks like the original one. By the way, along this article we'll show screen shots both from GNUstep and NeXTStep, thus you'll be able to compare. Here is the first example : the font panel from the GNUstep and the one from NeXTStep.
Another interesting example is the Edit app. It isn't fully working but it's a nice work rather close to the original.
One of the most teaching example is called GSTest. Running GSTest allows you to understand everything about windows, buttons, scroll bars... It's an all in one work ! A look at the source code is better than a book.
Of course, it doesn't mean the other examples have no interest : they do have !
Simply, the author of many apps, Nicola Pero, has done a very great job.
Another great app from the same Nicola, is called Finger. It's a gui for finger (would you have guessed?), ping, traceroute. Here it is :
We could mention many more apps but let's leave the pleasure of discovery to the reader.
The big guns
A major revolution brought to us by NeXTStep was Interface Builder. As its name says, it was a tool to create a gui for your application. But, what a tool ! Remember, that was at the end of the 80's : just incredible !
Why was it a revolution : because you were able to build a window with all its stuff in less than 5 minutes ! That is, a window with its menu, its buttons, its sliders, etc, was created by dragging objects from a palette to this window. Then it was possible to link these objects to other windows or menus or whatever. A minimal code was generated and you just had to complete it. Obviously, these objects, once created could be reused somewhere else.
Unbelievable at that time !
Since then, many big software editors tried to do the same : in my humble opinion, they never reached the level of the original.
And now, you can have such a tool for free ! It's called Gorm (GNUstep Graphics Object Relationship Modeler) and the author is Richard Frith-Macdonald.
Gorm is only available as CVS from the GNUstep website. Version is only 0.1 at the time of this writing, nevertheless it works even if a lot of functions are missing. To discover Interface Builder look and feel, Gorm is the right tool.
Here is a very simple (and stupid) example, once again with the equivalent from NeXTStep.
As we said before, this tool and its model Interface Builder are used to create the graphical part of an application. Of course, it isn't enough to make this application work. You'll have to complete the generated code and manage the different sources as for any application project. Last, you'll have to compile your work.
Here comes the second big tool, called Project Builder under NeXTStep and ProjectCenter under GNUstep. ProjectCenter is the work of Philippe C.D Robert and version number is 0.2. Once again, this tool is a working one despite the version number. You can manage your project as you would with Project Builder under NeXTStep. Obviously, there's a lot of work to be done but this one too, is worth downloading.
Here is how it looks like compared to its "father".
Using those two tools is rather simple if you know NeXTStep or OpenStep. If you never used them before, you'll have to find the philosophy behind them. A lot of documentation is available and it is recommended reading (not to say compulsory reading). But once you understood how it works... you can't live without ! You've been warned.
We must mention other great things such as GWorkspace or GSBench. The GNU 3DKit is another wonderful piece of software. It's an API designed to work on top of OpenGL. You'll find it at http://www.nice.ch/~phip/softcorner.html with many other applications.
Utilities
The tools we'll mention here are designed to port apps from OpenStep to GNUstep. But, as a matter of fact, they go much further since they will allow you to port Mac OS X apps as well. That's the important point : more on this later !
First, there's a tool called OpenStep2GNUConverter, allowing you to convert a PBProject (Project Builder) to a GNUstep Makefile. That is, you'll be able to compile an OpenStep project on your Linux box (for instance) .
To compile this project, you'll need another tool called nfmake.
A tool called nib2gmodel allows to convert a nib file (produced with Interface Builder) to its equivalent under GNUstep, named gmodel.
Last but not least, you can get gstep-db, a database library and even more, an Oracle adaptor.
NeXTStep and OpenStep used to provide you with adaptors for Sybase and Oracle, that is an interface to query databases from these editors. GNUstep offers you the same for free (under NeXTStep or OpenStep, you needed the developer kit which was quite expensive, but you had the Enterprise Object Foundation for free - a lot of examples).
Of course, these tools can be downloaded from the GNUstep website.
Unfortunately I was unable to test all this stuff, since I "only" got an old NeXT station and I'm (impatiently) waiting to get Mac OS X at work. But I've been trusting GNU for about 15 years and I won't change today ! I feel like saying : all this should work for sure. Anyway, within a few months I will test all this...
Documentation
If you are interested in developing under this great framework, there's a lot of documentation you can get, as already mentioned. The ease of use is not a legend, but you need some knowledge about the way it works.
From the GNUstep website, you can find many useful links. However, some of them deserve special attention.
Going to http://www.gnustep.org/resources/documentation.html will provide you with the general GNUstep documentation. You'll find there an Objective C book, installation instructions,
The http://www.gnustep.net/ website is as well of interest.
That is, you can find everything you need to start with GNUstep.
What's NeXT ?
The strange story of NeXT carries on, let's hope with success that time, under the name of Mac OS X. What a great thing ! What do you think about an OS born more than 10 years ago starting a new career ? It was quite ahead, don't you think ?
But what does that mean for us ? Well, probably a lot of great apps since all the existing ones can be easily recompiled, and don't forget, Mac OS X and so NeXTStep are Unix systems. That means tons of applications potentially available, as well for free Unixes. Accordingly, GNUstep is the framework you need...
Let's say it's a dream (sort of) : at least, we would be able to choose the software we want. Unfortunately, there is a bright side and a dark side.
The bright side
Let's take an example : today, according to the OS you use, you don't have much choice concerning web browsers. It's either Netscrape (and its derivatives) or Exploder, that is two gas factories and a match box, security holes, and so on. Mac OS X will provide you with OmniWeb : this is a really great web browser. Using it under NeXTStep is a pleasure, even if it's a rather old version.
It's that sort of browser you can dream of today, when you use Unix or M$ things. The only "thin" web browsers today can be found under so called alternative OSes : such as NetPositive under BeOS or AWeb, for instance, under AmigaOS. Of course, Opera seems attractive, but till now, I'm not quite convinced (but this is only my opinion). What I mean here, is Mac OS X and so GNUstep will provide us with "new" tools, often better than the ones we can use today. We did benefit from such tools about ten years ago... with NeXTStep !
Of course, this is true for many other types of software and not only for web browsers.
Going to http://www.omnigroup.com/ will show you a bunch of available tools.
The main difference between GNUstep and Mac OS X comes from the fact that X-Window is used for GNUstep but not under Mac OS X. That was already a complaint about NeXTStep. That's where GNUstep becomes so important : it allows you to use these apps under X. This is probably one of the main strong points of this project : those people really did a great job.
The dark side
We can fear the arrival of Exploder and some others pieces of s...oftware from the same editor under Mac OS X. This is a bit frightening ! If these "apps" are Mac OS X native ones, we can expect the worst. That is, the insidious entry of the Redmond army into the free Unix world. Of course, here free doesn't mean gratis since we are talking about M$ thieves, but... If you want to know the applications under development for Mac OS X, just have a look at http://www.apple.com/macosx/applications/
Let's say, it's the pessimistic way of thinking : wait and see !
However, lets not forget that GNUstep is particularly designed for development. Once it will become a bit more achieved, you'll be able to develop applications the easy way, like it was under NeXTStep. GNUstep is much more than a single framework, we could say it's a big IDE (Integrated Development Environment). The most important point seems that these apps will be easily portable, to Mac OS X, for instance.
By the way, let's not forget the Apple's open source, Darwin. More on the subject at http://www.opensource.apple.com//
Obviously, there's much more to say about GNUstep but it's beyond the scope of this article. The goal was to make you feel like trying this great product, and why not, participating in this big project.
And the band plays on
One of my greatest pleasure concerning free software comes from these projects trying to "repair" the big commercial mistakes. NeXTStep was for me a true revolution. I'm the very happy owner of a 10 years old workstation, and don't believe it's covered with dust : I use it almost everyday despite its 68040/25 Mhz CPU. Fortunately (or unfortunately), many people seem to think the same. Thanks to the GNUstep team, to the Window Maker team to provide us with such a great work.
The incredible thing about NeXTStep comes from the fact that many editors tried to "clone" it... and they did succeed where the model failed. Once again, we must mention the Redmond Kingdom : have you ever noticed the W95 windows and their gadgets ? Well, have a look at the NeXTStep screen shots above. NeXTStep first appeared in 1987 in USA and around 1990 in Europe. As its name says, the thing from M$ appeared more than five years later. The leaflets flying between two folders, invented in the surrounds of Seattle, were present under NeXTStep 2.1, that is around 1991...
Nevertheless, for once, they didn't copy in Redmond ! No, they did much better : they "bought" people from NeXT... I suppose for many, many bucks. Never mind, but that's not fair, is it ?
This to say NeXTStep never left people indifferent, what is an understatement.
GNU is the absolute reference concerning free software and it deserves to be. The whole world owes GNU a lot : every OS has been able to benefit from their work. Their compilers are probably the best ones ever seen, whatever the OS. That's true for many other tools. Even more, their projects are often (if not always) as great as their tools. GNUstep is one of them. By the way, NeXTStep had a GNU directory...
If you are like me, not very fond of the well known (free or commercial) Unix desktop environments, try GNUstep, you'll love it ! Even more, you won't be able to work without.
Enjoy !
To start with...
For GNUstep, you need another great free product : Window Maker. It's a window manager a la NeXT. If you don't know it yet, you can take a look at it. At the time of this writing, the latest version is 0.64.0.
This window manager is part of the GNUstep project and you can get it from http://www.windowmaker.org.
Let's add, Window Maker runs on almost every Unix platform, either commercial or free. It's a bit different as far as GNUstep is concerned. It will run on most Linux flavors, NetBSD, FreeBSD, OpenBSD, it is more or less stable dependent on the OS you run it on. Regarding commercial Unixes, it will run on Solaris, Irix... with more or less stability.
Once your screen looks like NeXTStep, you can go to GNUstep web-site to get everything you need.
And what do you need ? Obviously, an objective C compiler (remember, it's an object oriented framework). gcc 2.8 and up will do the trick. Recommended is the libobjc. Apart from the tools needed to compile, you need GNUstep stuff : that is the base library, at least, the gui library, the X11 backend (xgps or xdps)... and so on. There is a lot you can download, it's up to you : check the list to make your choice. For instance, you can get Gorm which is the Interface Builder implementation (only as CVS), and of course, the examples or the users apps.
To install...
You just have to compile what you downloaded ! Seriously, you should read the READMEs, the INSTALLs. You also have a GNUstep HOWTO, recommended reading.
After compiling, most of your work will concern environment variables and programs to launch at startup time (the engine for instance, called gdnc).
As mentioned earlier, you can have two different backends : the X one and the dps one which is the Display PostScript free implementation. This last will provide much better results but it's much less evolved than the X backend.
According to your OS, check the paths, when defining the environment variables. At least, you must define the GNUSTEP_SYSTEM_ROOT variable and the path to the different scripts or programs.
Once you have finished with this part, you can "play" with GNUstep.
Examples
There are a lot of examples available from the GNUstep website, either going to the User apps section or to the download section. They are the best way to get familiar with GNUstep if you don't know NeXTStep or OpenStep. Most of them are working examples and allow to understand the philosophy behind the framework. Looking at the code will teach you a lot about Objective C. For someone knowing C, Objective C is quite easy to learn, and in any case much easier than C++ (well, this is only my opinion).
Among these examples, a very nice one is the font panel. It really looks like the original one. By the way, along this article we'll show screen shots both from GNUstep and NeXTStep, thus you'll be able to compare. Here is the first example : the font panel from the GNUstep and the one from NeXTStep.
Another interesting example is the Edit app. It isn't fully working but it's a nice work rather close to the original.
One of the most teaching example is called GSTest. Running GSTest allows you to understand everything about windows, buttons, scroll bars... It's an all in one work ! A look at the source code is better than a book.
Of course, it doesn't mean the other examples have no interest : they do have !
Simply, the author of many apps, Nicola Pero, has done a very great job.
Another great app from the same Nicola, is called Finger. It's a gui for finger (would you have guessed?), ping, traceroute. Here it is :
We could mention many more apps but let's leave the pleasure of discovery to the reader.
The big guns
A major revolution brought to us by NeXTStep was Interface Builder. As its name says, it was a tool to create a gui for your application. But, what a tool ! Remember, that was at the end of the 80's : just incredible !
Why was it a revolution : because you were able to build a window with all its stuff in less than 5 minutes ! That is, a window with its menu, its buttons, its sliders, etc, was created by dragging objects from a palette to this window. Then it was possible to link these objects to other windows or menus or whatever. A minimal code was generated and you just had to complete it. Obviously, these objects, once created could be reused somewhere else.
Unbelievable at that time !
Since then, many big software editors tried to do the same : in my humble opinion, they never reached the level of the original.
And now, you can have such a tool for free ! It's called Gorm (GNUstep Graphics Object Relationship Modeler) and the author is Richard Frith-Macdonald.
Gorm is only available as CVS from the GNUstep website. Version is only 0.1 at the time of this writing, nevertheless it works even if a lot of functions are missing. To discover Interface Builder look and feel, Gorm is the right tool.
Here is a very simple (and stupid) example, once again with the equivalent from NeXTStep.
As we said before, this tool and its model Interface Builder are used to create the graphical part of an application. Of course, it isn't enough to make this application work. You'll have to complete the generated code and manage the different sources as for any application project. Last, you'll have to compile your work.
Here comes the second big tool, called Project Builder under NeXTStep and ProjectCenter under GNUstep. ProjectCenter is the work of Philippe C.D Robert and version number is 0.2. Once again, this tool is a working one despite the version number. You can manage your project as you would with Project Builder under NeXTStep. Obviously, there's a lot of work to be done but this one too, is worth downloading.
Here is how it looks like compared to its "father".
Using those two tools is rather simple if you know NeXTStep or OpenStep. If you never used them before, you'll have to find the philosophy behind them. A lot of documentation is available and it is recommended reading (not to say compulsory reading). But once you understood how it works... you can't live without ! You've been warned.
We must mention other great things such as GWorkspace or GSBench. The GNU 3DKit is another wonderful piece of software. It's an API designed to work on top of OpenGL. You'll find it at http://www.nice.ch/~phip/softcorner.html with many other applications.
Utilities
The tools we'll mention here are designed to port apps from OpenStep to GNUstep. But, as a matter of fact, they go much further since they will allow you to port Mac OS X apps as well. That's the important point : more on this later !
First, there's a tool called OpenStep2GNUConverter, allowing you to convert a PBProject (Project Builder) to a GNUstep Makefile. That is, you'll be able to compile an OpenStep project on your Linux box (for instance) .
To compile this project, you'll need another tool called nfmake.
A tool called nib2gmodel allows to convert a nib file (produced with Interface Builder) to its equivalent under GNUstep, named gmodel.
Last but not least, you can get gstep-db, a database library and even more, an Oracle adaptor.
NeXTStep and OpenStep used to provide you with adaptors for Sybase and Oracle, that is an interface to query databases from these editors. GNUstep offers you the same for free (under NeXTStep or OpenStep, you needed the developer kit which was quite expensive, but you had the Enterprise Object Foundation for free - a lot of examples).
Of course, these tools can be downloaded from the GNUstep website.
Unfortunately I was unable to test all this stuff, since I "only" got an old NeXT station and I'm (impatiently) waiting to get Mac OS X at work. But I've been trusting GNU for about 15 years and I won't change today ! I feel like saying : all this should work for sure. Anyway, within a few months I will test all this...
Documentation
If you are interested in developing under this great framework, there's a lot of documentation you can get, as already mentioned. The ease of use is not a legend, but you need some knowledge about the way it works.
From the GNUstep website, you can find many useful links. However, some of them deserve special attention.
Going to http://www.gnustep.org/resources/documentation.html will provide you with the general GNUstep documentation. You'll find there an Objective C book, installation instructions,
The http://www.gnustep.net/ website is as well of interest.
That is, you can find everything you need to start with GNUstep.
What's NeXT ?
The strange story of NeXT carries on, let's hope with success that time, under the name of Mac OS X. What a great thing ! What do you think about an OS born more than 10 years ago starting a new career ? It was quite ahead, don't you think ?
But what does that mean for us ? Well, probably a lot of great apps since all the existing ones can be easily recompiled, and don't forget, Mac OS X and so NeXTStep are Unix systems. That means tons of applications potentially available, as well for free Unixes. Accordingly, GNUstep is the framework you need...
Let's say it's a dream (sort of) : at least, we would be able to choose the software we want. Unfortunately, there is a bright side and a dark side.
The bright side
Let's take an example : today, according to the OS you use, you don't have much choice concerning web browsers. It's either Netscrape (and its derivatives) or Exploder, that is two gas factories and a match box, security holes, and so on. Mac OS X will provide you with OmniWeb : this is a really great web browser. Using it under NeXTStep is a pleasure, even if it's a rather old version.
It's that sort of browser you can dream of today, when you use Unix or M$ things. The only "thin" web browsers today can be found under so called alternative OSes : such as NetPositive under BeOS or AWeb, for instance, under AmigaOS. Of course, Opera seems attractive, but till now, I'm not quite convinced (but this is only my opinion). What I mean here, is Mac OS X and so GNUstep will provide us with "new" tools, often better than the ones we can use today. We did benefit from such tools about ten years ago... with NeXTStep !
Of course, this is true for many other types of software and not only for web browsers.
Going to http://www.omnigroup.com/ will show you a bunch of available tools.
The main difference between GNUstep and Mac OS X comes from the fact that X-Window is used for GNUstep but not under Mac OS X. That was already a complaint about NeXTStep. That's where GNUstep becomes so important : it allows you to use these apps under X. This is probably one of the main strong points of this project : those people really did a great job.
The dark side
We can fear the arrival of Exploder and some others pieces of s...oftware from the same editor under Mac OS X. This is a bit frightening ! If these "apps" are Mac OS X native ones, we can expect the worst. That is, the insidious entry of the Redmond army into the free Unix world. Of course, here free doesn't mean gratis since we are talking about M$ thieves, but... If you want to know the applications under development for Mac OS X, just have a look at http://www.apple.com/macosx/applications/
Let's say, it's the pessimistic way of thinking : wait and see !
However, lets not forget that GNUstep is particularly designed for development. Once it will become a bit more achieved, you'll be able to develop applications the easy way, like it was under NeXTStep. GNUstep is much more than a single framework, we could say it's a big IDE (Integrated Development Environment). The most important point seems that these apps will be easily portable, to Mac OS X, for instance.
By the way, let's not forget the Apple's open source, Darwin. More on the subject at http://www.opensource.apple.com//
Obviously, there's much more to say about GNUstep but it's beyond the scope of this article. The goal was to make you feel like trying this great product, and why not, participating in this big project.
And the band plays on
One of my greatest pleasure concerning free software comes from these projects trying to "repair" the big commercial mistakes. NeXTStep was for me a true revolution. I'm the very happy owner of a 10 years old workstation, and don't believe it's covered with dust : I use it almost everyday despite its 68040/25 Mhz CPU. Fortunately (or unfortunately), many people seem to think the same. Thanks to the GNUstep team, to the Window Maker team to provide us with such a great work.
The incredible thing about NeXTStep comes from the fact that many editors tried to "clone" it... and they did succeed where the model failed. Once again, we must mention the Redmond Kingdom : have you ever noticed the W95 windows and their gadgets ? Well, have a look at the NeXTStep screen shots above. NeXTStep first appeared in 1987 in USA and around 1990 in Europe. As its name says, the thing from M$ appeared more than five years later. The leaflets flying between two folders, invented in the surrounds of Seattle, were present under NeXTStep 2.1, that is around 1991...
Nevertheless, for once, they didn't copy in Redmond ! No, they did much better : they "bought" people from NeXT... I suppose for many, many bucks. Never mind, but that's not fair, is it ?
This to say NeXTStep never left people indifferent, what is an understatement.
GNU is the absolute reference concerning free software and it deserves to be. The whole world owes GNU a lot : every OS has been able to benefit from their work. Their compilers are probably the best ones ever seen, whatever the OS. That's true for many other tools. Even more, their projects are often (if not always) as great as their tools. GNUstep is one of them. By the way, NeXTStep had a GNU directory...
If you are like me, not very fond of the well known (free or commercial) Unix desktop environments, try GNUstep, you'll love it ! Even more, you won't be able to work without.
Enjoy !
Monday, December 4, 2006
Companies With a Single Open Source Program As Their Main Product
This sort of company can be divided into several categories:
* Mixed Open Source and proprietary licensing model.
* A core Open Source program with proprietary software accessories.
* Pure Open Source plus services model.
Mixed Open Source and Proprietary Licensing Model
Examples of this sort of company are MySQL AB and Sleepycat Software, which produce databases, and Trolltech, which produces the Qt graphical user interface toolkit. This sort of company vends the same software under two different licenses: an Open Source license and a commercial license.
The Open Source license chosen, often the GPL, includes a "poison pill" meant to make production of proprietary derivative works commercially untenable. Since the GPL requires that all derivative works must be distributed in source-code form under the GPL or a GPL-compatible license, this would remove the business differentiation from any software to which it is applied.
To escape the poison pill and preserve business differentiation, the producer of a proprietary derivative work must purchase a commercial license for the same product. This provides the producer of the Open Source software a direct revenue capture for unit sales of software to creators of proprietary derivative works.
This model works only for software that will be combined into derivative works, such as a software library. It generally isn't usable for applications.
The future viability of this model is in question, because a programmer can make a "server" of a software library and export all of its functionality to another program without creating something that would be considered a derivative work under copyright law or the definitions in Open Source licenses. In Unix parlance, servers are referred to as "daemons", and thus the practice of embedding software in a daemon in order to avoid creating a derivative work is called daemonization. It is possible that a future Open Source license could restrict this practice.
Today, it is possible to make use of the MySQL database server in a proprietary application without a commercial license, by using the MySQL database engine as a server (its usual mode) and making use of a special variant of the MySQL client library that is under appropriate licensing terms for proprietary applications. Of course, MySQL AB doesn't support that client library.
This sort of company generally supplements its commercial licensing revenue with additional revenue from training and software development services.
The main customer of this sort of company is the enterprise user, in the case of MySQL. Trolltech's main customers are embedded device developers and software application developers. The funds used to purchase these products come from cost-centers within IT and software development departments.
A Core Open Source Program With Proprietary Software Accessories
Eric Raymond calls this model Widget Frosting and discusses it in detail. Sendmail Inc. is an example of this sort of participant. Sendmail Inc. has created a constellation of proprietary products around the Open Source sendmail email server. This funds ongoing maintenance of the core Open Source product. Some of the Linux distribution companies also intend to operate using this model, and some of IBM's business is under this model: for example their sales of the proprietary DB2 database on Linux. This sort of company essentially operates as if it were a proprietary software business. The funds used to purchase its products come from IT department cost-centers.
Specialization In One Open Source Program Plus Services Mode
This model was proposed to be an important one in Eric Raymond's paper, but has not performed as well as was expected so far. Many Open Source developers supplement their income by providing services upon the software that they develop, and there are a number of new companies pursuing this model - some with sizable venture funding. Some of these new companies seem to be operating a certification model, servicing a particular version of the software that they certify, perhaps in the manner of the proprietary open source business model at some of the Linux distribution companies.
Some small and medium-sized companies have been able to produce sustainable revenue while developing Open Source software as their major business focus and providing services on that Open Source as their only profit-center. But many have failed, some spectacularly like VA Linux Systems and Linuxcare. Companies that would be support customers seem to prefer to do their Open Source support inside, or through a vendor with whom they already have an existing relationship or whom can service more than one program. There may also have been an early-adopter problem. Early-adopters in general do not want the hand-holding of a service company. Time will tell if this model can perform effectively.
The funds for services provided by this sort of company come from IT department cost-centers.
* Mixed Open Source and proprietary licensing model.
* A core Open Source program with proprietary software accessories.
* Pure Open Source plus services model.
Mixed Open Source and Proprietary Licensing Model
Examples of this sort of company are MySQL AB and Sleepycat Software, which produce databases, and Trolltech, which produces the Qt graphical user interface toolkit. This sort of company vends the same software under two different licenses: an Open Source license and a commercial license.
The Open Source license chosen, often the GPL, includes a "poison pill" meant to make production of proprietary derivative works commercially untenable. Since the GPL requires that all derivative works must be distributed in source-code form under the GPL or a GPL-compatible license, this would remove the business differentiation from any software to which it is applied.
To escape the poison pill and preserve business differentiation, the producer of a proprietary derivative work must purchase a commercial license for the same product. This provides the producer of the Open Source software a direct revenue capture for unit sales of software to creators of proprietary derivative works.
This model works only for software that will be combined into derivative works, such as a software library. It generally isn't usable for applications.
The future viability of this model is in question, because a programmer can make a "server" of a software library and export all of its functionality to another program without creating something that would be considered a derivative work under copyright law or the definitions in Open Source licenses. In Unix parlance, servers are referred to as "daemons", and thus the practice of embedding software in a daemon in order to avoid creating a derivative work is called daemonization. It is possible that a future Open Source license could restrict this practice.
Today, it is possible to make use of the MySQL database server in a proprietary application without a commercial license, by using the MySQL database engine as a server (its usual mode) and making use of a special variant of the MySQL client library that is under appropriate licensing terms for proprietary applications. Of course, MySQL AB doesn't support that client library.
This sort of company generally supplements its commercial licensing revenue with additional revenue from training and software development services.
The main customer of this sort of company is the enterprise user, in the case of MySQL. Trolltech's main customers are embedded device developers and software application developers. The funds used to purchase these products come from cost-centers within IT and software development departments.
A Core Open Source Program With Proprietary Software Accessories
Eric Raymond calls this model Widget Frosting and discusses it in detail. Sendmail Inc. is an example of this sort of participant. Sendmail Inc. has created a constellation of proprietary products around the Open Source sendmail email server. This funds ongoing maintenance of the core Open Source product. Some of the Linux distribution companies also intend to operate using this model, and some of IBM's business is under this model: for example their sales of the proprietary DB2 database on Linux. This sort of company essentially operates as if it were a proprietary software business. The funds used to purchase its products come from IT department cost-centers.
Specialization In One Open Source Program Plus Services Mode
This model was proposed to be an important one in Eric Raymond's paper, but has not performed as well as was expected so far. Many Open Source developers supplement their income by providing services upon the software that they develop, and there are a number of new companies pursuing this model - some with sizable venture funding. Some of these new companies seem to be operating a certification model, servicing a particular version of the software that they certify, perhaps in the manner of the proprietary open source business model at some of the Linux distribution companies.
Some small and medium-sized companies have been able to produce sustainable revenue while developing Open Source software as their major business focus and providing services on that Open Source as their only profit-center. But many have failed, some spectacularly like VA Linux Systems and Linuxcare. Companies that would be support customers seem to prefer to do their Open Source support inside, or through a vendor with whom they already have an existing relationship or whom can service more than one program. There may also have been an early-adopter problem. Early-adopters in general do not want the hand-holding of a service company. Time will tell if this model can perform effectively.
The funds for services provided by this sort of company come from IT department cost-centers.
What is the Economic Impact of Open Source?
We defined the major economic impact of Microsoft as:
The fact that they have enabled a great many businesses - their customers - to do business more efficiently, and to have businesses that they could not operate at all without the software that enables them.
The same definition applies to Open Source.
It is a fact that Open Source enables a majority of web servers today, a majority of email deliveries, and many other businesses, organizations, and personal pursuits. Thus, its economic impact must already be numbered in many tens of Billions of dollars.
Any improvement in technology that permits business to function more efficiently means the economy runs more efficiently. In this case, Open Source enables business to spend less on software and to have better quality and more control over its software. The money that is saved on software doesn't disappear, the people who save it spend it on things that are more important to them.
The fact that they have enabled a great many businesses - their customers - to do business more efficiently, and to have businesses that they could not operate at all without the software that enables them.
The same definition applies to Open Source.
It is a fact that Open Source enables a majority of web servers today, a majority of email deliveries, and many other businesses, organizations, and personal pursuits. Thus, its economic impact must already be numbered in many tens of Billions of dollars.
Any improvement in technology that permits business to function more efficiently means the economy runs more efficiently. In this case, Open Source enables business to spend less on software and to have better quality and more control over its software. The money that is saved on software doesn't disappear, the people who save it spend it on things that are more important to them.
How Open Source Does Product Marketing
A common objection to Open Source is the perception that Open Source development will not be well focused or targeted. People are used to development that is directed by one company in an extremely focused manner, driven by a product marketing process. Some mature Open Source projects do perform their product marketing the way a company would. But while a company generally would develop an overall strategy that drives all of its software development, there is no global planning authority for Open Source, and no overarching strategy followed by all Open Source developers. However, it's an error to ask for such a thing: you can't compare Open Source to a company, it's an entire industry. A central planning authority for an entire industry would indicate something other than an open market. The product marketing for the global Open Source community operates in the way that a capitalist nation operates its economy, rather than the way a company plans its products.
The paradigm by which Open Source does product marketing can be described as a massively-parallel drunkard's walk filtered by a Darwinistic process. First, very many people all over the world develop whatever they want, going in any direction they wish without any central coordination. Out of this process come many potential products that would not interest more than a few other people, some products that are interesting to at least fifty people, and a few products that are interesting to millions of people.
Fifty people who want the same thing, but are geographically distributed all around the world, can form a viable software development team via the Internet. The spare time of fifty people who are otherwise employed turns out to be sufficient resource to enable the development of large and complex software products, and of course the size of the development team increases as the product matures and becomes of interest to more people. Thus, by leveraging upon the excellent collaboration that is possible when using Open Source licensing, it is possible to initiate and successfully carry out projects that would otherwise be beyond the capability of any of the participating entities.
But how do 50 people who haven't met work together to form a viable software product? Part of the reason this works so well is that software is extremely modular by nature, and thus many people can work on different segments of the software, almost autonomously, if they can come to agreement about how the pieces fit together. A good example of this is the Debian GNU/Linux Distribution. This system includes more than 16,000 software packages maintained by over 1000 volunteer developers in many nations around the world. When these packages are combined, the result is a reliable and well-integrated system. That system has supervised experiments while in orbit on the Space Shuttle, and has a user community second in size only to Red Hat (yes, it's bigger than Novell).
But how can we develop products when everyone has the freedom to go their own way and there isn't a real boss? This seems odd to business people, until they realize that this is exactly how capitalism works in democratic countries. In the broader economy of a capitalistic nation, many companies set out to develop products without any central guidance from the government. They all compete with each other, and some products succeed and build a market while other products fail. Loose collaborations arise between companies for the purpose of building markets for new products. The role of the government, the only entity that conceivably could guide the economy, is in general limited to the injection or removal of capital from the economy, tax incentives and funding programs, and the enforcement of laws designed to create fair markets.
Most sensible people have accepted that a "sure thing" is rare in gambling or stock-picking, and yet they expect marketing departments to make reliable forecasts in guiding new product development. Marketing departments have no crystal ball. If a sufficient number of self-guided developers are available, a drunkard's walk strategy will outperform conventional product marketing. The massively-parallel drunkard's walk tries many different paths, and thus has a higher probability of accessing a successful path. The Darwinistic filtering is what recognizes that a particular path is successful.
Most business people are adamant that they want to live in a free market economy, and that the government should not take a strong guiding role in determining what products will be produced and how they are made. They say this because they understand that the free market is more likely to produce good products and a healthy economy than any central planning process. It should be no surprise to them, then, that the open-market-like paradigm of Open Source can sometimes do a better job than the central control of marketing departments and management at creating desirable products.
The paradigm by which Open Source does product marketing can be described as a massively-parallel drunkard's walk filtered by a Darwinistic process. First, very many people all over the world develop whatever they want, going in any direction they wish without any central coordination. Out of this process come many potential products that would not interest more than a few other people, some products that are interesting to at least fifty people, and a few products that are interesting to millions of people.
Fifty people who want the same thing, but are geographically distributed all around the world, can form a viable software development team via the Internet. The spare time of fifty people who are otherwise employed turns out to be sufficient resource to enable the development of large and complex software products, and of course the size of the development team increases as the product matures and becomes of interest to more people. Thus, by leveraging upon the excellent collaboration that is possible when using Open Source licensing, it is possible to initiate and successfully carry out projects that would otherwise be beyond the capability of any of the participating entities.
But how do 50 people who haven't met work together to form a viable software product? Part of the reason this works so well is that software is extremely modular by nature, and thus many people can work on different segments of the software, almost autonomously, if they can come to agreement about how the pieces fit together. A good example of this is the Debian GNU/Linux Distribution. This system includes more than 16,000 software packages maintained by over 1000 volunteer developers in many nations around the world. When these packages are combined, the result is a reliable and well-integrated system. That system has supervised experiments while in orbit on the Space Shuttle, and has a user community second in size only to Red Hat (yes, it's bigger than Novell).
But how can we develop products when everyone has the freedom to go their own way and there isn't a real boss? This seems odd to business people, until they realize that this is exactly how capitalism works in democratic countries. In the broader economy of a capitalistic nation, many companies set out to develop products without any central guidance from the government. They all compete with each other, and some products succeed and build a market while other products fail. Loose collaborations arise between companies for the purpose of building markets for new products. The role of the government, the only entity that conceivably could guide the economy, is in general limited to the injection or removal of capital from the economy, tax incentives and funding programs, and the enforcement of laws designed to create fair markets.
Most sensible people have accepted that a "sure thing" is rare in gambling or stock-picking, and yet they expect marketing departments to make reliable forecasts in guiding new product development. Marketing departments have no crystal ball. If a sufficient number of self-guided developers are available, a drunkard's walk strategy will outperform conventional product marketing. The massively-parallel drunkard's walk tries many different paths, and thus has a higher probability of accessing a successful path. The Darwinistic filtering is what recognizes that a particular path is successful.
Most business people are adamant that they want to live in a free market economy, and that the government should not take a strong guiding role in determining what products will be produced and how they are made. They say this because they understand that the free market is more likely to produce good products and a healthy economy than any central planning process. It should be no surprise to them, then, that the open-market-like paradigm of Open Source can sometimes do a better job than the central control of marketing departments and management at creating desirable products.
DAISY: an open-source JIT compiler for large machines
DAISY features
The Dynamically Architected Instruction Set from Yorktown (DAISY) translates the binary code of a source architecture to the binary code of a VLIW or EPIC machine by emulating the existing architecture (such as PowerPC) on an underlying processor, which is hidden from the user. As a just-in-time compiler, DAISY looks at the code at run-time and picks out which operations to run in parallel with the target architecture. Because this process is transparent to the user, the user sees only the source architecture instruction set. Fragments of the source architecture code are translated, scheduled, and optimized just-in-time for the target architecture to operate.
The use of dynamic binary translation under DAISY enables arbitrary reordering of code, while maintaining memory and precise exception semantics for the source architecture, such as PowerPC. The translator also optimizes code using scheduling, combining, copy propagation, load-store telescoping, loop unrolling, and other optimizations to expose a large amount of parallelism to the underlying VLIW processor. Some versions of DAISY can fully emulate a 32-bit PowerPC, including system level states like privileged registers, exceptions, cache management, address translation, and page tables. But until these capabilities have a more user-friendly interface, the open source version of DAISY will support only user-mode translation.
DAISY's first release uses the PowerPC architecture (which runs under AIX) as the source architecture. It compiles AIX PowerPC binary applications just-in-time to the VLIW code, and then simulates the VLIW code. The unit of translation in this version is one 4K byte page of code at a time. This release of DAISY also includes some distinctive hardware and software techniques such as:
* Speculative instruction scheduling on multiple paths and through branch and loop iteration boundaries
* Simultaneous scheduling, register allocation and cluster assignment
* Aggressive re-ordering of memory and ALU operations (while preserving precise PowerPC exceptions)
* Optimizations for increasing instruction level parallelism (e.g. combining, load-store telescoping)
* Fast-compiled simulation of pieces of VLIW code that provide detailed statistics, including multi-level cache and TLB effects
Why open source it?
Kemal Ebcioglu and his team are aiming at expanding the project's scope and capabilities by releasing DAISY under the IBM public license. "We hope to foster excitement in binary translation research. We anticipate that people will be drawn to DAISY because of its unique strengths as a dynamic just-in-time compiler for large machines. It offers a great experimental framework for trying out different architectural features and software techniques for instruction level parallelism and binary translation." The team will be encouraging widespread contributions to the project and has extended an open invitation to join in their efforts. "We invite volunteers worldwide to consider joining the DAISY open source team in implementing leading edge dynamic compiler techniques and architectural features through the development and expansion of DAISY capabilities."
Development and the team
In addition to Kemal Ebcioglu, DAISY's core team members are Erik Altman, Michael Gschwind, and Sumedh Sathaye at IBM's Watson Research Center. Development of the project grew out of work on VLIW at Watson in 1996. DAISY began as an offshoot of the lab's primary research on programming parallelism in this context. "The problem with VLIW architecture," notes Erik Altman, "was primarily incompatibility with architectures like x86 or PowerPC. DAISY introduces a new architecture that is compatible with existing programs. It emulates a PowerPC program on an underlying architecture."
Kemal Ebcioglu heads the DAISY project. He has been conducting research on compilers and architectures for instruction-level parallelism topics (in particular VLIW) at the IBM Watson Research Center, since 1986. He is the current ACM SIGMICRO chair, the steering committee chair for the Parallel Architectures and Compilation Techniques conference, and the vice president for North America for IFIP Working Group 10.3 (Concurrent Systems). His current research interests include Java and dynamic binary-to-binary compilation toward achieving high ILP and hardware commonality across architectures. Ebcioglu received a Ph.D. in computer science from the State University of New York at Buffalo in 1986.
Erik Altman is a research staff member at the Watson Research Center. Aside from being one of the originators of the DAISY project, his research interests include binary translation and optimization, compilers, architecture and microarchitecture. He received a PhD in Computer Science from McGill University.
Michael Gschwind is a research staff member at the Center. Before joining IBM in 1997, he was an Assistant Professor with Technische Universit?Wien, in Vienna, Austria. His research interests include compilers, computer architecture, hardware/software co-design, application-specific processors, and field-programmable gate arrays. He holds PhD and MS degrees in computer science from Technische Universit?Wien.
Sumedh Sathaye is a research staff member at the Center. His research interests include computer architecture and microarchitecture, instruction-level parallelism, and binary translation. He received a Ph.D. in computer engineering from North Carolina State University in Raleigh, NC.
The DAISY team encourages open participation in their project and is eagerly awaiting input from the open source community. They can be reached any time, day or night, at the e-mail addresses listed in Resources below. They welcome comments from all corners of the peanut gallery on DAISY, parallel programming and any related or unrelated subjects. For the time being, daisy will be the only newsgroup.
Kemal, Erik, Michael and Sumedh have published several papers on DAISY in addition to the DAISY manual. Because of copyright notice requirements (in terms of posting these papers on the Web), they are available as PostScript or PDF files on the DAISY Web page along with the DAISY manual.
Current research goals for DAISY development
Architecture as a Layer of Software
With software dynamic binary translation projects like DAISY, new architectures (VLIW/EPIC) can be introduced under the covers without any disruption to software. All users of a DAISY-style system, including system-level privileged users, observe only the source/legacy architecture (such as PowerPC). Old software runs without recompilation or any other changes. There is a three-fold advantage to having users see only the source legacy architecture:
1. There is no need to recompile programs on the new machine.
2. If you decide to change from VLIW to a wider machine, you are still executing the same PowerPC code. In other words, you can change the underlying machine instead of the code without causing disruption to the program.
3. You can take advantage of dynamic profiling.
The proprietary Transmeta product uses a similar binary translation approach for x86, but this is a far narrower machine with more limited applications.
Scalability
DAISY software is parameterized and can support machines that issue up to 16 or more operations per cycle. A low-end DAISY implementation might be able to issue only 4 operations, while a high-end DAISY implementation might be able to issue 16 (with both using the same translation and virtual machine software).
Multiple Platforms
Although the current release of DAISY supports translation only from PowerPC, dynamic binary translation could theoretically translate from multiple architectures (for example from x86, System/390, and PowerPC to a common underlying core). This aspect of DAISY will eventually provide critical design resources to focus on a single implementation.
Efficient Processor Design
DAISY uses a streamlined, new multiple-issue processor core as its target. The processor is specifically designed for efficient emulation of the source architectures by offering binary translation support and an increased number of registers. PowerPC, for example, has 32 general-purpose registers and DAISY has 64. Because DAISY is an emulation machine, it can use a much more simple and powerful design than a general machine, which requires a far more complex grouping of features.
The DAISY source code is up on the DAISY Web page. Both tar.gz and tar.Z files are available as well as a CVS repository. As DAISY becomes more robust and user-friendly, updated versions will be released that will eventually cover full emulation of 32-bit PowerPC.
The Dynamically Architected Instruction Set from Yorktown (DAISY) translates the binary code of a source architecture to the binary code of a VLIW or EPIC machine by emulating the existing architecture (such as PowerPC) on an underlying processor, which is hidden from the user. As a just-in-time compiler, DAISY looks at the code at run-time and picks out which operations to run in parallel with the target architecture. Because this process is transparent to the user, the user sees only the source architecture instruction set. Fragments of the source architecture code are translated, scheduled, and optimized just-in-time for the target architecture to operate.
The use of dynamic binary translation under DAISY enables arbitrary reordering of code, while maintaining memory and precise exception semantics for the source architecture, such as PowerPC. The translator also optimizes code using scheduling, combining, copy propagation, load-store telescoping, loop unrolling, and other optimizations to expose a large amount of parallelism to the underlying VLIW processor. Some versions of DAISY can fully emulate a 32-bit PowerPC, including system level states like privileged registers, exceptions, cache management, address translation, and page tables. But until these capabilities have a more user-friendly interface, the open source version of DAISY will support only user-mode translation.
DAISY's first release uses the PowerPC architecture (which runs under AIX) as the source architecture. It compiles AIX PowerPC binary applications just-in-time to the VLIW code, and then simulates the VLIW code. The unit of translation in this version is one 4K byte page of code at a time. This release of DAISY also includes some distinctive hardware and software techniques such as:
* Speculative instruction scheduling on multiple paths and through branch and loop iteration boundaries
* Simultaneous scheduling, register allocation and cluster assignment
* Aggressive re-ordering of memory and ALU operations (while preserving precise PowerPC exceptions)
* Optimizations for increasing instruction level parallelism (e.g. combining, load-store telescoping)
* Fast-compiled simulation of pieces of VLIW code that provide detailed statistics, including multi-level cache and TLB effects
Why open source it?
Kemal Ebcioglu and his team are aiming at expanding the project's scope and capabilities by releasing DAISY under the IBM public license. "We hope to foster excitement in binary translation research. We anticipate that people will be drawn to DAISY because of its unique strengths as a dynamic just-in-time compiler for large machines. It offers a great experimental framework for trying out different architectural features and software techniques for instruction level parallelism and binary translation." The team will be encouraging widespread contributions to the project and has extended an open invitation to join in their efforts. "We invite volunteers worldwide to consider joining the DAISY open source team in implementing leading edge dynamic compiler techniques and architectural features through the development and expansion of DAISY capabilities."
Development and the team
In addition to Kemal Ebcioglu, DAISY's core team members are Erik Altman, Michael Gschwind, and Sumedh Sathaye at IBM's Watson Research Center. Development of the project grew out of work on VLIW at Watson in 1996. DAISY began as an offshoot of the lab's primary research on programming parallelism in this context. "The problem with VLIW architecture," notes Erik Altman, "was primarily incompatibility with architectures like x86 or PowerPC. DAISY introduces a new architecture that is compatible with existing programs. It emulates a PowerPC program on an underlying architecture."
Kemal Ebcioglu heads the DAISY project. He has been conducting research on compilers and architectures for instruction-level parallelism topics (in particular VLIW) at the IBM Watson Research Center, since 1986. He is the current ACM SIGMICRO chair, the steering committee chair for the Parallel Architectures and Compilation Techniques conference, and the vice president for North America for IFIP Working Group 10.3 (Concurrent Systems). His current research interests include Java and dynamic binary-to-binary compilation toward achieving high ILP and hardware commonality across architectures. Ebcioglu received a Ph.D. in computer science from the State University of New York at Buffalo in 1986.
Erik Altman is a research staff member at the Watson Research Center. Aside from being one of the originators of the DAISY project, his research interests include binary translation and optimization, compilers, architecture and microarchitecture. He received a PhD in Computer Science from McGill University.
Michael Gschwind is a research staff member at the Center. Before joining IBM in 1997, he was an Assistant Professor with Technische Universit?Wien, in Vienna, Austria. His research interests include compilers, computer architecture, hardware/software co-design, application-specific processors, and field-programmable gate arrays. He holds PhD and MS degrees in computer science from Technische Universit?Wien.
Sumedh Sathaye is a research staff member at the Center. His research interests include computer architecture and microarchitecture, instruction-level parallelism, and binary translation. He received a Ph.D. in computer engineering from North Carolina State University in Raleigh, NC.
The DAISY team encourages open participation in their project and is eagerly awaiting input from the open source community. They can be reached any time, day or night, at the e-mail addresses listed in Resources below. They welcome comments from all corners of the peanut gallery on DAISY, parallel programming and any related or unrelated subjects. For the time being, daisy will be the only newsgroup.
Kemal, Erik, Michael and Sumedh have published several papers on DAISY in addition to the DAISY manual. Because of copyright notice requirements (in terms of posting these papers on the Web), they are available as PostScript or PDF files on the DAISY Web page along with the DAISY manual.
Current research goals for DAISY development
Architecture as a Layer of Software
With software dynamic binary translation projects like DAISY, new architectures (VLIW/EPIC) can be introduced under the covers without any disruption to software. All users of a DAISY-style system, including system-level privileged users, observe only the source/legacy architecture (such as PowerPC). Old software runs without recompilation or any other changes. There is a three-fold advantage to having users see only the source legacy architecture:
1. There is no need to recompile programs on the new machine.
2. If you decide to change from VLIW to a wider machine, you are still executing the same PowerPC code. In other words, you can change the underlying machine instead of the code without causing disruption to the program.
3. You can take advantage of dynamic profiling.
The proprietary Transmeta product uses a similar binary translation approach for x86, but this is a far narrower machine with more limited applications.
Scalability
DAISY software is parameterized and can support machines that issue up to 16 or more operations per cycle. A low-end DAISY implementation might be able to issue only 4 operations, while a high-end DAISY implementation might be able to issue 16 (with both using the same translation and virtual machine software).
Multiple Platforms
Although the current release of DAISY supports translation only from PowerPC, dynamic binary translation could theoretically translate from multiple architectures (for example from x86, System/390, and PowerPC to a common underlying core). This aspect of DAISY will eventually provide critical design resources to focus on a single implementation.
Efficient Processor Design
DAISY uses a streamlined, new multiple-issue processor core as its target. The processor is specifically designed for efficient emulation of the source architectures by offering binary translation support and an increased number of registers. PowerPC, for example, has 32 general-purpose registers and DAISY has 64. Because DAISY is an emulation machine, it can use a much more simple and powerful design than a general machine, which requires a far more complex grouping of features.
The DAISY source code is up on the DAISY Web page. Both tar.gz and tar.Z files are available as well as a CVS repository. As DAISY becomes more robust and user-friendly, updated versions will be released that will eventually cover full emulation of 32-bit PowerPC.
Using open source software to design develop and deploy a collaborative Web site
Introduction
Today, Web sites are a critical part of business, and the tools to create and deploy Web sites are becoming more flexible and easier to use. However, the production of complicated Web applications that require more than the standard methods of interaction (such as blogs) is not trivial. Often, each application within an organization can require customization.
In this series we use a fictitious organization, International Business Council (IBC), to show you how to more effectively maximize your Web site capabilities. IBC connects its employees with external business partners in a collaborative community; however, the existing Web site is not meeting their current business needs, and the site must be redesigned. The new, customized Web site must have document storage, discussion groups, specialized workgroups, conference scheduling, schedule session descriptions, session expiration, and other tasks.
The users' role is to enhance the offerings of the company by improving strategic and tactical decisions. The user community is organized around core issues of workgroups. The community meets face-to-face several times a year in a conference setting. At the conference, issues are identified and then resolved between meetings. The Web site is used to provide information about the community's activities, such as conferences, and as a way to track progress about issues raised at the meetings.
The existing Web site is based on a document repository that provides a way to exchange documents and update the members about upcoming events. However, the Web site is inadequate for promoting community interaction, especially in the context of Web 2.0 sites with enhanced capabilities such as Weblogs, discussion groups, RSS feeds, and so on. The team's goal is to encourage the community's interaction and provide a publishing framework to support the community activities.
Issues
Since this is going to be a secure Web site, we need session management to support expiration and acknowledgement of a terms and conditions document before access can be granted. We also want to support a direct manipulation approach to content editing -- if there is an action to take on a piece of content, we want that interaction control to be placed next to the content it affects.
Other issues with the existing Web site are based on inconsistent visual language, navigation, and information architecture. Content is often hidden within the documents that are placed in the repository; there is no indication of what is in the document until you download and view it. As a result of our analysis, the team decided that the model of a document repository was the wrong model to enforce. We want a content management system to do much more than that.
Design process
Our design process was iterative, starting from analysis, to prototyping, to evaluation. We involved the end users as early as possible with questionnaires, design alternatives, and prototypes of varying fidelity. We wanted to focus our decisions on both the business goals and the end user's needs. Before launching into a set of functional requirements or development, we found that the earlier we involved the user, the quicker we could understand what was useful and what decisions were good ones. Without a whole lot of effort we gathered some very valuable feedback, while making the user feel they were part of the design process. We also gained a lot of credibility with the user community.
Another component to understanding the design is to understand the information architecture. For example, through the user research, we learned that one of the most important requirements is access to three major areas:
* Information about working groups
* Information about past and upcoming conferences
* Access to information about all members
It was also clear from the user feedback that a clean, uncluttered, and simple architecture was required.
Our analysis identified three classes of users (or personas) who come to the site: customers, workgroup leaders, and administrators. These personas formed our design and decision-making process. By learning what information is important and how it relates to the major personas, we were able to create a content architecture, its hierarchy, how it might be presented, and how each class of user might interact with that information. For example, conference information might include agenda or session items, the scheduling of those items, topics of interest that spanned conferences, and action items that were resolved between conferences.
As analysis proceeded, additional features started to emerge. For example, to support an active community we wanted to enable discussions and comments on the content, and support contextual feedback and online collaboration. Another important client requirement that emerged was the use of a unique, yet neutral, brand or visual identity. Because the Web site presents a neutral ground where users from different backgrounds come to collaborate, a strong visual connection to any one company or background could cause unnecessary distraction.
Development environment
To ease our own development process, we wanted to use an existing content management system to help generate a timely solution. Most content management systems could support the basic functions we needed, but there was an obvious need for detailed customization. An out-of-the-box implementation was not going to be sufficient. We wanted to base our development on the significant body of work that has been done in the open source community. The tools we eventually used are from that tradition.
We had several goals for our development environment, such as being able to write and test our code changes independently of the network. When the changes were sufficiently tested, we wanted to share that code with the development team. This iterative development cycle lead us to use the remote versioning system CVS, which let us synchronize with our team members and maintain a code base we could all share.
We chose Eclipse to support the project and use all the technologies in an integrated development environment (IDE). Eclipse provides a number of extensions and makes the integration with Concurrent Versions System (CVS) very straightforward. Eclipse perspectives provide several views and editors that support the current activity. In our case, that activity was editing PHP modules and HTML fragments. Eclipse also tracks local changes to your code. So even if you don't check in the files to CVS, you can still recover earlier versions of a file from your local machine. This feature of Eclipse helps ensure that you never lose code again. We created a centralized development and test environment so we could optimize working with the code and other members of the team -- your time should be spent writing and testing code, not managing the files and other resources on your system.
The selection for our content management system had implications for the other tools we'd need to use. In the case of Drupal, this meant PHP, HTML, and Cascading Style Sheets (CSS) for the development of pages and MySQL for the back-end storage.
Requirements
We generated a set of requirements that helped guide us in selecting a content management system. If these features did not exist, we wanted the system to be easily extended to include these functions. The requirements include:
* Separation of content from presentation
* In-place commenting on content
* In-place editing of content
* Threaded discussion groups
* Control of access privileges
* Searching of content
* Authentication before seeing any content
* Session control, including expiration and the signature of legal terms and conditions
* Support community interaction through discussions
* Simple learning curve of the content management system
* Simple administration interface of the content management system to hand off to the client
Today, Web sites are a critical part of business, and the tools to create and deploy Web sites are becoming more flexible and easier to use. However, the production of complicated Web applications that require more than the standard methods of interaction (such as blogs) is not trivial. Often, each application within an organization can require customization.
In this series we use a fictitious organization, International Business Council (IBC), to show you how to more effectively maximize your Web site capabilities. IBC connects its employees with external business partners in a collaborative community; however, the existing Web site is not meeting their current business needs, and the site must be redesigned. The new, customized Web site must have document storage, discussion groups, specialized workgroups, conference scheduling, schedule session descriptions, session expiration, and other tasks.
The users' role is to enhance the offerings of the company by improving strategic and tactical decisions. The user community is organized around core issues of workgroups. The community meets face-to-face several times a year in a conference setting. At the conference, issues are identified and then resolved between meetings. The Web site is used to provide information about the community's activities, such as conferences, and as a way to track progress about issues raised at the meetings.
The existing Web site is based on a document repository that provides a way to exchange documents and update the members about upcoming events. However, the Web site is inadequate for promoting community interaction, especially in the context of Web 2.0 sites with enhanced capabilities such as Weblogs, discussion groups, RSS feeds, and so on. The team's goal is to encourage the community's interaction and provide a publishing framework to support the community activities.
Issues
Since this is going to be a secure Web site, we need session management to support expiration and acknowledgement of a terms and conditions document before access can be granted. We also want to support a direct manipulation approach to content editing -- if there is an action to take on a piece of content, we want that interaction control to be placed next to the content it affects.
Other issues with the existing Web site are based on inconsistent visual language, navigation, and information architecture. Content is often hidden within the documents that are placed in the repository; there is no indication of what is in the document until you download and view it. As a result of our analysis, the team decided that the model of a document repository was the wrong model to enforce. We want a content management system to do much more than that.
Design process
Our design process was iterative, starting from analysis, to prototyping, to evaluation. We involved the end users as early as possible with questionnaires, design alternatives, and prototypes of varying fidelity. We wanted to focus our decisions on both the business goals and the end user's needs. Before launching into a set of functional requirements or development, we found that the earlier we involved the user, the quicker we could understand what was useful and what decisions were good ones. Without a whole lot of effort we gathered some very valuable feedback, while making the user feel they were part of the design process. We also gained a lot of credibility with the user community.
Another component to understanding the design is to understand the information architecture. For example, through the user research, we learned that one of the most important requirements is access to three major areas:
* Information about working groups
* Information about past and upcoming conferences
* Access to information about all members
It was also clear from the user feedback that a clean, uncluttered, and simple architecture was required.
Our analysis identified three classes of users (or personas) who come to the site: customers, workgroup leaders, and administrators. These personas formed our design and decision-making process. By learning what information is important and how it relates to the major personas, we were able to create a content architecture, its hierarchy, how it might be presented, and how each class of user might interact with that information. For example, conference information might include agenda or session items, the scheduling of those items, topics of interest that spanned conferences, and action items that were resolved between conferences.
As analysis proceeded, additional features started to emerge. For example, to support an active community we wanted to enable discussions and comments on the content, and support contextual feedback and online collaboration. Another important client requirement that emerged was the use of a unique, yet neutral, brand or visual identity. Because the Web site presents a neutral ground where users from different backgrounds come to collaborate, a strong visual connection to any one company or background could cause unnecessary distraction.
Development environment
To ease our own development process, we wanted to use an existing content management system to help generate a timely solution. Most content management systems could support the basic functions we needed, but there was an obvious need for detailed customization. An out-of-the-box implementation was not going to be sufficient. We wanted to base our development on the significant body of work that has been done in the open source community. The tools we eventually used are from that tradition.
We had several goals for our development environment, such as being able to write and test our code changes independently of the network. When the changes were sufficiently tested, we wanted to share that code with the development team. This iterative development cycle lead us to use the remote versioning system CVS, which let us synchronize with our team members and maintain a code base we could all share.
We chose Eclipse to support the project and use all the technologies in an integrated development environment (IDE). Eclipse provides a number of extensions and makes the integration with Concurrent Versions System (CVS) very straightforward. Eclipse perspectives provide several views and editors that support the current activity. In our case, that activity was editing PHP modules and HTML fragments. Eclipse also tracks local changes to your code. So even if you don't check in the files to CVS, you can still recover earlier versions of a file from your local machine. This feature of Eclipse helps ensure that you never lose code again. We created a centralized development and test environment so we could optimize working with the code and other members of the team -- your time should be spent writing and testing code, not managing the files and other resources on your system.
The selection for our content management system had implications for the other tools we'd need to use. In the case of Drupal, this meant PHP, HTML, and Cascading Style Sheets (CSS) for the development of pages and MySQL for the back-end storage.
Requirements
We generated a set of requirements that helped guide us in selecting a content management system. If these features did not exist, we wanted the system to be easily extended to include these functions. The requirements include:
* Separation of content from presentation
* In-place commenting on content
* In-place editing of content
* Threaded discussion groups
* Control of access privileges
* Searching of content
* Authentication before seeing any content
* Session control, including expiration and the signature of legal terms and conditions
* Support community interaction through discussions
* Simple learning curve of the content management system
* Simple administration interface of the content management system to hand off to the client
Subscribe to:
Posts (Atom)