[Chameleon] Chameleon 1.99 Beta 1 Released

Paul Spencer 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 
developers.

Credits
-------

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.

Getting Involved
----------------

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
(http://lists.maptools.org/mailman/listinfo/chameleon)

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
(http://lists.maptools.org/mailman/listinfo/chameleon-dev)

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 
other times.

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 
http://www.maptools.org/chameleon/wiki/.

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).

Linux/Unix tarball:

http://www.maptools.org/dl/chameleon/chameleon-1.99beta1.tar.gz

Windows ZIP file:

http://www.maptools.org/dl/chameleon/chameleon-1.99beta1.zip

MS4W Package

http://www.maptools.org/dl/ms4w/chameleon_ms4w-1.99beta1.zip

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:

CompassPoint
CursorPos
ErrorReport
Extent
KeyMap
Language
Link
MapDHTMLWidget
MapUnits
ProjectionLabel
Query
Recenter
Scalebar
SessionExpired
SharedResource
Title
UpdateMap
ZoomAllLayers
ZoomFactor
ZoomIn
ZoomOut

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 
JavaScript in the page, reduced load time for images)
* mulitple pre-generated images, with fancy hover effects (more 
JavaScript, but fast load time for individual images)
* 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!

Performance Improvements
------------------------

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.

New Widgets
-----------

A variety of new widgets have been added to Chameleon, including:

* ClearWFSFilter
* DDSGUID
* DownloadSLD
* ExpressionBuilder
* ExtractContext
* ExtractWFSData
* JSList
* JSTreeView
* KeepSessionAlive
* KeyMapDHTML2
* LayerAttributes
* LayerManager2
* MapImageSharedResource
* MapImageStatic
* MapImageWidget
* MapTips
* ROICircleTool
* ROIFeatureTool
* ROIManager
* ROIManagerMode
* ROIPolygonTool
* ROIRectangleTool
* ROIRemoveAll
* ROIRemoveLast
* SECTPopup
* SelectLayers
* SessionExpired
* SQLQuery
* Table
* TrueNorth
* UploadSLD
* VarSharedResource
* VarURL
* WMSBrowser
* WMSCache
* XMLRPC

Sample Applications
-------------------

There are now a series of samples included directly in the Chameleon 
distribution.  The samples have been developed to serve three distinct 
purposes:

* 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.

Other Changes
-------------

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 
Chameleon.

* 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 
Release Candidate.

Service Instance
----------------

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.

Widget Packs
------------

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 
Candidate.

Documentation
-------------

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 
Release Candidate.

Performance Tuning
------------------

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 mailing list