[Chameleon] Chameleon 1.99 Beta 1 Released
pgs at magma.ca
Mon May 31 12:29:55 EDT 2004
Chameleon 1.99 Beta 1 Release Notice
This has been a long time in the coming, over a year in fact. But it is
finally here. The next version of Chameleon now has an official release
status of Beta 1. And the purpose of this email is to tell you a little
bit about this release.
Chameleon 1.99 is significantly changed from the original 1.0 release.
When we first started working on this version, we had optimistically
tagged it as version 1.1. The goal for version 1.1 was to work on
performance enhancements for the core Chameleon engine and fix some
known bugs. As we were working on this, we were also tasked with making
Chameleon work directly from a MapServer map file instead of requiring
the use of a Web Map Context document (WMS layers). In hindsight, we
bit off a lot more than we realized, and it has taken us over a year to
get everything really stable again. In the meantime, a great many
changes have happened to Chameleon, most of which I won't be able to
describe in this email. So I will focus on the most dramatic changes
that will be visible to the users of Chameleon - the application
A lot of hard work has gone into this version of Chameleon. Almost
every person on DM Solutions staff has provided valuable input, either
in the form of development, testing, documentation, or just playing
"devil's advocate" when discussing new features. In addition, we have
had excellent support from the growing Chameleon community, with
numerous contributions of new ideas, bug identification and fixes,
testing in environments we can't reproduce, and documentation. Finally,
we couldn't have progressed Chameleon to this point without financial
support from clients who believe that this technology is worth investing in.
You need to get this Chameleon release and start using it. Your
feedback on the good, the bad, and the ugly is critical to us. To this
end, there are several mechanisms for participating in Chameleon.
First, you can subscribe to one or both of the chameleon mailing lists:
chameleon at lists.maptools.org
This is a user-oriented list that is used to discuss every aspect of
installing and using chameleon, including potential bugs, feature
requests, and problem solving. This is a moderate traffic list
averaging several emails a day. We hope to see this increase as more
users get involved.
chameleon-dev at lists.maptools.org
This is a developer-oriented list that primarily carries bugzilla
traffic. Occasionally, it is used to discuss development topics that
are not relevant to the chameleon user list. All bugzilla traffic
related to chameleon is automatically posted here, so it is high traffic
especially near to release times, but can go for weeks without a post at
Second, you can register in bugzilla on the maptools website
(http://www.maptools.org/bugzilla) to view the outstanding issues with
Chameleon, track specific bugs (by adding yourself as a cc on the bug),
and report new bugs.
Third, you can contribute useful hints and tips to the Chameleon wiki
pages, again on the maptools site at
Finally, there is a Chameleon community initiative currently under
development. While not available yet, it will provide a central
clearinghouse for community involvement in Chameleon. Look for an
announcement concerning this before the final release of version 1.99!
How To Get Chameleon
Prerequisites for this version are:
* PHP version 4.2.2 or later, preferrably 4.3.x (but not 5.x)
* A web server configured with PHP as a CGI
* PHP/MapScript version 4.0 or 4.2 (some widgets, especially the
TrueNorth widget and some of the SLD-related widgets, require 4.2).
Windows ZIP file:
Anonymous CVS Access (for those that are using it):
Both chameleon and php_utils have been tagged as chameleon_1_99_beta_1.
Use this tag when updating to get exactly this release.
NOTE: there is a serious lack of up-to-date documentation right now.
That's coming in a future beta or, at the latest, by the first Release
Candidate. Until then, you will have to ask on the list or check out
the sample applications. If you are already an active Chameleon user of
a recent (or cvs) version, then you probably won't need too much
documentation right now. If you aren't, then the beta may not be for
you. But you are welcome to try it out anyway.
The intention of this release is to provide a reasonably stable
development environment that will not change drastically before the
final release. We know there are some problems (see bugzilla for the
current list), but we also want to make sure that a core set of
functionality is working as well as we can test it. At this point, only
a subset of widgets have undergone extensive QA. The remainder will go
through the same process as we progress to the final release. The
widgets that are now considered most stable are:
NOTE: This doesn't mean that the other widgets won't or don't work, but
it does mean that we haven't tested them as thoroughly and there are
likely some remaining issues, perhaps even ones that we know about.
Before reporting any issues with any widgets, check bugzilla first. But
if in doubt, report the issue and we'll figure out if it has already be
listed somewhere. We'd rather make sure we don't overlook anything.
Features and Changes from 1.0
The changes from 1.0 are too numerous to list in any meaningful way.
Instead, I've summarized some of the more important changes.
No More Service Instance
The biggest change from version 1.0 is that Chameleon requires the use
of a service instance. In fact, in this release, the service instance
is not even there - it will return for the first Release Candidate,
however, and thus provide two modes of operation for Chameleon. Until
that time, however, you can use the non-service instance mode.
In this mode, Chameleon acts as an application development kit. You
have to provide the application and you 'include' the core Chameleon
engine to gain access to its functionality. For most applications,
however, this is simply a matter of copying one of the sample
applications and replacing a couple of lines that identify the
application template and the map file to use.
More Flexible Skinning
In version 1.0, many widgets represented themselves as 'buttons' in the
interface. Some widgets could access the services of an automated
button generator (the 'buttonizer') while others required pre-built
graphics. Some buttons had fancy hover and click effects, others had
nothing. This was both limiting and confusing.
In version 1.99, we have addressed this by making every widget that uses
a button work in exactly the same way and by increasing the flexibility
of how a button can be designed and implemented. Now, widgets with
buttons can use:
* a single pre-generated image, no fancy hover effects (minimizes
* mulitple pre-generated images, with fancy hover effects (more
* single, 'buttonized' image, no fancy hover effects, buttons generated
at run time
* multiple 'buttonized' images, fancy hover effects, buttons generated
at run time.
With some fairly decent caching built in, there doesn't seem to be a big
performance hit for generating buttons on the fly. In fact, in most
cases, the buttons are used directly from cached versions with identical
performance to pre-generated images.
In addition to synchronizing all the widgets' use of buttons, we have
added the notion of 'skins' to Chameleon. Now, an entire application's
images and css files can be stored in a directory structure and, if you
follow the naming convention of the default skin, you can change an
application's look and feel by changing one line of code in the main
application file. Changing skins in this way is very flexible, but this
is the first time we've tried this, so there are still some quirks in
the process. For instance, some widgets such as the WMS Browser widget
don't support skins very well (or at all ;)). But the most commonly
used widgets work very nicely with skins now!
This was the goal we had in mind when starting version 1.1! And we have
made some significant improvements in performance of the core Chameleon
engine by streamlining the code and optimizing heavily used portions.
With the addition of quite a few new features, however, some of these
gains have been offset by additional functionality. In approaching the
beta release, the focus has been on getting Chameleon as stable as
possible. At this point, performance is quite good, but we will
continue to tune performance as we approach the Release Candidate and
final Release of 1.99.
A variety of new widgets have been added to Chameleon, including:
There are now a series of samples included directly in the Chameleon
distribution. The samples have been developed to serve three distinct
* demostrate a 'typical' use of widgets in real-life situations
* provide a mechanism to test widgets prior to release
* provide a starting point for creating new applications
The samples are grouped around the notion of widget 'Packs'. We haven't
formalized this yet, but at some point widgets will be released in
widget Packs. A widget Pack will be a unit of QA and the pack will be
released as a single entity, separately from the Chameleon core.
There are some other changes that don't fit conveniently into the above
categories, but that will have an impact on you when you go to use
* some widgets have changed names. Try running your new application
with your existing template, widgets that can't be created (because of
invalid attributes or an invalid widget name) will be highlighted in red
and you can then look in the chameleon/htdocs/widgets directory to find
the new name. For instance, the Print widget has changed to PrintWidget
because Print is a php keyword that caused problems.
* some widgets have changed attributes, in particular the compass point
widget is substantially different. If you are getting invalid widget
attributes, this is probably the cause. Until the documentation is
complete, however, you will have to post your questions on the list or
look at the sample applications.
* widget names are now case sensitive on non-windows platforms (i.e.
Linux), so you must write Scalebar instead of scalebar or SCALEBAR.
Converting to 1.99
* install 1.99
* edit the configuration file
* test the sample applications
* create a php file to launch the application (index.phtml)
- can copy sample_basic.phtml
- edit it to point to your map file and template file
Coming in the Release Candidate
Here are a few of the things that we hope to get done for the 1.99
The intention is to implement a service instance a la 1.0 so that
Chameleon 1.99 is able to work either as a service instance or an
application development kit.
Work on this has started but it is not yet stable enough to be included
in this beta. It will hopefully be in the next beta.
Configuration File Cleanup
As of this moment, the Chameleon configuration file still contains a lot
of junk from the 1.0 days. Some things in there are no longer
necessary, and some are specific only to the service instance mode of
operation. The intention is to create a second configuration file,
chameleon.xml, that will contain the minimum configuration necessary for
the Application Development Kit mode, and keep the existing cwc2.xml for
configuring the service instance mode.
This will necessitate changes to the configuration editing tool as well.
By the time we release the final verson of 1.99, we hope to have the
widgets divided up into widget Packs that can be released and QA'd
separately from the core. This should mean more frequent releases with
bug fixes etc., which will be good for everyone.
NOTE: the names of the widget packs, as well as the widgets assigned to
them, are still under review and may change before the first Release
The documentation for 1.99 is terribly out of date, most of it still
refers to the original 1.0 stuff. In particular, there is no widget
documentation yet, nor has the administrative or application developer's
guide been updated. This will be done before we release the first
There are many areas in Chameleon that could benefit from performance
enhancements. We will be trying to identify the worst bottlenecks and
fix them before the Release Candidate, but I expect this to be an
ongoing process even after the final release.
Widget Name Changes
Some of the existing widget names are a little horrible (like
KeyMapDHTML2 for instance). All the widgets are going to be examined
for how accurately the name of the widget reflects its purpose, and a
set of rules will be developed for widget naming (this has been ad-hoc
up until now).
More information about the Chameleon