Sunday February 29, 2004
04:41 PM
Bricolage 1.6.10 "Jump"
I'm pleased to announce the release of Bricolage 1.6.10 "Jump". This
maintenance release addresses a number issues discovered since the release
of version 1.6.9. Here is the complete list of chnages for this release:
- Added missing index to the "workflow__id" column of the "story",
"media", and "formatting" (template) tables. [David]
- Made index on the "desk__id" column of the "story", "media", and
"formatting" (template) tables a partial index, since the column
will usually be "NULL". [David]
- Added an index to the description column of the "story_instance",
"media_instance", and "formatting" (template) tables to speed up
simple searches. [David]
- Added missing foreign key constraints for the "desk_id" column of
the "story", "media", and "formatting" (template) tables. [David]
- "make clone" no longer fails when it can't find httpd.conf, because
it no longer looks for it. [David]
- "make clone" no longer assumes that the conf directory is in
$BRICOLAGE_ROOT, and prompts the user to find out. [David]
- Bricolage once again works with Perl 5.6.x and Perl 5.8.1. [David]
- Made bric_republish and bric_dev_sync safe to use with "https://".
[Geoff Richards]
- The user object is no longer instantiated from the database every
time a user sends a request to Bricolage. It appears that this bit
of overhead has unfortunately been imposed on every request since
Bricolage 1.0 due to a very stupid typo. [David]
- The creation of the Bricolage PostgreSQL user and database during
installation no longer complains about usernames or database names
with dashes and other non-alphanumeric characters in them. Thanks to
Marshall Roch for the spot! [David]
- Fixed ancient bug revealed by the release of DBI 1.41. [David]
- Photoshop-generated images no longer make Bricolage choke when
they're uploaded to a Media profile that autopopulates fields.
Reported by Paul Orrock. [David]
- The "lookup()" method of the story, media, and template classes will
now correctly return inactive objects. [David]
- Fixed typo of "CHECK_FREQUENCY" in Bric::Config that made it always
use the default of 1. [Scott]
- The "lookup()" method of the story, media, and template classes once
again attempt to retrieve objects from the per-request cache before
looking them up in the database. [David]
- Changed the name of the event logged when templates are checked out
from "Template Checked Out Canceled" to the correct "Template
Checked Out." [David]
See the changes page for a complete history of
Bricolage changes.
ABOUT BRICOLAGE
Bricolage is a full-featured, enterprise-class content management and
publishing system. It offers a browser-based interface for ease-of use, a
full-fledged templating system with complete HTML::Mason and
HTML::Template
support for flexibility, and many other features. It operates in an
Apache/mod_perl environment, and uses the
PostgreSQL RDBMS for its
repository. A comprehensive, actively-developed open source CMS, Bricolage has
been hailed as "Most Impressive" in 2002 by eWeek.
Learn more about Bricolage and download it from the Bricolage home page.
Enjoy!
David
Thursday February 12, 2004
09:09 PM
Bricolage-Devel 1.7.2
I'm thrilled to announce the release of Bricolage-Devel 1.7.2, the third
development release for what will eventually become Bricolage 1.8.0. This
version of the open-source content management system addresses all of the bugs
discovered since the release of the second development release, 1.7.1, and
adds several new features and some tremendous performance optimizations. The
most significant changes since 1.7.1 include:
- New Features
- Bricolage now has a much more robust security policy. Users with
permission to edit various objects and groups in the administrative
interface can no longer increase their permissions. Nor can they
manage the membership of groups of which they are not members or do
not have EDIT access to the members. All this is to prevent users
from giving themselves higher permissions. [David]
- Added "publish_another()" method to Bric::Util::Burner. This method
publishes a document other than the one currently being published.
This is useful when a template for one document type needs to
trigger the publish of another document. [David]
- Added new permissions "RECALL" and "PUBLISH". These permissions
apply only to asset groups, including desks, categories, and
workflows. Now users must have RECALL permission to recall assets
from the library and bring them into workflow, and PUBLISH
permission to publish assets. This should make it much easier to
create more flexible permissions to manage approval processes.
[David]
- Bricolage now supports per-user preferences. Admins can mark a
preference as overrideable, which allows users to set this
preference to their preferred value. [Dave Rolsky]
- The character set and language preferences have been moved into the
database, so that these can be overridden by individual users if
needed. [Dave Rolsky]
- Added the "bric_queued" daemon to take advantage of the new
publication scheduling of Bric::Util::Job::Pub. Together with the
use of a carefully tuned instance of Bricolage, these new features
allows the Bricolage administrator to control the amount of system
resources given over to publishing. [Mark]
- German localization completed. [Thorsten Biel]
- Added User and Desk (asset) modules to the SOAP API, added asset
commands to the Workflow module, and made corresponding changes to
bric_soap. [Scott]
- Added "burn_again" attribute to the Mason burner. This method can be
called from within a template to force the burner to burn the
current page again, creating a new file. This can be useful for
creating multi-file output without extra paginated subelements.
[David]
- Added zh-cn localization, with translation based on zh-tw. [Kang-min
Liu]
- Improvements
- Fixed upgrade scripts to be more intelligent in their handling of
transactions. They no longer allow SQL errors without failing the
upgrade. The upgrade scripts have also been updated to ensure
successful upgrades to Bricolage installations as far back as 1.4.0.
[David]
- Added "element_key_name" parameter to the "list()" method of the
story, media, and formatting classes. This makes it easier to use
the name of a story type element, media type element, or template
element to search for assets, rather than the "element__id"
parameter, which isn't as friendly. [David]
- Added "Filter by Site Context" preference. When active, search
results only return assets relative to the site context instead of
all the sites the user has access to [Jo„o Pedro]
- The Mason burner now uses document templates as true dhandlers,
enabling full Mason-style inheritance from autohandlers to work
properly. [David & Dave Rolsky]
- "All *" groups can now be accessed via the Group Manager. Their
names and memberships cannot be edited, but their permissions can.
Inspired by a bug report from Patrick Walsh. [David]
- Queries for stories, media, and templates have been greatly
optimized. Thanks to a large database from *The Register* and query
optimization from Josh Berkus (under sponsorship from WHO) and Simon
Myers of GBDirect, searches for stories in the UI are now 10-40
times faster than they were before (depending on the version of
PostgreSQL you're running). [David]
- Added the "story.category" parameter to the "list()" method of
Bric::Biz::Asset::Business::Story. Pass in a story ID, and a list of
stories in the same categories as the story with that ID will be
returned, minus the story with that ID. This parameter triggers a
complex join, which can slow the query time significantly on
underpowered servers or systems with a large number of stories.
Still, it can be very useful in templates that want to create a list
of stories in all of the categories the current story is in. But be
sure to use the parameter! Thanks to Josh Berkus for his
help figuring out the query syntax. [David]
- Bug Fixes
- Category groups can be edited again. Reported by Alexander Ling.
[David]
- Elements can be edited again. Thanks to Alexander Ling for the spot!
[David]
- Element fields can be edited again without encountering the "called
the removed method 'get_name'" error. Reported by Alexander Ling.
[David]
- Templates can be deleted again. Thanks to Adeola Awoyemi for the
spot! [David]
- Stories and media with non-unique URIs can now be deleted. Reported
by Simon Wilcox. [David]
- Checkin and Publish once again works in the media profile. Thanks to
Alexander Ling for the spot. [David]
- The inline "Bulk Edit" feature in story and media profiles works
again. Thanks to Neal Sofge for the spot! [David]
- Templates are now correctly saved to the user's sandbox when "Save
and Stay" is pressed. [Jo„o Pedro]
- Select lists now correctly save their states so that, for example,
dropdown menus in New Story remember the element and category that
was selected last time. [Scott]
- Sites can now be disassociated with elements. Reported by Alexander
Ling. [David]
- Redirects during previews work again. [David]
- The virtual FTP server works again for the first time since before
the release of 1.7.0. Now when you log in to the FTP server, the
root directory will contain a list of sites. When you change
directories into one of the site directories, you'll see a list of
the output channels in that site. [David]
- The virtual FTP server no longer displays output channels or
categories (or sites) that the user does not have at least READ
permission to access. [David]
For a complete list of the changes, see the changes
file.
ABOUT BRICOLAGE
Bricolage is a full-featured, enterprise-class content management and
publishing system. It offers a browser-based interface for ease-of use, a
full-fledged templating system with complete HTML::Mason,
HTML::Template,
and Template Toolkit
support for flexibility, and many other features. It operates in an
Apache/mod_perl environment, and uses the
PostgreSQL RDBMS for its
repository. A comprehensive, actively-developed open source CMS, Bricolage has
been hailed as "Most Impressive" in 2002 by eWeek.
Learn more about Bricolage and download it from the Bricolage home page.
Enjoy!
David
Friday February 06, 2004
04:13 PM
Bricolage 1.6.9
I'm pleased to announce the release of Bricolage 1.6.9. This maintenance
release addresses a number issues discovered since the release of version
1.6.8. Here is the complete list of chnages for this release:
- Fixed installation and upgrade scripts to use the same perl binary
as was used to execute Makefile.PL. This ensures that all necessary
CPAN modules will be correctly installed and located. [Simon Wilcox]
- Story profile JavaScript validation works again. Thanks to Simon
Wilcox for the spot! [David]
- Eliminated the need for the Apache::ConfigFile module, and thus some
annoying problems with the CPAN indexer when trying to install it.
[David]
- Fixed order of SQL statement execution upon installation so that
dependencies are properly handled. [Mark]
- New file resources created for distribution are now created with the
proper media type. [Mark]
- The German localization module (Bric::Util::Language::de_de) had the
wrong package name, which meant that attempts to use it failed with
the error "Can't locate class method
'Bric::Util::Language::de_de::new' via package
'Bric::Util::Language::de_de'". [Dave Rolsky]
- Added new path to find PostgreSQL installed by some Debian packages.
[Cinly Ooi]
- Workflows with special characters such as "+" and "&" now work
properly in the side navigation. Thanks to Patrick Walsh for the
spot! [David]
- Start desks can no longer be removed from workflows. This prevents
workflows from having no desks, thus avoiding problems adding desks
to such workflows. Reported by Patrick Walsh. [David]
- Pushing the cancel button in a desk profile and then in a workflow
profile no longer redirects back to the desk profile. [David]
- Made publish_date not be empty when publish is done through the SOAP
API and no publish_date argument is passed. [Scott]
- Fixed CPAN installer to correctly update the list of modules to be
installed after a module has been successfully installed. Reported
by Perrin Harkins. [David]
- Checkout checkboxes no longer appear for assets that users don't
have permission to check out. Thanks to Alexander Ling for the spot!
[David]
- Bric::Biz::AssetType::Parts::Data's "lookup()" method now returns
deactivated objects, as it should. Thanks to Nuno Barreto for the
spot. [David]
- Events with attributes with the same name as attributes of the
object the event was triggered on (a common occurrence) no longer
confuses the two. Thanks to Todd Tyree for the spot. [David]
- Users granted permission to access the members of a group via two
user group associations now always get the highest priority
permission, as it should be. Thanks to Patrick Walsh for the spot.
[David]
- Textarea fields in elements no longer lose some of their default
data after editing the field in the element manager. Reported by
Todd Tyree. [David]
- Media assets now properly remember their class, which means that
autopopulated fields (such as "height" and "width" for images) are
autopopulated when a new image file is uploaded. Thanks to Patrick
Walsh for the spot! [David]
- Updated Chinese Traditional localization. [Kang-min Liu]
See the changes page for a complete history of Bricolage changes.
ABOUT BRICOLAGE
Bricolage is a full-featured, enterprise-class content management and
publishing system. It offers a browser-based interface for ease-of use, a
full-fledged templating system with complete HTML::Mason and
HTML::Template
support for flexibility, and many other features. It operates in an
Apache/mod_perl environment, and uses the
PostgreSQL RDBMS for its
repository. A comprehensive, actively-developed open source CMS, Bricolage has
been hailed as "Most Impressive" in 2002 by eWeek.
Learn more about Bricolage and download it from the Bricolage home page.
Enjoy!
David
Friday December 19, 2003
01:52 PM
Apple Mail Hack
For those who have multiple email addresses like me, but most are only for sending, and who use Apple Mail, be sure to check out this hack, and do away with bogus extra mail account configurations.
Sunday November 30, 2003
02:57 PM
Bricolage-Devel 1.7.1
It gives me great pleasure to announce the release of Bricolage-Devel 1.7.1,
the second development release for what will eventually become Bricolage
1.8.0. This version of the open-source content management system addresses
all of the bugs discovered since the release of the first development
release, 1.7.0. The most significant changes include:
For a complete list of the changes, see the changes
file.
ABOUT BRICOLAGE
Bricolage is a full-featured, enterprise-class content management and
publishing system. It offers a browser-based interface for ease-of use, a
full-fledged templating system with complete HTML::Mason,
HTML::Template,
and Template Toolkit
support for flexibility, and many other features. It operates in an
Apache/mod_perl environment, and uses the
PostgreSQL RDBMS for its
repository. A comprehensive, actively-developed open source CMS, Bricolage has
been hailed as "Most Impressive" in 2002 by eWeek.
Learn more about Bricolage and download it from the Bricolage home page.
Enjoy!
David
Saturday November 29, 2003
09:35 PM
Bricolage 1.6.8
I'm pleased to announce the release of Bricolage 1.6.8. This maintenance
release addresses a few issues discovered since the release of version
1.6.7. Here is the complate list of chnages for this release:
- Custom select fields now correctly pay attention to the size
attribute. Reported by Dave Rolsky. [David]
- The element type manager now displays "Subelement" instead of
"Story" for subelement element types. Suggested by Dave Rolsky.
[David]
- Updated to work with PostgreSQL 7.4. [David]
- Improved error message in Bric::Util::Trans::SFTP. [David]
- It's possible to create new stories again without running into errors
saying that a URI is not unique because the cover date and slug were
accidentally excluded from the URI. [David]
- Mason story templates now inherit from all category templates, thus
enabling the access of
<%attr>s and calling
of <%method>s in category templates from story
templates. [David] - Permission to edit element fields is now based on the permissions
granted to edit the elements they belong to. This means that users
other Global Admin group members can now edit fields. [David]
- Dates are no longer editable if a user doesn't have permission to
edit them. [David]
- Users without EDIT access to an element no longer see a link to Edit
fields of that element, but a link to View them, instead. They will
also no longer see an "Add Subelements" button. [David]
- Fixed bug that triggered an invalid error message when a story URI
is non-unique. Reported by Kevin Elliott. [David]
- Assets with the same IDs but in different classes (media vs. stories
vs. templates) no longer prevent each other from being added to a
desk that can contain different classes of assets. Thanks to Scott
for the spot and doing the research that lead to the replication of
the problem. [David]
For a complete list of the changes, see the changes
file.
ABOUT BRICOLAGE
Bricolage is a full-featured, enterprise-class content management and
publishing system. It offers a browser-based interface for ease-of use, a
full-fledged templating system with complete HTML::Mason and
HTML::Template
support for flexibility, and many other features. It operates in an
Apache/mod_perl environment, and uses the
PostgreSQL RDBMS for its
repository. A comprehensive, actively-developed open source CMS, Bricolage has
been hailed as "Most Impressive" in 2002 by eWeek.
Learn more about Bricolage and download it from the Bricolage home page.
Enjoy!
David
Wednesday October 22, 2003
06:43 PM
Bricolage-Devel 1.7.0
It give me great pleasure to announce the release of Bricolage-Devel 1.7.0,
the first development release for what will eventually become Bricolage
1.8.0. In addition to all of the bug fixes included in the 1.6.x series,
this version of the open-source content management system adds a number of
significant new features. The most significant changes include:
- Added multisite support. Now all stories, media, output channels,
templates, categories, and workflows may be associated with
different sites, and even have the same names in different sites.
This simplifies the management of multiple Web sites with Bricolage.
Story type and media type elements may be shared between sites.
Funded by Portugal Telecom Multimedia.
- Added document aliasing. Stories and media in a site may now be
aliased and published in another site, as long as the elements on
which they are based are shared between sites. Control over the
content of aliased documents remains in the original site, thus
ensuring the editorial integrity of the document for that site.
Funded by Portugal Telecom Multimedia.
- Added
$burner->sdisplay_element method to Bric::Util::Burner. This
is a sprintf-style version of $burner->display_element. - Added the
YEAR_SPAN_BEFORE and YEAR_SPAN_AFTER bricolage.conf
directives. These directives enable control how many years before
and after the current year to display in the list of years in the
date and time select widget. The default values are 10 for each,
meaning that if the current year is 2003, then the date span will be
from 1993 to 2013. - Added "Email" action, which can be used to email the files generated
by a publish to one or more email addresses. Funded by ETonline.
- Callbacks were moved from Mason components to modules based on
Params::Callback and managed by MasonX::Interp::WithCallbacks. This
makes the UI layer more responsive and enhances maintainability.
- Optimized performance of URI uniqueness checks by adding database
tables to do the job, rather than constructing the URIs for all
other documents in the same categories as the document being
checked. This was the last major bottleneck affecting SOAP
performance, as well as document editing in general. Funded by
Kineticode.
- Added
output_channel_id parameter to the list() methods of Story
and Media to enable querying for documents in output channels other
than the primary output channel. - Added Keyword Management interface to centrally manage keywords.
- Added HTML::Mason Custom tags support, allowing template developers
to write code blocks that are context sensitive.
- Added new page extension support to the burner, which allows
template developers to set string extensions to use for successive
file names, rather than the traditional use of numeric file name
extensions for successive file names.
- Added "Text to search" option in the Advanced search of Media and
Stories to search for documents based on the contents of their
field.
- All preview links are now generated by a single widget. This widget
adds the story or media URI to the
title attribute of the link tag
(which is modern browsers will automatically work as a roll-over
tooltip), makes the story or media URI copyable (by relying on
JavaScript to actually open a new window for the preview), and
manages selecting an output channel in which to preview a story. - Made User Group Permissions UI wieldy with larger numbers of users
by adding a select list to choose which type of Permission to look
at.
- Added
contrib_id parameter to the list() methods of
Bric::Biz::Asset::Business::Story and
Bric::Biz::Asset::Business::Media to return a list of story or media
documents associated with a given contributor. - Switched Bric::Util::CharTrans from using Text::Iconv to Encode,
thus removing the dependency on a C library (libiconv). Note that
this has changed the API of Bric::Util::CharTrans. Its
to_utf8()
and from_utf8() methods now always convert the argument passed in
in place. They did this before for references, but now they do it
for plain strings, as well. Also note that use of character
translation also now requires Perl 5.8.0 or later. - Added MediaType, Site, and Keyword SOAP modules.
- Added
element attribute to Bric::Util::Burner so that
$burner->get_element should always return the element currently
being burned. - Added a
throw_error() method to Bric::Util::Burner so that
template developers can easily throw an exception that their users
will see in the UI. - Moved category selection from Media and Story Profiles into their
own separate components so that organizations with hundreds or
thousands of categories don't have to load them into a dropdown list
every time an asset is edited. The category "browser" uses an
interface similar to 'Associate Contributors', which has the
advantage of being searchable rather than looking through a "long
list of all categories". This feature can be enabled via the new
ENABLE_CATEGORY_BROWSER bricolage.conf directive. - Added list paging to Desks and My Workspace.
- Added the ability to test templates without having to deploy them by
using "template sandboxes" for each template developer.
- Added Template Toolkit burner support.
- Added support for installing and upgrading Bricolage with PostgreSQL
on a separate host.
- Added context-sensitive help for pages that were missing it.
For a complete list of the changes, see the changes
file.
ABOUT BRICOLAGE
Bricolage is a full-featured, enterprise-class content management and
publishing system. It offers a browser-based interface for ease-of use, a
full-fledged templating system with complete HTML::Mason,
HTML::Template,
and Template Toolkit
support for flexibility, and many other features. It operates in an
Apache/mod_perl environment, and uses the
PostgreSQL RDBMS for its
repository. A comprehensive, actively-developed open source CMS, Bricolage has
been hailed as "Most Impressive" in 2002 by eWeek.
Learn more about Bricolage and download it from the Bricolage home page.
Enjoy!
David
05:37 PM
Bricolage 1.6.7
I'm pleased to announce the release of Bricolage 1.6.7. This maintenance
release addresses a few issues discovered since the release of version
1.6.6. Some of the more important changes include:
- Fixed "bric_soap" to accept a "--server" argument starting with
"https", which is more friendly to an SSI environment.
- The PostgreSQL admin username and password arguments were reversed
during "make upgrade".
- Added partial index to speed queries against the job table, and thus
to speed distribution.
- Updated slug RegExen. They were a bit too strict, and should be
better now, allowing dots, dashes, and underscores.
- Inactive alert types no longer trigger the sending of alerts.
- Fixed "element_data_id" parameter to
Bric::Biz::Asset::Business::Parts::Tile::Data to actually work.
For a complete list of the changes, see the changes
file.
ABOUT BRICOLAGE
Bricolage is a full-featured, enterprise-class content management and
publishing system. It offers a browser-based interface for ease-of use, a
full-fledged templating system with complete HTML::Mason and
HTML::Template
support for flexibility, and many other features. It operates in an
Apache/mod_perl environment, and uses the
PostgreSQL RDBMS for its
repository. A comprehensive, actively-developed open source CMS, Bricolage has
been hailed as "Most Impressive" in 2002 by eWeek.
Learn more about Bricolage and download it from the Bricolage home page.
Enjoy!
David
Friday October 03, 2003
07:18 PM
Bricolage 1.6.6 Released
I'm pleased to announce the release of Bricolage 1.6.6.
This maintenance release addresses a number issues discovered since
the release of version 1.6.5. Some of the more important changes
include:
- Added README.Solaris.
- When an asset is published or deployed directly from the asset
profile, it is now properly removed from the publish or deploy desk.
- Templates now display their output channel associations instead of
their element associations on desks. This seems to be more useful,
since the element association is usually obvious from the name.
- The category URI is now displayed for assets on desks, rather than
the name. This is consistent with the display of the category
elsewhere.
- Elements to which no subelements can be added will no longer display
an empty select list and "Add Element" button.
- Bug fix when deploying to multiple output channels. If the output
channel IDs matched each other partly, it could cause a file to be
removed after it just had been uploaded.
- Users with CREATE access to a start desk can once again create
stories on that desk even when they don't have CREATE access to "All
Stories."
- Each upgrade script is now run within the confines of a single
database transaction. If any database changes within an upgrade
script encounter an error, all of the changes in that script will be
rolled back.
- An upgrade script failure will now cause "make upgrade" to halt
installation so that any issues are immediately identified and
correctable.
For a complete list of the changes, see the changes
file.
ABOUT BRICOLAGE
Bricolage is a full-featured, enterprise-class content management and
publishing system. It offers a browser-based interface for ease-of use, a
full-fledged templating system with complete HTML::Mason and
HTML::Template
support for flexibility, and many other features. It operates in an
Apache/mod_perl environment, and uses the
PostgreSQL RDBMS for its
repository. A comprehensive, actively-developed open source CMS, Bricolage has
been hailed as "Most Impressive" in 2002 by eWeek.
Learn more about Bricolage and download it from the Bricolage home page.
Enjoy!
David
Wednesday September 10, 2003
08:19 PM
Bricolage 1.6.5 Released
I'm pleased to announce announce the release of Bricolage 1.6.5.
This maintenance release addresses a number issues discovered since
the release of version 1.6.4. Some of the more important changes
include:
- Previewing stories with related media that have no associated file
no longer causes an error.
- Switched to using
DBI->connect_cached() from using our own
database connection caching. This change does bump up the minimum
required version of DBI to 1.18, though the latest version is always
recommended. It's also the right thing to do. - Fixed issue that could cause Bric::Util::DBI to create inconsistent
transaction states.
- Passing an undef via the
workflow__id parameters to
the list() method of Story, Media, or Template really
does again cause Bricolage to correctly return only those assets that
are not in workflow. It wasn't as fixed in 1.6.3 as I had
thought. - Vastly improved the speed of the query that lists events, and added
an index to help it along, as well.
- The FTP mover now properly deletes files rather than erroring out.
- Users without EDIT access to the start desk in a workflow can no
longer create assets in that workflow. Nor can they check out assets
from the library, as there's no start desk for them to check them in
to. But they can still check them out from other desks that they
have EDIT access to.
- Time zone issues have been fixed to be more portable. Some platforms
that experienced Bricolage unexpectedly shifting cover dates and
other dates and times by several hours should no longer see this
problem.
- Adding a new element type with the same name as an existing or
deleted element type no longer causes an SQL error.
For a complete list of the changes, see the changes file.
ABOUT BRICOLAGE
Bricolage is a full-featured, enterprise-class content management and
publishing system. It offers a browser-based interface for ease-of use, a
full-fledged templating system with complete HTML::Mason and
HTML::Template
support for flexibility, and many other features. It operates in an
Apache/mod_perl environment, and uses the
PostgreSQL RDBMS for its
repository. A comprehensive, actively-developed open source CMS, Bricolage has
been hailed as "Most Impressive" in 2002 by eWeek.
Learn more about Bricolage and download it from the Bricolage home page.
Enjoy!
David