Not Invented Here

Posted by drak [1] on Thu, 24 Feb 2011 (7192 reads) edit [2]

Not invented here [3]” is an unwillingness to use foreign stuff from outside your own project or company. Many open source projects suffer from this phenomenon, and in the past, so did we. There are many reasons for it: I specifically remember people expressing that if we use 3rd party solutions for stuff on our website for example, that might send the wrong message about what Zikula can and can't do. There's probably a pride issue buried deep in there too. Such a fear comes from complete ignorance.

The question is not a case of, “can it be done in Zikula”? Because, being a web application framework, the answer is always, “yes, it can”. The question is, what is the Zikula project's main focus? Our core focus is, and always will be, the creation of a rapid web development framework. That's our core offering. Atop that, in order to help with the popularity of Zikula, we'll be packing it with an ready to go content management solution. So these are our two main offerings. Yes, we will stimulate and be actively involved with the development of extensions, but, that is quite secondary to our primary goal. So if we spend all our time developing extensions for stuff on (just so we can say, “see what Zikula is capable of”), we're clearly not focusing on our core objectives.

Over the last two years we've been moving more and more to using non Zikula solutions in our infrastructure. Not because Zikula can't do it, not even because we didn't have an 'in-house' solution, but because it's simply much easier and less costly (in terms of design, development and maintenance) to NOT to re-inventing the wheel. Doing so allows us to keep our focus. That's why we use Trac for our ticket tracker, Jenkins for continuous development, and Pootle for the gettext translation portal.

We've even been using other collaborative tools like Google Apps (for questionnaires), Google groups for mailing lists and Google Wave for collaboration and fact finding.

Looking at Zikula Core itself, we have also benefited dramatically from outsourcing some core architecture. Doctrine ORM and Zend_Log for example. Why reinvent a logging system that is not only already there, but mature and well maintained? Using these mature third party solutions allows us to focus on our real tasks. We developed and maintained our own ORM, in fact, it was arguably the first ORM for PHP in history (DBUtil + PNObject), but in the end, ORM is not our main focus, when we can instead just use a mature solution and save ourselves all the development and maintenance of ORM full stop?

We're going to see more, “invented elsewhere” in time too. In August 2010, I gave a presentation about the “virtues of markdown [4]” to writing documentation. It was a demonstration of how the Doctrine project generates beautiful, structured documentation from simple text files with no markup. They have an own system which parses text files into structures to build indexes and tables of contents so not only can the document be rendered into beautiful HTML (or PDF), but also have navigation. This was wonderful except for the fact that we have to again build and maintain the system in Zikula since they have sort of pieced together their own complex solution from a number of libraries.

After much research, and recommendations from the Doctrine project [5], we found the Sphinx project [6] which passes restructuredText [7] into structures to generate beautiful, navigable, and search-able documentation. Now we can just get on with writing documentation and leave the rest up to Sphinx. We get this functionality for free from a well maintained and long standing project who's core focus is documentation and nothing else.

Since time is limited, and in an open source project, time, people and resources are never enough, we have to do things in the most efficient manner. We have to deliver what our users need in a timely fashion. This means in our core offering and our infrastructure, we should not be afraid of stuff “invented elsewhere”.

Share This [8] | Print [9]


(The URL to TrackBack this entry is:,1-74). If your blog does not support Trackbacks you can manually add your trackback by using this form [10].

You don't have permission to e-mail this story - please login