Archive for the ‘written in English’ Category

Altruistic stock options

Monday, February 9th, 2009

As far as I understand the concept of “altruistic capital“, the firm practicing altruistic capital donates a percentage of its capital to a nonprofit organization and commits to keeping on donating more shares when the number of shares increasees, so that the percentage of donated shares remains constant (it is called the “altruistic index” if I remember well).

Here is my “altruistic stock options” variation on this theme. Since I am almost a newbie in entrepreneurship and altruistic capital and since I don’t master the arcanes (and vocabulary) of finances, please someone tell me if this makes sense and what you think :

Instead of donating the shares to the nonprofit, the nonprofit has to buy them.

At first, let’s say 10% of the shares are sold to the nonprofit. Later the capital changes and 100% more shares are about to be created (the number of shares is to double). Because of its commitment to my variation on the altruistic capital theme, the nonprofit then receives the exclusive and time-unlimited right to buy the number of shares it needs in order to get back to owning 10% of the capital, at the price of these shares when they are created. It means that once it buys these shares, the nonprofit will still own 10% of the capital : 5% bought at first and 5% bought after more shares where created. Unless the nonprofit buys this 5% more shares, the capital of the firm is only 195% what it was first and the nonprofit has earned the right to purchase 5% more shares at the price they have when the other 95% shares are created. This 5% more shares are sort of “altruistic stock options” which the nonprofit receives.

Pros of this variation :

  • it contributes to funding the altruistic firm : it’s more of a win-win cooperation between the firm and the nonprofit than a pure donation of capital to a nonprofit ; as a consequence, it may be a more seductive offer for entrepreneurs
  • it allows the nonprofit to invest in the company when and only when it wants to (for instance, when it wants to receive more dividends or when it wants to sell its shares - as long as this is allowed)
  • it gives an incentive to the nonprofit for investing as soon as it can (so that it can receive more dividends)
  • it may allow nonprofits to actively contribute to the development of social startups (small capital but both expected social impact and expected financial impact)

Cons :

  • Higher complexity
  • Lower generosity
  • Puts a barrier on the entry of poor nonprofits into the capital of altruistic firms (they have to be able to buy more shares even though they can wait as long as they want) unless they enter these firms when at startup stage, maybe the system can be bootstrapped by first having altruistic shares donated and further donations be replaced with altruistic options.

So, what do you think ?

How to get visual performance profiles from plone doctests ?

Thursday, February 5th, 2009

I am developping a couple of Plone 3.x products. They have some tests, including a huge functional doctest which takes a long time to run (about a couple of hours !) but covers some of my most interesting use cases. I wanted to use these tests in order to get some insights about possible performance bottlenecks and other optimization hot points in my code. The result of my effort was a very nice visual chart showing these bottlenecks and hotpoints.

[update: added another visualization package, see at the end of the post]

Here is how I had to proceed (note that I am more of a foolish and coward hacker than an expert and I decline any responsibility on the consequences of following my howto !) :

1. Give your python a suitable profiler

Plone 3.x requires zope 2.10 which in turn requires python 2.4. More recent versions are not supported AFAICS. Problem: python2.4 does not have a reliable performance profiling module. Its “hotshot” module is both slow (when loading statistics) and badly bugged : it crashes when you have it load some of the profiles it can generate. You have to add a better profiler to your python environment, namely cProfile (which is shipped with python 2.5).

I am a terrible sysadmin and I don’t really understand (and care about) how python manages its pathes and accesses its libraries. So I did this :

  1. download and unzip the source tarball of python 2.5 so that you get cProfile source code
  2. locate relevant files referring to lsprof (the old name of cProfile), using a grep -R lsprof * on the source directory
  3. I personnally located the following files (I leave cProfile test files apart) : Lib/cProfile.py Modules/_lsprof.c and Modules/rotatingtree.* (.c and .h)
  4. download and unzip the source tarball of python 2.4
  5. copy the located cProfile files from their python 2.5 location to the proper dirs into the source code of your fresh python 2.4
  6. update python 2.4 ’s setup.py file so that the line below is added just after the hoshot one : exts.append( Extension(’_lsprof’, ['_lsprof.c', 'rotatingtree.c']) )
  7. did I mention I am so bad at hacking things that I don’t even provide a patch for the operations above ?
  8. compile python 2.4 using a ./configure then make

At this point, you must have an executable python interpreter version 2.4 which includes cProfile. You can check by launching this python and trying a import cProfile which should not fail.

I replaced my system python2.4 by then doing a sudo make altinstall but I also had to manually tweak my system files so that this new python2.4 gets properly called (I am using ubuntu 8.10 intrepid, BTW) :

cd /usr/bin

sudo mv ./python2.4 ./python2.4.5

sudo ln -s /usr/local/bin/python2.4

Now, a plain command line call to python2.4 should give you an interpreter prompt which lets you import cProfile if you dare. I suffered some colateral damage here : the python prompt lost its ability to have previous lines copied at the prompt by pressing the Up/Down arrows. And I had to re-install reportlab from the source (some of my products depend on pisa which depends on reportlab). Anyone knows how to restore this Up/Down arrow capability ?

2. Recreate your buildout using this new python version

So that zope gets recompiled using your new python version :

rm -Rf parts bin develop-eggs

python2.4 bootstrap.py

bin/buildout

3. Patch zope testrunner so that it supports cProfile instead of only supporting hotshot

I got a bit confused because my buildout contains 2 zope testrunners. It took me some time to figure out which was which : the one which is used by the zope instance your buildout creates is the one which is shipped with zope 2.10 and is located at parts/zope2/lib/python/zope/testing/. The other one I have is in the zope.testing egg. I don’t know how and why I got such an egg. Anyway, this egg supports both hotshot and cProfile whereas zope 2.10 testrunner doesn’t. So I hacked the weaker/older zope 2.10 testrunner with some inspiration from zope.testing so that cProfile can be used when running tests. Here is the diff you can use for enhancing  parts/zope2/lib/python/zope/testing/testrunner.py. Oops, left version is the modified one, right version is the original one.

38,69d37
< before_tests_hooks = []
< after_tests_hooks = []
< available_profilers = {}
<
< try:
<     import cProfile
<     import pstats
< except ImportError:
<     pass
< else:
<     class CProfiler(object):
<         “”"cProfiler”"”
<         def __init__(self, filepath):
<             self.filepath = filepath
<             self.profiler = cProfile.Profile()
<             self.enable = self.profiler.enable
<             self.disable = self.profiler.disable
<
<         def finish(self):
<             self.profiler.dump_stats(self.filepath)
<
<         def loadStats(self, prof_glob):
<             stats = None
<             for file_name in glob.glob(prof_glob):
<                 if stats is None:
<                     stats = pstats.Stats(file_name)
<                 else:
<                     stats.add(file_name)
<             return stats
<
<     available_profilers['cProfile'] = CProfiler
<
75,98c43
<     pass
< else:
<     class HotshotProfiler(object):
<         “”"hotshot interface”"”
<
<         def __init__(self, filepath):
<             self.profiler = hotshot.Profile(filepath)
<             self.enable = self.profiler.start
<             self.disable = self.profiler.stop
<
<         def finish(self):
<             self.profiler.finish()
<
<         def loadStats(self, prof_glob):
<             stats = None
<             for file_name in glob.glob(prof_glob):
<                 loaded = hotshot.stats.load(file_name)
<                 if stats is None:
<                     stats = loaded
<                 else:
<                     stats.add(loaded)
<             return stats
<
<     available_profilers['hotshot'] = HotshotProfiler

>     hotshot = None
288c233
<     if len(available_profilers) == 0 and options.profile:

>     if hotshot is None and options.profile:
320,324c265,266
<         if available_profilers.has_key(’cProfile’): prof = available_profilers['cProfile'](file_path)
<         else: prof = available_profilers['hotshot'](file_path)
<         before_tests_hooks.append(prof.enable)
<         after_tests_hooks.append(prof.disable)
<

>         prof = hotshot.Profile(file_path)
>         prof.start()
335c277,278
<             prof.finish()

>             prof.stop()
>             prof.close()
342c285,292
<         stats=prof.loadStats(prof_glob)

>         stats = None
>         for file_name in glob.glob(prof_glob):
>             loaded = hotshot.stats.load(file_name)
>             if stats is None:
>                 stats = loaded
>             else:
>                 stats.add(loaded)
>
459d408
<                 [hook() for hook in before_tests_hooks]
461d409
<                 [hook() for hook in after_tests_hooks]
656,659c604
<     [hook() for hook in before_tests_hooks]
<     results = run_tests(options, tests, layer_name, failures, errors)
<     [hook() for hook in after_tests_hooks]
<     return results

>     return run_tests(options, tests, layer_name, failures, errors)

Oh, BTW, this diff also lets you filter out the profiling of the setup and teardown steps of your tests which are of poor value compared to actual tests. Thanks to Daniel Nouri for this.

At this point, you should have given your zope instance the capability of profiling tests using cProfile. You can check it by asking for a debug prompt from zope : bin/instance debug The prompt you get should allow you to safely import cProfile

4. Profile your test

Say you have a Products called Products.DearProduct with some tests. Profile them :

bin/instance test -s Products.DearProduct –profile

At this point, you should get a tests_profile.*.prof file saved in the current dir. It contains the performance profile cProfile generated, using the pstats format. You can manually load and analyze this data. Or have a limited GUI show you what it’s like. Or you can go for the nicer, more insightful version which follows.

5. Visualize and analyze the performance profile you generated

Thanks to Ingeniweb folks, I heard of gprof2dot and xdot. Download them (the scripts, not the folks). Use them to generate and display a very nice graph :

chmod 744 gprof2dot.py

chmod 744 xdot.py

./gprof2dot.py -f pstats -o profile.dot tests_profile.*.prof

./xdot.py profile.dot

Note the * you may replace with the ID of the profile generated above. Or you can use the fancy but dangerous one-liner below which runs the tests,  generates the profile, generates the corresponding graph, displays the results of tests and displays the graph for analysis :

rm -f tests_profile.*.prof && rm -f profile.pstats && rm -f profile.dot && bin/single-instance test -s Products.MyDearProduct –profile > /tmp/test.txt ; ./gprof2dot.py -f pstats -o profile.dot tests_profile.*.prof && less /tmp/test.txt ; ./xdot.py profile.dot

At this point, you should be starring at nice colored graph which represent the flow of your tests and the method which may be performance bottlenecks. And you should be hoping that it was worth the effort.

[Here starts the update]

After some contemplation moment, I tried to analyze the graph of my tests and did not feel extremely happy with this graph visualization. It indeed shows me that the slowlyness of functional doctest is mostly due to the testing framework (zope.testbrowser, etc.). This slowlyness “hides” the optimization opportunities of my code. And I don’t know how to exclude some products from the being profiled or from being present in the profile stats (I would have liked to filter out zope.testbrowser and other Plone-specific things). But, all hope is not lost, here comes kcachegrind:

sudo apt-get install kcachegrind

sudo easy-install pyprof2calltree

pyprof2calltree -o output.calltree.stats -i tests_profile.*.prof -k

Using kcachegrind with the help of pyprof2calltree, I was able to focus on my product methods and identify those methods which deserve some caching. Added some @memoize decorators and reran the profiled tests so that I could enjoy the performance improvement… Happy I am, happy thou shalt be.

What do you think ?

Dilbert est en intercontrat !

Saturday, January 17th, 2009

Dilbert n’a plus de projet actuellement, crise oblige. Scott Adams va-t-il lui faire faire du wecena ?

Dilbert.com

Altruistic Capital, semifinalist of Echoing Green 2009

Monday, January 12th, 2009

Albeit disappointed, I enjoyed the results of the 1st selection phase of the 2009 Echoing Green fellowship program. Of course, it had some positive consequences on my venture. But the most positive side of this is that Thierry Klein brought my attention to the fact that his own (French : Cocorico ! as we say here)  initiative, namely the Altruistic Capital, is selected as a semifinalist. I wish he will be at the next Echoing Green selection week-end in New York this spring and, hopefully, the Altruistic Capital project will be boosted by a 60.000 USD grant.

The Altruistic Capital concept is a nice and innovative way for tightening the public good to the performance of for-profit corporations, by letting nonprofit organizations receive a share of these profits. They indeed become shareholders of the forprofit, as the name “Altruistic Capital” suggests.

Next questions for me are :

  • how can I let some open source businesses become more familiar (and hopefully fond of) such initiatives (this is also an open question for the economy of communion which shares so much in spirit with some aspects of free software)
  • when, how and to which nonprofit(s) will I donate a part of the capital of my nonprofit ? this question is a bit difficult for me to handle given that my customers are nonprofits and I may prefer not to create interferences between business itself and the altruism of my capital… or maybe I should let this happen ?

I definitely have to spend some time with Thierry, face to face. Maybe next time he comes to Paris if our schedules can be synchronized.

Good luck, Altruistic Capital and Thierry, for the next phase of the EG selection process !

Echoing Green fellowship program : we did not make it :-(

Saturday, January 10th, 2009

Disappointment… Our application to the Echoing Green fellowship program is no more in the race : it did not advance in the application process” and was rated as “noncompetitive” (see their full email at the end of this post). There were 950 applicants this year. 300 projects are selected as semifinalists. Too bad we are not among these.

Given the high number of applicants, EG doesn’t tell us why our application is rated as “noncompetitive”. But if I had to bet on their rationale, and given the other semifinalists, I’d say that the 2 main weaknesses of our application were :

  • it may seem to focus too much on France : wecena services can be offered to nonprofits worldwide but the business model fully relies on French legal specificities and on French corporate donors => maybe it can’t be seen as a “global” solution at this stage of development ? maybe I’ll first have to prove wecena services can benefit to non-French nonprofits, too.
  • above all, it is not a “direct” solution : it does not directly aim at eradicating poverty or fighting diseases or providing resources to suffering people ; it rather gives social entrepreneurs and nonprofits access to IT skills and services which in turn can leverage their capacity to innovate ; and EG said they would favor direct solutions over indirect ones.
  • maybe there is a 3rd reason, too : the wecena business model is fairly sophisticated and, even with your help, I may be suffering from the curse of knowledge ; in other words, it’s hard to communicate this model without diving into obscure details

This failure of course has negative consequences : I won’t have a week-end in New York paid by EG :) nor won’t we get 60,000 USD from them for the wecena project. Fortunately, it also has some positive consequences :

  • We won’t have to draft longer essays and translate the French materials into English for further evaluation, which frees some valuable time in order to put more effort on selling the wecena concept to French IT firms ; convincing them takes so much time ! Ive been working with 3 of them for now 1 year on this project and contracts yet have to get signed…
  • You helped me to write down the why and the how of the wecena program ; I could translate that into French and provide it as additional marketing materials to the nonprofits and IT firms I work with, which may turn to be a very valuable asset for getting the first IT firm to donate skills and time to our nonprofits ; when I published these materials in French, it also allowed us to officially become a partner of the MUNCI, a French union of IT consultants.
  • It gave me the opportunity to work closely with the folks at the Antropia social incubator of the ESSEC business school (the number 2 business school in France, I’d say) and this convinced me to apply to their own fellowship program : they will give me their decision in March but it may be a bit easier that the EG selection because the wecena program already received a small award from them.
  • The list of the 300 Echoing Green semifinalists contains some quite interesting projects in the high tech field (frogtek for instance) and I may propose them to benefit from wecena services once the money pump is started with the French nonprofits I already have contracted with. I might even get in touch with EG and propose wecena services as part of their grants to future fellows in needs of free IT skills and services, why not ?

Anyway, thanks a lot to all of you, dear friends or colleagues who contributed to the wecena application to the EG fellowship program either online or offline. Special thanks to IA_ who was an early and steady commenter, who was brought to us from Texas by the magics of the Internet. :)

If you want to give a further hand to the wecena project, you can still have a look at what’s here if you speak French (and fill the mini-survey I published there, including the part where you can spam your geeky friends), or just comment this post in English if you can’t.

Here is the EG email announcing the bad result :

On behalf of the entire Echoing Green team, thank you for your recently submitted application for a 2009 Echoing Green Fellowship. We received nearly 950 applications this year, and as always, we were inspired and encouraged by the ideas, commitment and enthusiasm for public service captured in those applications. We applaud the good work you are undertaking through your program.

We regret to inform you, however, that your application did not advance in the application process. All applications were evaluated for competitiveness. It was determined that your application was not competitive and is no longer under consideration for an Echoing Green Fellowship. All decisions are final and cannot be changed.

Please note that we review each application twice and evaluate the proposal against the selection criteria of the Echoing Green fellowship program. Designating your application as noncompetitive is specific to our application process and selection criteria and is not intended to reflect the strength of your idea or the need for the proposed program in your community. Unfortunately, based on the volume of applications we receive, we cannot provide you with individual comments on your application. However, you can find a list of the most common reasons an application is deemed noncompetitive at http://www.echoinggreen.org/noncompetitive. While we cannot provide you with specific feedback on your application, we hope that you find this information helpful as you prepare future proposals.

We wish you success in finding other sources of support for your work. While Echoing Green may not be the right fit for your efforts, we encourage you to pursue your dream of helping people and communities locally, nationally and internationally. Best of luck!

Sincerely,

Heather McGrew

Vice President, Fellow & Alumni Programs

Applying to the Echoing Green fellowship program

Tuesday, November 4th, 2008

[This post is the draft of my application to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green (EG). You can follow the latest posts for that application and its preparatory work using the echoinggreen tag on my blog.]

[Edit: The application deadline was met and this application was submitted. But you can still post your comments, suggestions and supports messages in order to better make the case of IT pro bono work for nonprofits.]

OK. In order to prepare my application, we have been discussing my preparatory work (your comments on these other posts are still much welcome and needed). Here is the draft of the application itself. This post is the content that will eventually be submitted end of November 2008 to EG (the preparatory work is for you, me and other readers). It is still a draft and it requires much of your attention both on my English spelling/grammar/style and on the content itself (the wecena concept, the logic and clarity of my answers, …). Answers to EG are limited in length… but your comments are not limited howsoever !

What is your new, innovative idea to create lasting social change? Be clear, specific, and jargon-free in your answer

[Edit: Compare the initial answer below with related comments from Sig and Amir] [Edit:minor English fixes included]

Non-profit social innovators of all sectors (health, education, poverty, …) have huge social ambitions but limited resources and capacity. Information Technology (IT) helps as an option to leverage the efficiency and reach of their programs. But IT skills and services are costly and too often out of budget reach for these innovators.

IT service firms are rich in consulting skills but have not been given a strong enough incentive to donate them pro bono (free) in any large scale.

Fortunately, corporate social responsibility is rising on the corporate agenda and recent French labor and tax laws allow local IT service firms to offer services free to innovators *at no cost* for donors. In order to bridge the digital divide between nonprofits and corporations, all it requires is a proper mix of administrative process automation, management methods and tools, a donation channel and a culture of giving.

Wecena services are an innovative pro bono IT model that allows French nonprofits to benefit from more than 1 full-time equivalent of IT professional skills each. 100% of the cost for the donor is supported by the French tax payers. Massive donations without cost can boost non-profit innovations.

A couple of characters remaining

What drew you to this issue? When and how did you come up with your idea?

[Compare the initial answer below with alternative from Sig (based on comments from Amir and Yann)] [Edit:minor English fixes included]

I have been volunteering in nonprofits since 8. At 18, I was volunteering as a video team leader in immigrant communities and local youth organizations. Technology (then video) was used as a way to let poorer immigrant youth and richer local youth meet and connect. I then decided that both my volunteer engagements and my career would aim at bridging social gaps with the help of technology.

I have been employed in the IT industry for 10 years as an entrepreneur, manager and researcher. I have witnessed how deep the digital gap between the social and corporate worlds is. IT hardware and software can now be obtained free through used hardware donation and free software. But skilled time remains a very scarce and limiting resource for any innovative nonprofits.

I have been trying for 10 years to find sustainable ways to drive my career towards fueling social innovation with technology. As a former entrepreneur, I have been monitoring market opportunities in this field. The French legal environment and the emergence of corporate social responsability as a shared concern among major corporations now offer a perfect opportunity for proposing wecena services.

A couple of characters remaining

As specifically as possible, demonstrate the need for your organization. Use statistics and references

[Compare the initial answer below with related comments from Sig] [Edit:minor English fixes included]

The dependence of nonprofits on technology to manage information, communicate with donors, staff and volunteers, and handle various other tasks continues to grow. Beyond organizational support, IT is a must for scaling social innovation and driving progressive uses of new technology.

In France, 1 year of a full time IT engineer or consultant is sold at about 80 kEUR including a cost of about 60 kEUR in salary and associated taxes. Most innovative nonprofits are limited in size and may not employ more than 6 full-time equivalents (FTE), with a corresponding budget of less than 200 kEUR. Buying a couple of FTE IT engineers would cost more than half of the annual budget of the organization which is not acceptable.

At the same time, employees of French IT services firms earn their salary even when they are “on the bench” waiting for their next customer engagement because of a employee-protective labor law. Around 5% of these employees are “on the bench” at any given time. This represents thousands of inactive FTE each year who aren’t given the chance to contribute to the public good.

What a waste of brain power !

A bit more than 18 characters remaining.

What is the root cause of this problem? How does your idea tackle this root cause?

[Compare the initial answer below with related comments from Sig] [Edit:minor English fixes included]

“On the bench” brain power is considered a non-avoidable waste in the IT service industry. There has been no channel for “recycling” this waste so far. The short duration of these “on-the-bench” periods represents an obstacle for any commercial customer (including nonprofits): left alone, new consultants would spend much time learning their new mission context and would already have to move away because of a new commercial customer engagement. Individual productivity is too low in such a context. And knowledge can’t easily be transferred from consultant to consultant in such short time frames without the help of costly knowledge management (KM) methods and tools.

The French tax laws allow wecena pro bono services to generate significant tax savings which would be converted back into money donations for supported nonprofits. With this money, Wecena.com would be hired to offer appropriate KM methods and tools that let consultants become productive fast enough and which encourage consultants to become volunteers once their pro bono mission has ended.

Innovative nonprofits would us wecena.com to hire skilled pro bono donors and to provide additional productivity support.

No characters remaining.

Note: I should replace this paragraph with a summary from the result of our conversation here (it was written before this discussion). What do you think?

Help Echoing Green visualize what your organization will do. Describe the specific programs that your organization will engage in to deliver your long-term outcomes

[Edit:minor English fixes included]

Consider a nonprofit (NP) which requires better or new information technology for its new program. The NP staff leading the project would contract with wecena.com for providing complementary IT staff for free.

Wecena.com allows the NP to promote its program while emphasizing both its skills requirments and its expected social impact. wecena.com identifies and meets French IT service firms which offers proper skills and services and “sells” the NP program needs to the IT firm.

On-the-bench consultants apply on wecena.com for the program of the NP on a voluntary basis. The best of them starts the mission at the NP premises. After a couple of weeks, she stops and moves on to a new commercial engagement. Another on-the-bench consultant takes on the tasks left by her colleague. The NP staff uses wecena.com as a knowledge continuity management platform. At the end of the month, wecena.com generates tax receipts to the donating firm on the behalf of the NP. Based on the calculated tax cut, the firm donates money to the NP which in turn pays wecena.com for the services provided. A portion of these consultants turn into volunteers in their free time with the blessing of their employer.

Almost no character remaining.

Note: more details available here.

Describe your long-term desired outcomes. How will you measure your progress toward these outcomes?

[Edit:minor English fixes included]

I envisage a world where pro bono IT services are considered a critical enabler for major social innovations from education to environment via poverty reduction. An army of computing experts and corporations join the fight for changing the world. Wecena services are considered the secret weapon of high-impact social innovations. IT firms compete in donating more and better skills to prominent social entrepreneurs. Specialized for-profit social ventures emerge and compete with wecena.com.

By the end of 2010 we expect to deliver 10 full-time equivalents (FTE) of pro bono IT consulting and engineering to less than 10 ambitious non-profit projects and to increase this volume with a rate of at least 4 FTE per year. We will build non-profit loyalty : the expected median duration of our relationships with each NP will be of at least 6 months for non-profits having accepted first donations more than 1 year before. At least 10% of the employees involved pro bono will turn into volunteers in their free time. Anecdotal evidence will show that wecena services increase non-profit programs reach or efficiency by a factor of at least 3.

And we will be financially profitable before 2010.

16 characters remaining

Note: see this post for a more detailed conversation.

Innovation is important to Echoing Green. Explain how your idea is truly innovative. Identify other organizations that are addressing this issue and how your approach is different and has the potential to be more effective

[Compare the initial answer below with related comments from Sig]

Wecena.com offers the first and only IT assistance solution for big social innovations (requiring more than 1 person-year) that costs nothing for both nonprofits and for corporate donors without relying on volunteering or direct governmental subsidies. Other organizations provide IT assistance to nonprofits :

  • Compumentor/TechSoup offers donated software and hardware but no IT pro bono service
  • The Taproot foundation offers pro bono service (IT included) but their grants are worth no more than 35.000USD compared with a minimum 64,000USD per wecena grant.
  • Taproot as well as direct pro bono donors (e.g. Accenture France) operate at a significant cost for donating firms by dedicating individual consultants for the whole project whereas wecena teams of “on the bench” consultants allow any IT firm to try out pro bono services at no cost. The risk of low productivity for these teams is mitigated by management methods and tools from the open source community, by the rate of consultants turned into volunteer contributors and by the higher volume of potential donations.
  • Volunteer-match web platforms start addressing the need for IT pro bono service but with the same limits as above.

4 characters remaining.

Note: see this post for more details

Building a new organization is challenging. How are you entrepreneurial? Describe your skills and experiences that demonstrate you can lead a start-up organization

[minor edits]

In 1996, I co-created a French nonprofit. I raised funds from the French government for its “Internet in the hood” program. I led this program which provided technological assistance to more than 10 nonprofits in local immigrant communities in France.

In 1998, I co-created and led a small Internet consultancy, experienced its downfall and managed its closing without bankruptcy. I had earned customers including governmental agencies and the Fondation de France (the biggest umbrella organization for French foundations).

In 2000, I joined a Fortune Global 200 firm (Saint-Gobain) as head of its corporate web technology group. In 5 years, I turned this 5 persons team of engineers into a more than 20-consultants-big skills center offering engineering and consulting services.

In 2005, I became team-leader of the French Motorola Labs team researching Web x.0 technologies for Motorola phones and set-top-boxes.

When ready to launch my wecena.com venture, in 2007, I negotiated a compensation package with my management line so that I could safely leave my position even though I am the only source of revenue for my family of 6. I funded Wecena SARL in July 2008.

4 characters remaining.

Why are you uniquely qualified to lead your specific organization? Describe your experience working with this issue and population

[minor edits]

My project requires the following skillset : managing innovative IT projects, being an entrepreneur, serving the non-profit field.

As the head of a corporate IT department then as the leader of an IT research team, I demonstrated my IT skills : I led the creation of a global electronic identity system for more than 200,000 corporate users worldwide and created technology which generated academic publications and patents. I managed the growth of an IT service team until it was 20 IT consultants big. I supervised 100 intranet projects and have been the champion of free software and open source in corporate environment.

I succesfully faced entrepreneurial challenges by taking organizational initiatives, raising required funds and selling innovative services to customers. I raised and managed an 8 millions EUR budget in a corporate environment for a project I led.

I have served non-profits as a volunteer (Boyscouts, Ingénieurs Sans Frontières, Red Cross), as a board member and volunteer (my tech assistance program for 10 immigrant youth communities), during 1 year as a public servant (urban policies agency) and occasionally as a consultant (Fondation de France).

5 characters remaining.

How much money have you fundraised to date? Who is your largest funder and what is the size of their grant? Provide an estimate of your total budget for each of the next two fiscal years

[Compare the initial answer below with related comments from Sig]

I funded Wecena SARL in July 2008 with 3,000 EUR only. I am the only (and therefore largest) funder of this company.

1st fiscal year (ends in September 2009): estimated revenue of 120 kEUR

2nd fiscal year (October 2009 to September 2010): projected revenue of 286 kEUR

934 characters remaining.

Why you may (not) disagree with my wecena solution

Monday, November 3rd, 2008

[This post is the 6th part of my preparatory work before applying to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green (EG). You can follow the latest posts for that work using the echoinggreen tag on my blog.]

EG suggests that I find some professionals in my field who are likely to disagree with some part of my idea, meet them, list their objection to my idea and try to formulate my response.

I did it. You may relate to some of these objections. Hopefully, you will end agreeing with my responses or suggesting even better responses as a comment to this post !

  • An IT firm consultant : “Your wecena concept is a source of unfair competition for us ! : he was fearing that non-profits with a budget would rely on (”free”) wecena services rather than buying IT services from companies such as his. I agree that wecena services might compete with some IT consultancies. But this competition would be limited : “classic” consulting and wecena consulting differ in their form. Classic consulting offer dedicated consultants whereas wecena consulting offer a path to building a community of volunteers while providing basic services from a big number of individual interventions. Another difference is that there will probably be a difference between non-profit projects relying on classic consulting and those supported with the wecena model: the wecena model favours innovative projects which would probably not be in the reach of non-profit budgets and would require classic consulting otherwise. Furthermore, even if they were to be some competition, it would not be unfair : the French law allows some non-profits acting for the public good to benefit from an access to low cost resources based on tax savings offered to donors. It would rather be unfair to forbid such donations on the basis that non-profits should have bought these resources at market price or should have lived without these.
  • A former executive manager of a major IT firm in France, now head of a non-profit: “My non-profit would not accept Wecena services because they are based on the short and variable ‘on the bench’ periods of consultants rather than on full-time consultants donated by IT firms for several months each year. As a head of a non-profit which is organized as a governmental agency, he manages staff “the usual way” (permanent and paid staff) and refuses to rely on volunteering. Therefore, a model which induces high staff turnover rate among the pro bono consultants only has drawbacks for him (lower productivity, higher management and training costs) and no advantages (recruiting a high number of volunteers which keep on contributing on their free time). Furthermore, as a former head of a major IT firm, he can give a call to any other president or CEO in his former industry and can get free and easy access to dedicated consultants from such firms. Smaller firms can’t afford dedicating permanent staff to pro bono work. And they aren’t many IT firms with pockets deep enough and on-the-bench periods long enough to fund such long-duration pro bono dedicated offerings. Ideally I agree with him on the fact that dedicated pro bono staff delivers superior quality for classic IT projects. But I bet that wecena services deliver superior quantity of pro bono donations and even superior quality for some non-profit IT projects with a focus on building strong communities of volunteer contributors (think free software here).
  • The financial manager of an international NGO with a focus on eradicating extreme poverty : ” We do have needs for wecena services and would be more than happy to work with you. But we feel like your for-profit business margin is too high for us to accept your support. He was referring to the fact that, as a for-profit organization, we aim at making money on the services we would deliver to his organization even though it would be at no cost for him because we also take in charge the effort of obtaining such 100% of this budget from the IT firms donating pro bono work. I clearly see his objection as an objection with some ethical reasoning behind it : even though it is at no cost for them (we provide both the budget and the invoice), do we “deserve” that amount of money? Could they engage in what they may perceive as a “waste of money” ? Or an undue profit from a greedy corporation ? This sort of questions may resonate strongly in an organization dedicated at eradicating extreme poverty. The question for me was then : ” How can you make profit when working for a client which aims at eradicating poverty? ” My current answer to him/them was that I encouraged them to negociate the quality or quantity of services we offer them for a given price. If they feel like our price is too high (whatever their reasoning is), I starting engaging them in a negotiation. They accepted it and we have to meet again some time soon so that I can better understand what the deep ground of their objection is and how I can better answer it.
  • The head of an innovative Internet-based non-profit: ” We can’t ask for one of your grant immediately because your business model is based on an innovative exploitation of tax regulations which might expose us to tax risks. We’d prefer other non-profits to start first! This objection has some common sense in it I guess : are pro-bono-on-the-bench-consultants tax-risk-proof? My answer is a definite yes because it is the answer given to me by several experts in the field of the French tax law : my accountant who is also head of a firm offering legal tax advices, a close relative who is a university professor in tax law, the financial managers of the several IT firms I am recruiting as donors, and, last but not least, the lawyer in charge of legal training of donors and non-profits at Admical, the French organization for the promotion of industrial and commercial philanthropy which is also at the root of the French tax law on corporate donations. As a marketing argument, I may have to buy a formal white paper from a tax law firm some day…

That’s it. Do you have other objections ? What do you think of my responses to the objections above ?

How others have tried to solve the issue wecena services are to solve?

Monday, November 3rd, 2008

[This post is the 5th part of my preparatory work before applying to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green (EG). You can follow the latest posts for that work using the echoinggreen tag on my blog.]

Echoing Green suggests the following steps before applying to their fellowship program :

Find at least three other organizations that work in your field, work with the community you will serve or work in the same way that you hope to. You can find these organizations by talking to experts, reading articles, and searching the Internet. [...]

Wecena services are pro bono information technology services offered to non-profits by IT services firms with additional consulting and support from us. Wecena services aim at filling the digital divide between innovative non-profits and modern corporations, with a focus on big IT projects (more than 1 man.year of staffing needs) and on non-profits with some presence in France. Who’s trying to address similar issues and how do we differ from each other ?

  • NTEN: an international nonprofit organization based in the United States, NTEN is the trade association for nonprofit technology assistance providers. We share similar values and goals. But NTEN does not provide non-profits with access to pro bono IT services. And it has no strong presence in France.
  • CompuMentor provides technology assistance internationally to other non-profit organizations. Its TechSoup website provides non-profits with access to donated IT products (software and hardware) but not to pro bono service.
  • Some IT corporations directly offer non-profits pro bono IT services. For instance, Accenture France donates about 10 full-time equivalents of IT engineering or consulting work to non-profits organizations. The TechSoup website lists at least 2 smaller US firms offering some pro bono services. Several others private pro bono IT initiatives probably exist elsewhere but may not be publicly advertised. Wecena services and Accenture France pro bono missions are similar in nature (IT engineering, integration, training or consulting). They differ in some of their characteristics. Accenture France dedicates consultants for individual missions that may last up to 6 months. Individual interventions for wecena services offered by other IT firms may be much less shorter because they are based on the “on-the-bench” periods of time consultants go through when they are not yet assigned to a new commercial project. As a result of this constraint, wecena services introduce a huge rate of staff turnover in the pro bono team. This cause of lower individual productivity is partially compensated by the use of specific management methods and tools, by the additional support and consulting we directly offer to non-profits and by the rate at which individual consultants are turned into volunteers when their pro bono intervention ends. Note also that all IT firms can’t afford offering pro bono work the Accenture way: smaller firms can’t afford dedicating 6 months of a consultant to a non-profit ; and firms offering engineering services rather than consulting services have much shorter “on the bench” periods of times (the cost of pro bono work for them in therefore higher). Wecena services are costless to IT firms because they are funded by “on the bench” costs and tax savings. Long-duration pro bono missions cost much more to donors. Wecena services allow IT firms to give a try at pro bono services and invite them to go further into corporate philanthropy at their own pace. It lowers the barrier to entry for would-be philanthropist firms.
  • Other IT firms in France (for instance Steria and its corporate foundation) offer grants to innovative non-profits with strong IT needs. However they don’t offer pro bono consulting but rather encourage employees to volunteer on their free time (optionnally with a yearly couple of work days donated by the firm as a complement).
  • The Taproot foundation is an American foundation. It aims at engaging the America’s business professionals in pro bono service. It offers 4 practices : marketing, HR, strategy and… an Information Technology practice. This IT practice offers 3 possible pro bono projects : a donor database, a simple website or an advanced website. Each of these projects have an estimated value between 30.000 $ and 35.000 $ which may include some software licensing cost. It does not offer pro bono grants out of a limited number of US cities. Wecena services have a primary focus on French non-profits. Wecena services are limited to IT projects (no other practice). The lowest value wecena services can offer per non-profit is twice bigger (50 000 EUR) and even aim at delivering a value of 100 kEUR to 150 kEUR per non-profit in IT staffing (software licenses not included). The Taproot foundation model of pro bono services probably does not have a specific focus on the “on the bench” periods of time for IT consultants whereas the wecena model does have such a focus which allows lower cost for IT donors and therefore, potentially, a higher volume of donation and a high number of donors.
  • Betobe, Coobalt, Passerelles & Compétences are French organizations which offer matching systems between volunteers and non-profit organisations to foster collaborations online or offline, with or without a focus on IT needs. None of them target IT firms and pro bono service.
  • Mobee and Koeo are French web platforms matching non-profit needs with pro bono donors. None of them have a particular focus on IT needs. None of them specifically focuses on marketing IT pro bono service as an ideal pro bono solution for IT firms. They don’t offer additional IT consulting services to non-profits. Similarly to the previous category of organizations (Passerelles & Compétences-like), they usually grant support for short missions (a couple of weeks long) rather than focusing on “big” projects whereas wecena services are designed for IT projects with a big staffing need (at least one man.year). Other similar platforms are emerging with a focus on complementary or redundant niche non-profit markets (environment, culture, poverty, education, …) rather than a focus on industry-specific (or skills specific) pro bono solutions.

Note to commenters: for this post, don’t spend too much time on my English spelling/grammar/style because this post may not be included in my EG application. I’d rather like to know what you think of the clarity of how wecena services relate or differ from each of these other actors and models.

What’s the logic of our wecena idea?

Monday, October 27th, 2008

[This post is the 4th part of my preparatory work before applying to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green (EG).]

EG suggests I analyse and explain how our work will move from the problem to the stated goal. Here are 3 questions they ask and my attempt at answering them. Please enhance and/or challenge my answers by posting comments.

Their 1st question, about the root cause :

Does your intervention match up well with the specific problem or is it addressing some other issue ?

My answer :

We are responding to the non-profits inability to market IT pro bono services donations as a significant source of value for the IT services industry. We do this by selling French IT services firm a skills donation solution that allows them to rise their corporate social responsibility profile at no cost. This is made possible thanks to unique and under-exploited opportunities offered by the French law and thanks to an efficient online donation management tool. We compensate the non-profits lack of IT project management skills by offering them our training and consulting assistance.

Their 2nd question, about our intervention :

Is your intervention detailed enough to explain the exact way clients will benefit from your programs ?

My answer :

The wecena opportunity is advertised via a website and blog conversations. French top social innovators with strong potential IT needs are identified and contacted. Their projects are selected on the basis of their leadership capacity to manage donated skills with our assistance. A direct B2B sales effort then let’s us recruit medium-sized donor firms from the French IT services industry on their behalf : we “sell” these donors the rising importance of corporate social responsibility for their banking and industrial customers and for recruiting and retaining the best talents ; and we emphasize the fact that they can compensate 100% of the cost induced by these donations both with the fact that their “on-the-bench” consultants keep receiving their salary anyway (because of the French labor law) and with the significant tax savings offered to corporate donors by the French tax law. Non-profit recipients accept that consultants leave their project team as soon as they are assigned to a new commercial mission by their employer. This induces a high rate of project staff turnover. Combining online knowledge management tools, “open source development” and “agile development” methodologies, our training and consulting services allows the project leadership team to cope with this turnover rate. Our online donation management tool allows skills needs to be published and updated by non-profit leaders. Consultants from the donor firms volunteer for the projects that best match their motivation and experience. Our tool also automates the emission of monthly tax receipts which let donors compensate their effort with tax savings. We thus limit the administrative overhead for both the non-profit and the philanthropist.

3rd EG question :

Will your intervention logically produce the specific outcomes you desire ?

The French labor law and tax law enable sustainable and win-win relationships between innovative non-profit organizations and IT services firms. Our assistance allows non-profit teams to cope with the high rate of project consultants turnover induced by the wecena donation mechanism. As a consequence, a constant flow of skilled and motivated consultants feed the non-profit project team on their work time. As a follow-up to their individual donated intervention, a portion of them keeps on intervening as volunteers on their free time. Professional IT support communities can be built. Innovative and ambitious IT projects can be led at low cost. This allows non-profits of all fields to extend the reach of their social programs, accelerate them and produce impactful social change with modern tools.

Note : I am not sure I am satisfied by this piece of my preparatory work. I feel like this is not fluid enough and I may loose the reader by providing too much (or too blurry?) detail. I don’t know… What do you think ?

What will the wecena community look like when we’ve solved the problem?

Friday, October 24th, 2008

[This post is the 3rd part of my draft application process to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena by commenting this post with suggestions about how to best make my case to Echoing Green.]

Once the problem of giving innovative non-profit access to professional IT skills and services at no cost is solved, what will the wecena community look like ? This is the question EG suggests I answer before submitting my application to their fellowship program (see page 8 of their applicant coaching guide). Coach me by commenting my answering attempts below.

EG suggests I start by answering this 1st sub-question :

If your work succeeds, what will the headline in the newspaper say ?

Let’s try such a headline for 01 Informatique or ZDNet :

” Pro bono IT services a critical enabler for major social innovations from education to environment via poverty reduction. ”

Or this one for the French non-profit press (Reporters d’Espoirs anyone ?) :

” An army of computing experts and corporations join the fight for free access to education in villages of the South. French non-profits at the front. ”

Or

” Information technology for social good no more a dream. Low budgets no more an excuse from non-profit boards. ”

For the global press, possibly headlines such as :

” Who’s the best in IT? Exxon Mobil or Greenpeace? Wecena the secret IT weapon for environmental innovations. ”

” U.S. Congress to pass a France-inspired law in favour of pro bono service donations. ”

And ultimately (just for kidding ?) :

” Price of IT pro bono services on the rise at Wall Street. IT shops on the race for CSR awards. ”

2nd sub-question from EG:

If your work succeeds initially and then your organization ceases operations what will the impact on society be ?

My answer :

Wecena’s business model is designed for generating enough profits so that competitors gain an incentive at emerging and replicating our model. Our earlier successes, financial transparency and benefits sharing will prove there is a profitable market for IT pro bono services delivery channels. Several organizations are already well positioned to contribute to such a market: sustainable development consultancies, consulting agencies dedicated to non-profits, philanthropy consultancies, non-profit technology assistance programs. In the end, this will give the most innovative non-profits access to a reliable and cost-efficient source of corporate IT pro bono services.

3rd sub-question for setting goals :

How will you measure the volume of your work? And what goals do you have for each in the short and long-terms?

OK. I’m a bit bad on this one. I can think of indicators of success. But I yet have to specify expected levels of success for these indicators. Too high and I am too optimistic as it would probably exceed our capacity to fund and manage growth. Too low and it would not show the passion there is for this project. Here are the reasonable indicators I am thinking of :

  • number of full-time equivalents (FTE) donated annually by IT corporations to wecena customers (non-profits) as of pro bono service deliveries : 4 FTE in the end of 2009, 10 FTE in the end of 2010, total available market of several hundreds of FTE in France only (woo hoo !)

Next sub-question, probably harder :

How will you measure if your work is making a difference? And what goals do you have for each measure?

My best guess at the moment :

  • median duration of relationships with non-profits (customer retention) : the more they keep accepting donations, the more useful they probably think these donations are : goal = after 2 years of operation (starting from our first operation), expected median duration of at least 6 months for non-profits having accepted first donation more than 1 year ago.
  • volunteer recruitment rate : percentage of IT engineers led to volunteering for “their” non-profit after a pro bono realization with us (rate of volunteering after the end of a wecena mission) => let’s say I’d be very happy if 10% of the wecena engineers kept on contributing at least once two weeks after the end of their individual intervention
  • increased understanding and knowledge of social challenges and innovations by IT employees and managers : => 50% more correct answers to online quizzes proposed by non-profit recipients at the start and at the end of any individual interventions
  • increased understanding and knowledge of IT uses and managements by non-profit members : => 50% more correct answers to online yearly quizzes proposed by us + IT donors.
  • profits (supposed to come with sucess in order to prove there is a market) : at least 5% after 2 years from the start of the 1st operation ?

There would be other indicators to monitor but I am not sure how to collect such data and how to process it so that we isolate our specific contribution :

  • evolution of the percentage of IT service companies donating pro bono services (market donors rate)
  • % of IT pro bono services in non-profit budgets (the more, the merrier)
  • evolution in the perception of technology by non-profit social innovators : we can survey this but I am not sure how to best setup such a survey so that it is reliable, comparable and relevant year after year
  • Cost, outreach and impact depth of social programs powered by our IT pro bono services compared to similar programs not relying on our services => this would be the real evidence of success but I don’t think we can acquire and process such data ; ideally, technology wecena gives access to would make multiply the impact and/or reach of a social innovation by a factor of 10 : ten times more people accessing open education programs, ten times more people with disabilities turning to computers as a daily tool, ten times less effort for homeless people to find a job, etc.
  • Qualitatively, I would like to hear from non-profit boards that recognized social innovators set themselves new social goals because of the technologies wecena can give them access to.

Hey, what to do you think ?

What is the underlying cause of the problem wecena is trying to solve ?

Friday, October 24th, 2008

[This post is part of my draft application process to the Echoing Green (EG) fellowship program. You can help me earn 60.000 US dollars for the take-off of wecena.]

EG 2nd pre-application question: Root Cause Analysis: What is the underlying cause of the problem you’re trying to solve ? see page 7 of the applicant coaching guide.

1st sub question :

What are the obvious symptoms / apparent effects of the problem ?

My answer :

There are 2 apparent symptoms or effects of our problem:

  1. there is a lack of technology-based social innovations compared to both existing social challenges and to existing non-social innovations
  2. most non-profit organizations under-exploit the capacity technology can bring them when trying to transform society, organizations and markets

2nd sub-question from EG :

Why is it so ?

My answer :

The cost of IT professionals is much too high for non-profit budgets. IT man-days are too expensive on free markets.

3rd sub-question from EG, trying to get deeper to the root cause of our problem

OK. But why ?

My answer :

IT service companies sell expensive services and donate very limited amounts of pro bono services. They usually ask for payment, even when pro bono services would bring them more indirect value at no cost. These donations could indeed be of no cost for donors in France because of an extremely favorable legal framework.

4th EG sub-question on this, getting even deeper to the root cause :

Why is it so ?

My answer :

Non-profit organizations do not offer IT service companies opportunities to donate pro bono services at low (or no) cost and with the promise of a high social impact that will also bring real value back to the donor in the form of reputation, talent retention and better recruitments of fresh engineers.

5th step suggesteed by EG :

Based on this, what’s the root cause of your problem ?

My answer :

Non-profit organizations don’t have appropriate skills and knowledge for creating, marketing and managing an offering to IT service companies that would present pro bono service donations as a compelling solution for addressing the need these companies have to prove their “corporate social responsability” at low cost. Moreover, most non-profit organizations lack the IT management skills that would allow them to collect, deliver and exploit such pro bono donations at a sustainable cost.

We’ve got our root cause (I think). But EG wants to asks a last :

Why ?

My answer :

Legal frameworks encouraging and facilitating IT pro bono services are nowhere as favorable to donors as in France. But some of these laws were passed recently (2003, updated in 2008) and are still under-used and unknown by many potential donors and recipients. Moreover donor-to-recipient intermediation costs for the delivery of pro bono services are high. And such deliveries are complex to adapt to the business constraints of both corporate donors and non-profit recipients : IT service companies want their engineers and consultant to commit to profit-making long-term missions and can’t afford to miss commercial opportunities because of commitments toward non-profit projects. Competition is fierce and consultant profiles are too often seen as “replaceable” with one another. And because of low budgets, non-profits rarely attain a critical mass of IT needs that would let them justify launching such innovative partnerships.

So what ? EG suggests we end with deriving …

What are the implications for your work ?

My answer :

Wecena proposes an integrated IT pro bono services donation channel that exploits the French labor and tax laws at their best and for the highest benefit of public good. By only focusing on the non-profit needs for IT services and skills, we accumulate experience and efficiency both in how to market our donation proposal to the IT industry and in how to let non-profits exploit such donations at their best, despite their lack of IT management skills. This focus is also critical to maintaining relatively low intermediation costs.

More precisely, IT donors aren’t asked to commit individual consultants to a given project but to commit to a certain amount of service donation to non-profits. This can generate extremely high staff turnover (individual consultants leave projects as soon as they are assigned to a new commercial mission). But this allows projects to benefit from a continuous flow of skilled professionals to be then turned into online volunteers. As a consequence of this, projects have to be carefully selected on the basis of how resilient they can be to extreme staff turnover. And corresponding project management tools and methods must be offered to non-profit leaders.

Help me earn 60.000 USD for wecena

Friday, October 24th, 2008

Wecena services are my new social venture. The US-based Echoing Green non-profit organization helps social entrepreneurs with a 2 years fellowship program and seed grants including 60 000 USD for the take-off of high-social impact projects. You can think of them as a social venture fund. I’d like to apply to this project competition so that the wecena concept succeeds at bringing corporate-grade information technology to the hands of the most innovative non-profits in France and all around the world. The deadline for this year applications is December 1st, 2008.

Readers, I need your help.

You can help by reviewing the next posts on my blog (I will use the “echoinggreen” tag, you can use this links for follow-up posts). I will post pieces of my draft application to the Echoing Green fellowship program. You can help if you are an English speaker (possibly native…) : I need you to correct my English language and style. You can help if you feel concerned with the importance of information technology and the Internet for serving the public with high-impact and broad-reach social innovations : I need you to help me making the case to Echoing Green. You can help if you like my project and would like to contribute one way or another : just tell me you support this whole stuff and share any comment or thought. If you have a couple of hours available for helping, you can even start by reading Echoing Green’s applicant coaching guide.

You can contribute in English (preferred) or in French (ça ira tout aussi bien). In case you are reading this from the wecena.com website, note that your comments have to be posted on my personal blog (link below).

Let’s start with the 1st pre-application question

Let’s start with Echoing Green (EG) ’s pre-application tools. EG suggests applicants (me) should use their questions to prepare their application. Let’s try with the 1st question (page 6 of the coaching guide) and throw an answer…

Problem Definition, What specific problems are you focused on and can you realistically solve it?

Their 1st sub-question :

What specific injustice in the world have you seen that compels you to start a new social change organization ?

My answer:

Non-profit social innovators lack access to corporate-grade Information Technology (IT) skills and services. This is a form of digital divide between non-profit and for-profit innovators. Why would information technology be primarily made to buy more stuff or spread more advertisement ? Why isn’t it more importantly made and used for fighting poverty, overcoming disabilities, sharing education or enhancing public health ?

2nd sub-question from EG :

Who, specifically, is hurt or affected by this injustice and how does the injustice manifest itself ?

My answer:

Beneficiaries of all fields of social innovations suffer from the lack of technology-powered social innovations and from the under-exploitation of technology by non-profits. Had non-profit innovators been given resources to better use technology, the reach of their programs would have been extended, their ability to transform organizations, markets and society would have been increased. More beneficiaries would have been helped better and earlier. Unseen social innovations would have been launched and developped.

EG 3rd question for defining the problem:

Is it realistic that a single organization could address this injustice ? if not, define the problem more narrowly ?

No. We only focus on the access by French non-profits to significant amounts of IT skills and services. Accessing software or hardware is out of our scope. We also only focus on IT needs that represent at least one full-time equivalent of services and skills. Smaller needs and projects won’t be supported (at least not immediately). Direct help to foreign non-profits is not in our immediate scope but we are considering partnerships with foreign non-profits in the need of free IT skills and services when it can increase the social efficiency of our effort by supporting higher impact global social innovations.

That’s it. What do you think ?

What should be the EU ICT R&D policy ? Tell them

Tuesday, September 9th, 2008

A nice article and hopefully useful survey (runs until 7 November 2008) that will let you have your say on what the EU policy should be regarding Information and Communication Technology R&D.

Very long-term backup fabbed with a reprap ?

Tuesday, August 26th, 2008

How will your personal data be readable 2.000 years from now ? The Long Now Foundation blogs about a nickel-based 3 inches-large disk that can reliably hold high amount of printed data for at least 2.000 years. Data is printed on it in small font : a 750-power optical microscope is required to read the pages !

On the other side of the blogosphere, the reprap community considers adding an ElectroChemical Milling (ECM) tool head to their home DIY 3D printers :

With this tool head, it could machine any conductive material, regardless of how hard it is or how high its melting point.

Maybe someday, personal very-long term backups will be printed at home ?

At the moment, industrial ECM/EDM machines can “achieve a one micron positional accuracy and wire EDM walls as thin as 0.010” (.254mm)” or (ECM) make holes/traces  as small as 0.2 mm large. I guess some progress is required before 750-power optical microscopes are required for reading data printed with this technology. But maybe that before 2.000 years from now, ultra-precision will be achieved by fabbers ? Id be curious of knowing which technique was used by the Long Now Foundation project and how difficult it would be to port this technique to the wonderful world of fabbers.

Rapid prototyping with microcontrollers ?

Monday, August 25th, 2008

I have no clue about micro-electronics and embedded systems. I am a Web application architect and developer, working with very high-level programming languages such as Python (or Perl or Java). I hardly remember assembly language from my childhood experiments with an Apple IIe and almost never touched C or C++. But I have been dreaming lately of rapid-prototyping some advanced non-Web application in an embedded system using my programming skills. So I thought I could share bits of my ignorance here. Please bear with me and give me some hints in order for me to best get out of darkness ! :)

Microcontrollers are now gaining capabilities that are comparable to microprocessors of early personal computers. The two most popular microcontroller (uC) series are Microchip PIC uCs and Atmel AVR uCs. For instance the PIC18F25J10-I/SO costs around 3 or 5 euros per unit at Radio Spares (I am in France: think RS in the UK or Allied Electronics in the USA). It has the following characteristics: 40 MHz, RS-232 capabilities (serial port), a “C compiler optimized architecture”, 48 kB of program memory (Flash mem) and around 4 or 5 kB of data memory (SRAM + EEPROM).

There are nice peripherals available, too. For instance this Texas Instrument CC2500 2.4GHz RF data transceiver (= transmitter + receiver) at around 2 to 3 euros per unit or current sensors approximately at the same price. In fact, periphals possibilities are limitless…

For free software hackers, there was a linux version for such chips : uCLinux. But is it still an active project ? I think I read that the comon linux kernel now includes everything that is required for it to run in embedded sytems. What about GNU utilities ? I know there are things like busybox on bigger but still embedded processors (phones). Anything equivalent on microcontrollers ?

There are simulators that will… let you pretend your desktop computer has a microcontroller inside, or sort of. :)

There is at least one C library for microcontrollers. C is considered as a “high-level programming language” in the embeddeds world ! That is to say that assembly language has been the norm. Some higher-levels languages can be used with microcontrollers, including some exotic-to-me Pascal-like languages like XPlo or PMP or Java-like but living dead things like Virgil and… what about my beloved Python ?

There are at least 2 projects aiming at allowing Python-programming on microcontrollers. pyastra is a “Python assembler translator” that can be used with some PIC12, PIC14 and PIC16 uCs. But it looks dead. Pymite looks sexier but not much more active :

PyMite is a flyweight Python interpreter written from scratch to execute on 8-bit and larger microcontrollers with resources as limited as 64 KiB of program memory (flash) and 4 KiB of RAM. PyMite supports a subset of the Python 2.5 syntax and can execute a subset of the Python 2.5 bytecodes. PyMite can also be compiled, tested and executed on a desktop computer.

At the moment, it seems like Python programming on microcontrollers is a dead end. Nothing worth investing time and efforts unless you want to also have to maintain a Python compiler… Same may be true for Java, not mentioning Perl. In fact, it seems to me that the object-oriented crowds are too far from microcontrollers applications to generate enough interest in initiatives such as Pymite, at the moment. Oh, and I am knowingly ignoring C++ which I did not investigate, having no experience in C++.

So what is left in terms of (open source) programming languages that would be of higher level than C ? The best guess I can make is Great Cow Basic, which is a free software Basic (procedural) language. Example programs look nice to me. It has been active recently. And it supports most of the chips I would consider experimenting with.

Next steps for me, I guess, would be to pick a PIC simulator and an IDE for Great Cow Basic (any eclipse plugin ?). Then I will probably have to figure out how a Basic program can be executed on a simulated PIC. And how a PIC simulator can be useful without all of the electronics that would surround it in any real setup. I’ll see that. When I have time to pursue my investigations and experiments in this micro-world.

And piclist is a great site for beginners.

3D scannerless scanning for fabbers

Monday, August 25th, 2008

For several weeks (or more), I have been dreaming of the day I’ll get my hands on a Reprap (self-parts-printing 3D desktop printer, a DIY fabber). I have been lucky enough to have a good friend promise me he would give his free time for assembling such a printer for me as long as I pay for the parts. 3 days of work are required to assemble the parts which you can order via the web in case you don’t already have access to such a reprap, which is my case. I will try to wait for the next major release of Reprap, namely Mendel 2.0 (current version = Darwin 1.0) unless I can’t resist temptation long enough…

Anyway, I have mainly been dreaming of possible applications of fabbers. Their use is extremely competitive (and disruptively innovative) as soon as you want to print customized 3D shapes which can’t be bought from the mass-manufacturing market. For instance, a reprap is cool when you want to print a chocolate 3D version of your face (see the Fab@Home project) or a miniature plastic representation of your home or anything that has a shape which is very specific to your case (not to mention the future goal of printing 90% of complex systems such as robots, portable electronic devices including phones and… fabber-assembling robots…). And this is where 3D scanning is a must : with a 3D scanner, you can scan an existing object and build a 3D model from it which you can then modify and print at the scale you want.

So my dreams lead me to this question : I could get a fabber some time soon but how to also get a desktop 3D scanner ? Some people have already started hacking home 3D scanners. But I had also heard of techniques that allow users to build 3D models from existing objects using either a single picture of the object, 2 pictures, several images or even a small movie. Some techniques require that the parameters of the camera(s) are known (position, angles, distance, …). Some techniques require 2 cameras in a fixed and known setup (stereophotography). Some techniques require that the camera is fixed and the object lies on a turntable. I really know nothing about computer vision and the world of 3D techniques so I was happy to learn new words such as “close-range photogrammetry“, “videogrammetry“, “structure from motion“, “matchmoving“, “motion tracking” (which is the same as matchmoving) or “3D reconstruction“. After some Web wandering, I identified several open source (of course) software packages that could offer some workable path from existing physical objects to 3D models of them using plain cameras or video cameras.

The idea would be the following :

  1. you take an existing, very personal object, for instance your head !
  2. with a common digital camera, you take pictures of your head from several angles
  3. you load these pictures into your favorite 3D reconstruction free software package
  4. it creates a 3D model of your head which you can then export to a 3D editor for possible adjustments (think Blender)
  5. you export your corrected 3D model into the reprap software stuff
  6. your reprap fabs your head out of plastic (or chocolate ?)

Here are the software projects I identified :

  • From a single image :
    • jSVR, Single View Reconstruction, a semi-automatic process for identifying and exporting three-dimensional information from a single un-calibrated image, dead project ?
  • Using a turntable :
  • From stereo images :
  • From a movie or a sequence of pictures :
    • e-Foto, a free GNU/GPL educational digital photogrammetric workstation, but is it suitable for close-range photogrammetry ?
    • Voodoo Camera Tracker, a tool for the integration of virtual and real scenes, estimates camera parameters and reconstructs a 3D scene from image sequences ; oops, this is not free software but freeware only
    • Octave vision, Algorithms for the recovery of structure and motion, using Octave, a one-shot development, no future…
    • Tracking / Structure from Motion, another piece of student homework
    • libmv, a structure from motion library, which plans to one day take raw video footage or photographs, and produce full camera calibration information and dense 3D models, very promising but being rewritten at the moment (August 2008)
    • GPU KLT a high-performance research implementation
  • Using the shadow of a stick (!) :
    • Scanning with Shadows (see also this site), wave a stick in front of a light source to cast a shadow on the object of interest, and figure out its 3D shape by observing the distortion of the shadow
  • Don’t know which technique is used :
    • OpenCV (see also this site), Intel’s Open Computer Vision library may some day contain some 3D reconstruction capabilities
    • Voxelization, a .NET based framework, designed for helping in development of different volume reconstruction, 3D voxel visualization and color consistency algorithms in multi view dynamic scenes, dead project ?

My personal conclusion :

I haven’t tested any of these packages. At the moment, there seems to be no easy-to-use free software package that would compare to commercial stuff such as Photomodeler or ImageModeler or research works such as Microsoft Photosynth. However these techniques and algorithms seem to be mature enough to become present as open source package soon, especially given the emerging interest in 3D scanning for fabbers ! Most promising free packages for scannerless 3D scanning for fabbers are probably Stereo and libmv.

What do you think ?

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 ?