Archive for the ‘written in English’ Category

Comparator

Sunday, July 24th, 2005

Comparator is a small Plone product I recently hacked for my pleasure. It’s called comparator until it gets a nicer name, if ever. I distribute it here under the GNU General Public License. It allows users to select any existing content type (object class) and to calculate a personnalized comparison of the instances of this class. For example, if you choose to compare “News Items”, then you select the news items properties you want to base your comparison upon (title, creation date, description, …). You give marks to any value of these properties (somewhat a tedious process at the moment but much room for improvement in the future, there). Comparator then let’s you give relative weights to these properties so that the given marks are processed and the compared instances are ranked globally.

It’s a kind of basic block for building a comparison framework, for building Plone applications that compare stuff (any kind of stuff that exists within your portal, including semantically agregated stuff). Let’s say that your Plone portal is full of descriptions of beers (with many details about all kinds of beers). Then adding a comparator to your portal will let your users give weights to every beer property and rank all the beers according to their personal tastes.

Comparator is based on Archetypes and was built from an UML diagram with ArchgenXML. Comparator fits well in my vision of semantic agregation. I hope you can see how. Comments welcome !

Daisy vs. Plone, feature fighting

Thursday, June 9th, 2005

A Gouri-friend of mine recently pointed me to Daisy, a “CMS wiki/structured/XML/faceted” stuff he said. I answered him it may be a nice product but not enough attractive for me at the moment to spend much time analyzing it. Nevertheless, as Gouri asked, let’s browse Daisy’s features and try to compare them with Plone equivalents (given that I never tried Daisy).

The Daisy project encompasses two major parts: a featureful document repository

Plone is based on an object-oriented repository (Zope’s ZODB) rather than a document oriented repository.

and a web-based, wiki-like frontend.

Plone has its own web-based fronted. Wiki features are provided with an additional product (Zwiki).

If you have different frontend needs than those covered by the standard Daisy frontend, you can still benefit hugely from building upon its repository part.

Plone’s frontend is easily customizable either with your own CSS, with inherting from existing ZPT skins or with a WYSIWYG skin module such as CPSSkin.

Daisy is a Java-based application

Plone is Python-based.

, and is based on the work of many valuable open source packages, without which Daisy would not have been possible. All third-party libraries or products we redistribute are unmodified (unforked) copies.

Same for Plone. Daisy seems to be based on Cocoon. Plone is based on Zope.

Some of the main features of the document repository are:
* Storage and retrieval of documents.

Documents are one of the numerous object classes available in Plone. The basic object in Plone is… an object that is not fully extensible by itself unless it was designed to be so. Plone content types are more user-oriented than generic documents (they implement specialized behaviours such as security rules, workflows, displays, …). They will be made very extensible when the next versions of the “Archetypes” underlying layer is released (they include through-the-web schema management feature that allow web users to extend what any existing content type is).

* Documents can consists of multiple content parts and fields, document types define what parts and fields a document should have.

Plone’s perspective is different because of its object orientation. Another Zope product called Silva is more similar to Daisy’s document orientation.

Fields can be of different data types (string, date, decimal, boolean, …) and can have a list of values to choose from.

Same for Archetypes based content types in Plone.

Parts can contain arbitrary binary data, but the document type can limit the allowed mime types. So a document (or more correctly a part of a document) could contain XML, an image, a PDF document, … Part upload and download is handled in a streaming manner, so the size of parts is only limitted by the available space on your filesystem (and for uploading, a configurable upload limit).

I imagine that Daisy allows the upload and download of documents having any structure, with no constraint. In Plone, you are constrained by the object model of your content types. As said above this model can be extended at run time (schema management) but at the moment, the usual way to do is to define your model at design time and then comply with it at run time. At run time (even without schema management), you can still add custom metadata or upload additional attached files if your content type supports attached files.

* Versioning of the content parts and fields. Each version can have a state of ‘published’ or ‘draft’. The most recent version which has the state published is the ‘live’ version, ie the version that is displayed by default (depends on the behaviour of the frontend application of course).

The default behaviour of Plone does not include real versioning but document workflows. It means that a given content can be in state ‘draft’ or ‘published’ and go from one state to another according to a pre-defined workflow (with security conditions, event triggering and so). But a given object has only one version by default.
But there are additional Plone product that make Plone support versioning. These products are to be merged into Plone future distribution because versioning has been a long awaited feature. Note that, at the moment, you can have several versions of a document to support multi-language sites (one version per language).

* Documents can be marked as ‘retired’, which makes them appear as deleted, they won’t show up unless explicitely requested. Documents can also be deleted permanently.

Plone’s workflow mechanism is much more advanced. A default workflow includes a similar retired state. But the admin can define new workflows and modify the default one, always referring to the user role. Plone’s security model is quite advanced and is the underlying layer of every Plone functionality.

* The repository doesn’t care much what kind of data is stored in its parts, but if it is “HTML-as-well-formed-XML”, some additional features are provided:
o link-extraction is performed, which allows to search for referers of a document.
o a summary (first 300 characters) is extracted to display in search results
o (these features could potentially be supported for other formats also)

There is no such thing in Plone. Maybe in Silva ? Plone’s reference engine allows you to define associations between objects. These associations are indexed by Plone’s search engine (“catalog”) and can be searched.

* all documents are stored in one “big bag”, there are no directories.

Physically, the ZODB repository can have many forms (RDBMS, …). The default ZODB repository is a single flat file that can get quite big : Data.fs

Each document is identified by a unique ID (an ever-increasing sequence number starting at 1), and has a name (which does not need to be unique).

Each object has an ID but it is not globally unique at the moment. It is unfortunately stored in a hierarchical structure (Zope’s tree). Some Zope/Plone developpers wished “Placeless content” to be implemented. But Daisy must still be superior to Plone in that field.

Hierarchical structure is provided by the frontend by the possibility to create hierarchical navigation trees.

Zope’s tree is the most important structure for objects in a Plone site. It is too much important. You can still create navigation trees with shortcuts. But in fact, the usual solution in order to have maximum flexibility in navigation trees is to use the “Topic” content type. Topics are folder-like object that contain a dynamic list of links to objects matching the Topic’s pre-defined query. Topic are like persistent searches displayed as folders. As a an example a Topic may display the list of all the “Photo”-typed objects that are in “draft” state in a specific part (tree branch) of the site, etc.

* Documents can be combined in so-called “collections”. Collections are sets of the documents. One document can belong to multiple collections, in other words, collections can overlap.

Topics too ? I regret that Plone does easily not offer a default way to display a whole set of objects in just one page. As an example, I would have enjoyed to display a “book” of all the contents in my Plone site as if it were just one single object (so that I can print it…) But there are some Plone additional products (extensions) that support similar functionalities. I often use “Content Panels” to build a page by defining its global layout (columns and lines) and by filling it with “views” from exisiting Plone objects (especially Topics). Content Panels mixed with Topics allow a high flexibility in your site. But this flexibility has some limits too.

* possibility to take exclusive locks on documents for a limitted or unlimitted time. Checking for concurrent modifications (optimistic locking) happens automatically.

See versioning above.

* documents are automatically full-text indexed (Jakarta Lucene based). Currently supports plain text, XML, PDF (through PDFBox), MS-Word, Excel and Powerpoint (through Jakarta POI), and OpenOffice Writer.

Same for Plone except that Plone’s search engine is not Lucene and I don’t know if Plone can read OpenOffice Writer documents. Note that you will require additional modules depending on your platform in order to read Microsoft files.

* repository data is stored in a relation database. Our main development happens on MySQL/InnoDB, but the provisions are there to add support for new databases, for example PostgreSQL support is now included.

Everything is in the ZODB. By default stored as a single file. But can also be stored in a relational database (but this is usually useless). You can also transparently mix several repositories in a same Plone instance. Furthermore, instead of having Plone directly writing in the ZODB’s file, you can configure Plone so that it goes through a ZEO client-server setup so that several Plone instances can share a common database (load balancing). Even better, there is a commercial product, ZRS, that allows you to transparently replicate ZODBs so that several Plone instances setup with ZEO can use several redundant ZODBs (no single point of failure).

The part content is stored in normal files on the file system (to offload the database). The usage of these familiar, open technologies, combined with the fact that the daisywiki frontend stores plain HTML, makes that your valuable content is easily accessible with minimal “vendor” lock-in.

Everything’s in the ZODB. This can be seen as a lock-in. But it is not really because 1/ the product is open source and you can script a full export with Python with minimal effort, 2/ there are default WebDAV + FTP services that can be combined with Plone’s Marshall extension (soon to be included in Plone’s default distribution) that allows you to output your content from your Plone site. Even better, you can also upload your structured semantic content with Marshall plus additional hacks as I mentioned somewhere else.

* a high-level, sql-like query language provides flexible querying without knowing the details of the underlying SQL database schema. The query language also allows to combine full-text (Lucene) and metadata (SQL) searches. Search results are filtered to only contain documents the user is allowed to access (see also access control). The content of parts (if HTML-as-well-formed-XML) can also be selected as part of a query, which is useful to retrieve eg the content of an “abstract” part of a set of documents.

No such thing in Plone as far as I know. You may have to Pythonize my friend… Except that Plone’s tree gives an URL to every object so that you can access any part of the site. But not with a granularity similar to Daisy’s supposed one. See silva for more document-orientation.

* Accesscontrol: instead of attaching an ACL to each individual document, there is a global ACL which allows to specify the access rules for sets of documents by selecting those documents based on expressions. This allows for example to define access control rules for all documents of a certain type, or for all documents in a certain collection.

Access control is based on Plone’s tree, with inheritance (similar to Windows security model in some way). I suppose Plone’s access control is more sophisticated and maintainable than Daisy’s one but it should require more investigation to explain why.

* The full functionality of the repository is available via an HTTP+XML protocol, thus providing language and platform independent access. The documentation of the HTTP interface includes examples on how the repository can be updated using command-line tools like wget and curl.

Unfortunately, Plone is not ReST enough at the moment. But there is some hope the situation will change with Zope 3 (Zope’s next major release that is coming soon). Note that Zope (so Plone) supports HTTP+XML/RPC as a generic web service protocol. But this is nothing near real ReSTful web services…

* A high-level, easy to use Java API, available both as an “in-JVM” implementation for embedded scenarios or services running in the daisy server VM, as well as an implementation that communicates transparently using the HTTP+XML protocol.

Say Python and XML/RPC here.

* For various repository events, such as document creation and update, events are broadcasted via JMS (currently we include OpenJMS). The content of the events are XML messages. Internally, this is used for updating the full-text index, notification-mail sending and clearing of remote caches. Logging all JMS events gives a full audit log of all updates that happened to the repository.

No such mechanism as far as I know. But Plone of course offers fully detailed audit logs of any of its events.

* Repository extensions can provide additional services, included are:
o a notification email sender (which also includes the management of the subscriptions), allowing subscribing to individual documents, collections of documents or all documents.

No such generic feature by default in Plone. You can add scripts to send notification in any workflow transition. But you need to write one or two lines of Python. And the management of subscriptions is not implemented by default. But folder-like object support RSS syndication so that you can agregate Plone’s new objects in your favorite news aggregator;

o a navigation tree management component and a publisher component, which plays hand-in-hand with our frontend (see further on)

I’ll see further on… :)

* A JMX console allows some monitoring and maintenance operations, such as optimization or rebuilding of the fulltext index, monitoring memory usage, document cache size, or database connection pool status.

You have several places to look at for this monitoring within Zope/Plone (no centralized monitoring). An additional Plone product helps in centralizing maintenance operations. Still some ground for progress here.

The “Daisywiki” frontend
The frontend is called the “Daisywiki” because, just like wikis, it provides a mixed browsing/editing environment with a low entry barrier. However, it also differs hugely from the original wikis, in that it uses wysiwyg editing, has a powerful navigation component, and inherits all the features of the underlying daisy repository such as different document types and powerful querying.

Well, then we can just say the same for Plone and rename its skins the Plonewiki frontend… Supports Wysiwyg editing too, with customizable navigation tree, etc.

* wysiwyg HTML editing
o supports recent Internet Explorer and Mozilla/Firefox (gecko) browsers, with fallback to a textarea on other browsers. The editor is customized version of HTMLArea (through plugins, not a fork).

Same for Plone (except it is not an extension of HTMLArea but of a similar product).

o We don’t allow for arbitrary HTML, but limit it to a small, structural subset of HTML, so that it’s future-safe, output medium independent, secure and easily transformable. It is possible to have special paragraph types such as ‘note’ or ‘warning’. The stored HTML is always well-formed XML, and nicely layed-out. Thanks to a powerful (server-side) cleanup engine, the stored HTML is exactly the same whether edited with IE or Mozilla, allowing to do source-based diffs.

No such validity control within Plone. In fact, the structure of a Plone document is always valid because it is managed by Plone according to a specific object model. But a given object may contain an HTML part (a document’s body as an example) that may not be valid. If your documents are to have a recurrent inner structure, then you are invited to make this structure an extension of an object class so that is no more handled as a document structure. See what I mean ?

o insertion of images by browsing the repository or upload of new images (images are also stored as documents in the repository, so can also be versioned, have metadata, access control, etc)

Same with Plone except for versioning. Note that Plone’s Photo content type support automatic server-side redimensioning of images.

o easy insertion document links by searching for a document

Sometimes yes, sometimes no. It depends on the type of link you are creating.

o a heartbeat keeps the session alive while editing

I don’t know how it works here.

o an exlusive lock is automatically taken on the document, with an expire time of 15 minutes, and the lock is automatically refreshed by the heartbeat

I never tried the Plone extension for versioning so I can’t say. I know that you can use the WebDAV interface to edit a Plone object with your favorite text processing package if you want. And I suppose this interface properly manages this kind of issues. But I never tried.

o editing screens are built dynamically for the document type of the document being edited.

Of course.

* Version overview page, from which the state of versions can be changed (between published and draft), and diffs can be requested. * Nice version diffs, including highlighting of actual changes in changed lines (ignoring re-wrapping).

You can easily move any object in its associated workflow (from one state to another, through transitions). But no versioning. Note that you can use Plone’s wiki extension and this extension supports supports diffs and some versioning features. But this is not available for any Plone content type.

* Support for includes, i.e. the inclusion of one document in the other (includes are handled recursively).

No.

* Support for embedding queries in pages.

You can use Topics (persistent queries). You can embed them in Content Panels.

* A hierarchical navigation tree manager. As many navigation trees as you want can be created.

One and only one navigation tree by default. But Topics can be nested. So you can have one main navigation tree plus one or more alternatives with Topics (but these alternatives are limited for some reasons.).

Navigation trees are defined as XML and stored in the repository as documents, thus access control (for authoring them, read access is public), versioning etc applies. One navigation tree can import another one. The nodes in the navigation tree can be listed explicitely, but also dynamically inserted using queries. When a navigation tree is generated, the nodes are filtered according to the access control rules for the requesting user. Navigation trees can be requested in “full” or “contextualized”, this last one meaning that only the nodes going to a certain document are expanded. The navigtion tree manager produces XML, the visual rendering is up to XSL stylesheets.

This is nice. Plone can not do that easily. But what Plone can do is still done with respect to its security model and access control, of course.

* A navigation tree editor widget allows easy editing of the navigation trees without knowledge of XML. The navigation tree editor works entirely client-side (Mozilla/Firefox and Internet Explorer), without annoying server-side roundtrips to move nodes around, and full undo support.

Yummy.

* Powerful document-publishing engine, supporting:
o processing of includes (works recursive, with detection of recursive includes)
o processing of embedded queries
o document type specific styling (XSLT-based), also works nicely combined with includes, i.e. each included document will be styled with its own stylesheet depending on its document type.

OK

* PDF publishing (using Apache FOP), with all the same features as the HTML publishing, thus also document type specific styling.

Plone document-like content type offer PDF views too.

* search pages:
o fulltext search
o searching using Daisy’s query language
o display of referers (“incoming links”)

Fulltext search is available. No query language for the user. Display of refers is only available for content type that are either wiki pages or have been given the ability to include references from other objects.

* Multiple-site support, allows to have multiple perspectives on top of the same daisy repository. Each site can have a different navigation tree, and is associated with a default collection. Newly created documents are automatically added to this default collection, and searches are limited to this default collection (unless requested otherwise).

It might be possible with Plone but I am not sure when this would be useful.

* XSLT-based skinning, with resuable ‘common’ stylesheets (in most cases you’ll only need to adjust one ‘layout’ xslt, unless you want to customise heavily). Skins are configurable on a per-site basis.

Plone’s skins are using the Zope Page Templates technology. This is a very nice and simple HTML templating technology. Plone’s skins make an extensive use of CSS and in fact most of the layout and look-and-feel of a site is now in CSS objects. These skins are managed as objects, with inheritance, overriding of skins and other sophisticated mechanism to configure them.

* User self-registration (with the possibility to configure which roles are assigned to users after self-registration) and password reminder.

Same is available from Plone.

* Comments can be added to documents.

Available too.

* Internationalization: the whole front-end is localizable through resource bundles.

Idem.

* Management pages for managing:
o the repository schema (the document types)
o the users
o the collections
o access control

Idem.

* The frontend currently doesn’t perform any caching, all pages are published dynamically, since this also depends on the access rights of the current user. For publishing of high-trafic, public (ie all public access as the same user), read-only sites, it is probably best to develop a custom publishing application.

Zope includes caching mechanisms that take care of access rights. For very high-trafic public sites, a Squid frontend is usually recommended.

* Built on top of Apache Cocoon (an XML-oriented web publishing and application framework), using Cocoon Forms, Apples (for stateful flow scenarios), and the repository client API.

By default, Zope uses its own embedded web server. But the usual setup for production-grade sites is to put an Apache reverse-proxy in front of it.

My conclusion : Daisy looks like a nice product when you have a very document-oriented project, with complex documents with structures varying much from documents to documents ; its equivalent in Zope’s world would be Silva. But Plone is much more appropriate for everyday CMS sites. Its object-orientation offers both a great flexibility for the developer and more ease of use for Joe-six-pack webmaster. Plone still lacks some important technical features for its future, namely ReSTful web service interfaces, plus placeless content paradigm. Versioning is expected soon.

This article was written in just one raw, late at night and with no re-reading reviewed once thanks to Gouri. It may be wrong or badly lacking information on some points. So your comments are much welcome !

From OWL to Plone

Thursday, April 28th, 2005

I found a working path to transform an OWL ontology into a working Plone content-type. Here is my recipe :

  1. Choose any existing OWL ontology
  2. With Protege equipped with its OWL plugin, create a new project from your OWL file.
  3. Still within Protege, with the help of its UML plugin, convert your OWL-Protege project into a UML classes project. You get an XMI file.
  4. Load this XMI file into an UML project with Poseidon. Save this project under the .zuml Poseidon format.
  5. From poseidon, export your classes a new xmi file. It will be Plone-friendly.
  6. With a text editor, delete some accentuated characters that Poseidon might have added to your file (for example, the Frenchy Poseidon adds a badly accentuated “Modele sans titre” attribute into your XMI) because the next step won’t appreciate them
  7. python Archgenxml.py -o YourProduct yourprojectfile.xmi turns your XMI file into a valid Plone product. Requires Plone and Archetypes (see doc) latest stable version plus ArchgenXML head from the subversion repository.
  8. Launch your Plone instance and install YourProduct as a new product from your Plone control panel. Enjoy YourProduct !
  9. eventually populate it with an appropriate marshaller.

Now you are not far from using Plone as a semantic aggregator.

The CMS pseudo-stock market

Wednesday, March 23rd, 2005

The Drupal people produced insightful stock-market-like statistics about the popularity of open source CMS packages (via the precious Amphi-Gouri). But their analysis mixes content management systems (Drupal, Plone) with blog engines (Wordpress) and bulletin boards (phpBB). Anyway, it shows that :

  • The popularity of most Free and Open Source CMS tools is in an upward trend.
  • Bulletin boards like phpBB is the most popular category, maybe the most mature and phpBB is the strong leader in this category
  • In the CMS category, Mambo, Xoops, Drupal and Plone are direct competitors ; Mambo is ahead in terms of popularity, Plone is behind its PHP competitors which certainly benefit from the popularity of PHP compared to Python; PHP-Nuke and PostNuke are quickly loosing some ground.
  • Wordpress is the most dynamic open source blog engine in terms of growth of popularity ; its community is exploding

My conclusion :

  • if you want an open source bulletin board/community forum, then choose phpBB with no hesitation
  • if you want a real content management system and are not religiously opposed to Python, then choose Plone, else stick with PHP and go Mambo (or Xoops ?)
  • if you want an open source blog engine, then enjoy Wordpress

If feel like producing this kind of statistical analysis about the dynamics of open source communities is extremely valuable for organization and people considering several open source options (cf. the activity percentile indicated on sourceforge projets as an example). I would tend to say that the strength of an open source community, measured in term of growth and size, is the one most important criteria to rely on when choosing an open source product.

Nowadays, the (real) stock market relies strongly on rating agencies. There must be a room (and thus a business opportunity) for an open source rating agency that would produce strong evidences about the relative strength of project communities.

What do you think ?

Zemantic: a Zope Semantic Web Catalog

Monday, February 14th, 2005

Zemantic is an RDF module for Zope (read its announcement). From what I read (not tested by me yet), it implements services similar to zope catalogs and enables universal management of references (such as the Archetypes reference engine but in a more sustainable way). It is based on RDFLib, similarly to ROPE.

I feel enthusiastic about this product since it sounds to me like a good future-proof solution for the management of metadata, references and structured data within content management systems and portals. Plus Zemantic would sit well in my vision of Plone as a semantic aggregator.

The World(changing) Bank?

Sunday, December 28th, 2003

worldchanging.com rapporte que la Banque Mondiale dédie un programme spécifique, “The Development Marketplace”, au financement de “petits” projets innovants pour le développement des pays du Tiers Monde.

This is a test about Wordpress

Sunday, December 14th, 2003

This is a test related to my post on Wordpress support forum (see below). You can ignore this message or read the comments in order to follow the results of this test.

Ampersands escaped in URLs within comments

On my blog (http://sig.levillage.org/) equipped with Wordpress 0.72, when someone posts a comment containing an HTML link with an URL containing an ampersand, this URL gets mangled… Some characters (like the &) seem to be systematically escaped. IMO, this is a bug (not a feature). The escaping function should not escape ampersands in URL when the URL is a value of a tag attribute. What do you think ? Did I miss something ? Is there currently a workaroung ?

– Sig

http://sig.levillage.org

Zope and Plone learning roadmap

Thursday, December 11th, 2003

It is sometimes said that the art of mastering Zope and Plone is difficult. It has also been said that learning Zope Zen involves a steep learning curve. I have also read many newbies (like me) asking for information about the first steps to go through in order to smoothly get into Zope development. “Don’t start learning Zope before you know Python !”, “No need for mastering in TAL, TALES and METAL for building Plone user interfaces, you’d rather learn advanced CSS techniques”, or the like… So I wonder : what is the recommended roadmap for learning Zope and Plone ? how to make the global learning curve smoother or just a little bit more visible and manageable ? So the diagram below is my guess on the ideal learning roadmap for a would-be master in Zope+Plone :
The ideal roadmap for learning Zope and Plone.

Innovation technologique au service du développement durable (suite)

Wednesday, December 10th, 2003

J’avais signalé ici ce rapport sur la place de l’innovation technologique dans les politiques de développement durable des entreprises. J’en retiens également les quelques points particuliers suivants :

  • La gestion de l’environnement est un argument en faveur des stratégies d’entreprises visant à développer des offres de services autour d’offres de produits existantes.
  • La communication des entreprises en matière de développement durable relève soit d’une activité de marketing innovante lorsqu’elle est proactive soit plutôt d’une activité de lobbying lorsqu’il s’agit de défendre certains intérêts économiques de l’entreprise.
  • Pour une entreprise, parmi les motivations à innover, le développement durable ne figure pas parmi les priorités.
  • Les dirigeants d’entreprise peuvent difficilement convaincre les actionnaires de la rentabilité d’une stratégie de développement durable sans une intervention publique qui aille explicitement dans ce sens.
  • Les stratégies d’innovation observées diffèrent selon la taille de l’entreprise : “une grande entreprise pourra définir une stratégie à long terme, mobiliser ses ressources en R&D, améliorer sa communication interne et externe et pratiquer le lobbying tandis qu’une petite enteprise préfèrera investir dans des innovations plus pointues ou des niches de marché et mobiliser la créativité de l’ensemble du personnel”.
  • une technologie au service du développement durable doit à la fois être propre (ne pas porter atteinte à l’environnement) et sobre (consommer peu de ressources).

rdflib and ROPE

Thursday, December 4th, 2003

I just blog this Bob DuCharme article so that I can remember where practical information about rdflib can be read.
By the way, I have tested the very pre-pre-release of Reinout’s ROPE (see ROPE = Rdflib + zOPE). And I could install it on a Zope 2.7.0b3 fresh install. It was quite easy to install it. But, as Reinout said, it is still a very early release and, as you can see on the attached screenshot, there is much work to be done before it is really usable. This screenshot is just a hint for Reinout : if you add several namespaces into a rdfstore (shouldn’t you name it a “rope” ?), they end up displayed one next to another instead of being options of the same HTML select widget. Anyway, I am looking forward further releases of Rope.

Economie sociale et ISR

Tuesday, December 2nd, 2003

Les acteurs de l’ économie sociale (coopératives, mutuelles et associations) seraient des champions de l’Investissement Socialement Responsable. Autre idée : la principale faiblesse de l’économie sociale est la difficulté à prendre des risques car les investisseurs ne sont pas rémunérés pour leur prise de risque ; d’où le besoin de sociétés de capital risque spécialisées dans les entreprises de l’économie sociale.

Innovation technologique au service du développement durable

Thursday, November 27th, 2003

Une technologie innovante n’est pas en soi favorable ou défavorable au développement durable. Par contre, le processus d’innovation peut l’être davantage. La plupart des technologies qui sont adoptées pour renforcer une démarche de développement durable dans l’entreprise sont des technologies dites “additives” : elles s’ajoutent à un procédé existant pour en limiter les effets néfastes sur l’environnement ou d’économiser la consommation de ressources (eau, énergie, …) par exemple. Cependant, les entreprises communiquant le plus sur le développement durable privilégient la promotion des technologies intégrées au cycle de vie de leurs procédés, i.e. intervenant dès l’amont, lors de la conception d’un produit.

Modèle économique de la GPL

Sunday, November 9th, 2003

Ce mémoire présente la dynamique de coopération qui a fait le succès du modèle open source incarné par la licence de distribution logicielle GPL. Comme l’indique ce mémoire, l’auteur d’un ouvrage distribué sous licence GPL s’interdit par le biais de cette licence de disposer d’une rente (retour sur investissement) lié au capital que représente l’ouvrage qu’il a créé. Le droit de la propriété intellectuelle, dont la finalité est l’accroissement de l’innovation intellectuelle, serait sensé établir un équilibre entre la motivation économique des auteurs et celle des consommateurs. Trop de protection des auteurs et ceux-ci disposeront de rentes élevées mais qui, par effet pervers, rendront l’innovation suivante plus difficile ou moins motivante économiquement. Trop peu de protection et les auteurs perdront leur motivation économique à innover. La licence GPL, s’inscrivant dans le cadre du droit de la propriété intellectuelle, implémente des règles de coopération qui pourraient permettre de retrouver l’équilibre nécessaire au développement de l’innovation.

La coopération, nouvelles approches.

Sunday, November 9th, 2003

Michel Cornu a publié un document sur les dynamiques relatives au travail collaboratif. Il y introduit des “lois de la coopération” :

Nous cherchons à favoriser l’émergence de comportements de coopération et le développement de résultats collectifs. Nous avons cherché pour cela à identifier plusieurs lois qui permettent d’agir sur l’environnement pour le rendre plus favorable à la réussite du projet.
Pour réaliser ces 3 actions sur l’environnement, le porteur peut s’appuyer sur des lois qui lui facilitent son travail. Ces quelques lois simples mais fondamentales sont décrites en détail dans les chapitres suivants.
La réconciliation de l’intérêt individuel et collectif est favorisée par :
* Un environnement d’abondance qui provoque des mécanismes de contrepartie collectifs (nous verrons que l’abondance est plus fréquente qu’on ne le croit généralement dans certains domaines).
* La mise en place d’une communauté qui multiplie les interactions multiples entre les membres.
* Une nouvelle façon d’évaluer les résultats a posteriori qui implique l’ensemble de la communauté.
Pour multiplier les possibilités sans qu’aucune ne soit critique il faut :
* Réduire les besoins de départ.
* Minimiser au maximum les tâches critiques pour pouvoir en garder la maîtrise.
* Avoir du temps devant soit pour maximiser les opportunités.
Les personnes passent à l’acte grâce à :
* La motivation par la reconnaissance, le plaisir et l’apprentissage.
* La minimisation des risques perçus.
* L’abaissement du seuil du passage à l’acte par la simplicité et la réactivité.
La coopération est obtenue en agissant sur l’environnement plutôt que par la contrainte des personnes.
Le monde actuel en perpétuel mouvement aide à façonner l’environnement pour arriver aux trois conditions qui facilitent la coopération :
* Réconcilier l’intérêt individuel et collectif
* Multiplier les possibilités sans qu’aucune ne soit critique
* Faciliter le passage à l’acte

Il introduit une nouvelle notion de la propriété :

La notion de propriété ne disparaît pas pour autant. Par exemple dans le développement de logiciels libres, assez souvent, une personne détient le droit d’intégrer les modifications proposées par tous. Raymond l’appelle le ” dictateur bienveillant. ” Mais tout le monde peut venir utiliser, copier ou redistribuer librement le logiciel produit collectivement. Tout le monde peut circuler librement sur le territoire du propriétaire et c’est justement cela qui lui donne de la valeur.

Et énonce les règles nécessaires au bon fonctionnement d’une économie du don :

Une économie du don émerge lorsque les biens communs sont abondants.
Celle-ci implique de nouvelles notions de propriété et d’économie.
Les échanges de bien immatériels conduisent normalement à une multiplication de la valeur et à leur abondance. Il est souvent possible de faire des choix qui poussent vers la pénurie ou vers l’abondance.
Il existe des règles du don qui si elles ne sont pas respectées conduisent à des déviations :
1. L’abondance doit être préservée et bien répartie
pour éviter le retour à une économie de la consommation
2. L’évaluation doit être globale et décentralisée
pour ne pas qu’un don particulier serve à écraser l’autre
3. La contrepartie ne doit pas être demandée à celui qui reçoit
pour éviter les dettes…

N’hésitez pas à lire et relire son document pour en savoir plus.

Ceci m’inspire quelques motivations qui pourraient amener des grands groupes privés à open sourcer (adopter une stratégie s’appuyant sur la redistribution en opensource) leurs développements informatiques internes lorsque ceux-ci ne sont pas stratégiques (hors du coeur de métier) :

  • sauvegarder la connaissance de l’application : distribuer la connaissance pour pouvoir en bénéficier ultérieurement sous la forme de services de maintenance
  • disposer d’une maintenance corrective à faible coût : si d’autres acteurs adoptent le code distribué ET si ils redistribuent leurs modifications (y compris leurs corrections), cela offre un retour sur investissement au distributeur initial
  • disposer d’une maintenance évolutive à faible coût : pour les mêmes raisons que ci-dessus
  • améliorer son image auprès d’une communauté d’informaticiens et, indirectement, auprès de la presse informatique
  • renforcer des relations de collaboration gagnant-gagnant avec d’autres groupes similaires
  • influencer l’organisation d’un marché de fournisseurs : en orientant les distributions de code, le Groupe informe les fournisseurs des attentes réelles des utilisateurs
  • minimiser les risques des projets informatiques internes en soumettant certains de leurs aspects au regard critique de la communauté d’utilisateurs/développeurs du code distribué

OSBL = OVNI ?

Thursday, October 16th, 2003

Les O.S.B.L. sont les “Organismes Sans But Lucratif”. Il s’agit d’une dénomination pour désigner les associations, les fédérations, les fondations, mais aussi moults autres types d’entités juridiques (ou non) qui se développent en pagaille pour constituer le “tiers secteur”, le “secteur de l’économie solidaire” et autre “secteur des ONG”. Ernst & Young essaie, dans une étude, de faire le point sur la situation et l’avenir des OSBL. On y évoque le caractère de “laboratoire d’innovations sociales” de ce secteur lié à la notion “d’utilité sociale” ainsi qu’un mode de fonctionnement marqué par l’engagement dans l’action au détriment de la réflexion. D’après cette étude, les principales sources de financement des OSBL sont l’Etat et les collectivités locales, par le biais de conventions de financement pluriannuelles ou de conventions d’objectifs. Le mécénat d’entreprise est beaucoup moins présent. Le secteur est marqué par une situation de forte concurrence entre les associations (“qui va décrocher cette subvention ?”).
La stratégie est du ressort des organes statutaires (conseil d’administration ou assemblée générale) mais elle s’apparente plus à un outil de communication (pacte, charte, …) qu’à une véritable stratégie. Le sentiment des dirigeants interrogés est celui d’une grande incertitude sur l’avenir de leur OSBL. Les axes tactiques plébiscitées sont : le recrutement permanent de bénévoles, la qualification des personnels salariés, la recherche de locaux et d’équipements informatiques et la recherche de davantage de subventions. Les nouvelles technologies sont rarement identifiées comme un levier d’efficacité et de changement mis à part, parfois, la mise en place de la messagerie électronique et, éventuellement, l’accès à l’information interne. L’innovation organisationnelle ou la recherche de nouveaux modes de financement ne sont pas des options sérieusement envisagées.

ROPE = Rdflib + zOPE

Friday, September 12th, 2003

He is doing it : trying to tie together Zope and the magic of RDF triples, with the help of a nice ROPE. Go for it, Reinout !

Plone-ing for the semantic web

Monday, August 18th, 2003

Here is a little set of inconsistent slides about the future (Semantic Web) and the present (Plone) and how you can tie one with another. In a few words : there seems to be need for a universal model for knowledge/RDF caches ; the production/transformation of knowledge and content should go through a workflow ; Plone should ease the implementation of such a workflow. It’s all about some link between knowledge management and content management.
These slides are displayed below but are also available as a Powerpoint presentation.




A hope for Zope ? Un espoir pour Zope ?

Monday, August 11th, 2003

Beside J2EE and .Net is there a corporate hope for Zope ? I started some discussions on this topic in some zopish places : comp.lang.python,
Zopera (the French Zope community website) ; see also this other Zopera thread. The answers I collected don’t make me very optimistic about the near-term future of Zope as a mainstream web technological framework for big companies. Do you think there is a hope for Zope in Fortune XXXX companies ?

A côté de J2EE et .Net y a-t-il un avenir corporate pour Zope ? J’ai lancé quelques discussions à ce
sujet dans quelques endroits zopesques : comp.lang.python,
Zopera (un site de la communauté Zope française) ; voir aussi cette autre discussion sur Zopera. Les réponses que j’ai collecté ne me rendent pas très optimiste quant à la
probabilité d’une popularisation prochaine de Zope en tant que technologie Web pour les grandes entreprises. Pensez-vous qu’il y aura une place pour Zope dans les entreprises du CAC 40 ?

Fresh news aggregated with Plone

Sunday, June 29th, 2003

Here is my kind of a HOW-TO documentation if you want to setup a portal
aggregating news from remote web sites (by the way of RDF/RSS
syndication or by the way of search engines “screen scraping”). Want
your own news aggregator and portal, hey ?
I will use the following products : Plone + ZEO + CMFNewsFeed +
CMFWebAgent. Personnally, I installed them on a Windows 2000 platform.
And I have to say that this installation process is rather long and
tricky… I would welcome a Plone distribution that would include the
right version of ZEO and the configuration of Plone as a ZEO client. It
should also include the XML library needed for CMFNewsFeed.

  1. Download everything you will need
    1. Download Plone 1.0.1 from http://prdownloads.sourceforge.net/plone/Plone-1.0.1.exe?download
    2. Download ZEO in its latest CVS version from within the ZODB
      3.3.1 CVS at
      http://cvs.zope.org/ZEO/ZEO/ZEO.tar.gz?tarball=1&only_with_tag=ZODB3-3_1-branch (because ZEO 2.0 cannot run with Zope 2.6.x which is included
      in Plone 1.0.1)
    3. Download CMFNewsFeed 1.1 and CMFWebAgent 1.0 from
      http://sourceforge.net/projects/collective
    4. Download the PyXML library, version 0.8.1 as a tar.gz file at
      http://sourceforge.net/project/showfiles.php?group_id=6473 (Note that the 0.8.1 exe versions are specific either to Python 2.1 or to Python 2.2
    5. Download my plone_conf.zip file which includes some config files
      I gathered mainly from CMFNewsFeed distributions I suppose.
  2. Install, unzip and move everything to its right place
    1. Install Plone to C:\Plone (do not ask Plone to start
      automatically and do not start it manually either)
    2. Add C:\Plone\Python to your environment variable PATH if Plone
      installer did not do it
    3. Unzip ZEO to C:\Plone\ZEO
    4. Unzip CMFNewsFeed to C:\Plone\CMFNewsFeed-r1_1 which you then
      rename to C:\Plone\CMFNewsFeed for more ease
    5. Unzip CMFWebAgent to C:\Plone\CMFWebAgent-r0_1 which you then
      rename to C:\Plone\CMFWebAgent for more ease
    6. Read C:\Plone\ZEO\docs\ZopeREADME.txt
    7. Move C:\Plone\ZEO\ZEO to C:\Plone\Zope\lib\python\ZEO
    8. Unzip PyXML-0.8.1.tar.gz into C:\Plone\PyXML-0.8.1
    9. Read C:\Plone\PyXML-0.8.1\README
    10. Within a commandline, go to C:\Plone\PyXML-0.8.1 and do a
      “python setup.py build”. You will run into some erros, but that’s not
      that important for our purpose
    11. Move all the files and directories included in
      C:\Plone\PyXML-0.8.1\build\lib.win32-2.1\_xmlplus to
      C:\Plone\Python\lib\xml, replacing every existing file (I know it must
      be a very dirty way to install this but I don’t know an easy way to do
      it better since I did not want to install a standalone python
      distribution outside Plone)
    12. Unzip plone_conf.zip file to C:\
  3. Startup ZEO and Plone
    1. Execute C:\Plone\1.start_zeo.bat
    2. Wait a few seconds (or more…) and check
      C:\Plone\Data\var\ZEO_Server.log to see if ZEO properly started (you
      should see several lines explaining that ZEO created a StorageServer,
      and so on)
    3. Set Plone’s emergency user with the Windows “Plone
      controller”
    4. Execute C:\Plone\2.start_plone.bat
    5. Wait a few seconds (or more…) and check
      C:\Plone\Data\var\debug.log to see if Zope (Plone) properly
      started
    6. Bring your browser to http://localhost then to
      http://localhost:8080/manage to see if Plone works properly and you can
      log into Plone management interface as your emergency user. It should
      work (well, it works for me…).
  4. Setup and start CMFNewsFeed as a ZEO client
    1. Go to http://localhost and register as a new user called
      “newsfeed” : this will be the username CMFNewsfeed uses for retrieving
      content from the Net and posting it into Plone.
    2. Log into http://localhost:8080/manage with your emergency user
      and give “newsfeed” the “Reviewer” role (go into Plone/acl_users, click
      on newsfeed and give it the Reviewer role). I suppose newsfeed should
      still keep its “Member” role.
    3. Open C:\Plone\Data\getnews.conf and set the member_name variable
      as ‘newsfeed’ (the default value is ‘rssfeeder’)
    4. Set a new RSS source as follow : go to http://localhost and
      login as ‘newsfeed’, click on the “my folder” link (in the navigation
      bar), ; then create a new folder : you select Folder in the list box
      and click on the “add a new element” button and fill in the form
      (“my_slashdot_source” as id/name and “My Slashdot RSS source” as
      title), validate. Then create a link into this new folder. It should be
      named ‘RDF’ (mandatory), it could be titled ‘the Slashdot RSS link’ and
      its URL points to the RSS file you want to be retrieved
      (http://slashdot.org/slashdot.rdf).
    5. Hack CMFNewsFeed to adapt it to Plone : open
      C:\Plone\CMFNewsFeed\CMFFeedApp.py and replace ‘Portal Folder’ with
      ‘Plone Folder’. Still in CMFFeedApp.py, find the line containing
      “_edit” and, just below it, comment out the “description=description,”
      line then add a “new_link.description = description” line below the
      “new_link.title = title”
    6. Open a commandline and get to C:\Plone\Data then execute this :
      “python C:\Plone\CMFNewsFeed\getnews.py” (or just run the 3rd .bat file I prepared in my plone_conf.zip file
    7. You should find your new news items under the “my_slashdot_source” folder. If they don’t display (but the getnews.py command line affirmed they were retrieved), it may be a ZEO cache issue. Quick and bad fix for this is restarting your plone. But, of course, you may have to fix your zope.conf file in order to avoid this kind of issue. For the moment, I don’t know how to fix that. I’ll try later.
    8. Schedule a ‘cmd.exe “C:\Plone\Python\python C:\Plone\CMFNewsFeed\getnews.py”‘ to run once a day (never run it more frequently than 30 minutes or you may be banned by the news sources) so that your news are fresh everyday. You may use a Windows version of cron to do this.
  5. Setup and start CMFWebAgent as a ZEO client
    1. OK. You are a big boy/girl now. So try and follow similar steps to make CMFWebAgent run. You may have to fix some CMFWebAgent search engines scripts since their web interface may have changed since CMFWebAgent (and this doc) were released. Dirty hacks on sight…
  6. Last but not least : please drop a comment here to tell me if this works for you, how hard it was to setup and so on… Or maybe you know of a better way to make these damned CMFstuffagents work !

Propriété intellectuelle ?

Thursday, February 6th, 2003

The New Economist du 25 janvier publie un article sur les problématiques de propriété intellectuelle dans le cadre de l’Internet. Cet article rappelle que la vocation du droit d’auteur a été d’établir un équilibre entre la garantie d’un accès public aux flux des idées et l’incitation à la création et la distribution de travaux intellectuels par la concession de monopoles économiques temporaires et limités sur l’exploitation de ces travaux. A l’heure de l’Internet, cet équilibre semble être rompu : les industriels du contenu prétendent être spoliés de leur propriété (intellectuelle) et les défenseurs des consommateurs et des libertés individuelles dénoncent l’asphyxie de créativité entraînée par le comportement des dits-industriels.
Pour rétablir le juste équilibre, The New Economist cite plusieurs suggestions de modifications substantielles du droit d’auteur :

  • abandonner toute velléité de contrôle des copies de contenu et accorder, par la loi, aux créateurs de contenu, un droit exclusif pour l’exploitation commerciale de leurs travaux ; mais cette option pourrait entraîner de nombreux litiges portant sur la définition du caractère commercial d’une exploitation de travaux intellectuels et sur le caractère exclusif de ce droit
  • garantir la gratuité de l’accès à tout contenu mais taxer l’accès à l’Internet et aux équipements électroniques, reverser cette taxe aux distributeurs de contenus et ajuster le montant de cette taxe à une évaluation globale de la consommation de ces contenus ; mais cette option impliquerait des mesures gouvernementales très importantes, l’impossibilité d’une différenciation des distributeurs par les prix et, surtout, une taxation importante des équipements qui rendent possibles la révolution numérique
  • l’obligation pour les auteurs de déposer leur demande de droit d’auteur sur un nouveau contenu, de renouveler cette demande tous les cinq ans avec une limite du nombre de renouvellements et l’obligation d’exploiter ce droit par une distribution commerciale (faute de quoi il tombe dans le domaine public) ; cette option semble la plus réaliste, même si elle implique également une forte intervention des Etats, et est émise par un professeur de droit de l’université de Stanford, Mr Lessig.