Table of Contents
What is Drupyx ?
Drupyx is the code name for the DRUpal for PYthon eXperiment.
In terms of features, it aims at identifying the key defining points of the Drupal Developer eXperience (DX) and implementing a CMS/Framework with similar - though not identical - DX on top of Python.
Unlike the earlier Drupy efforts by Brendon Crawford, the goal is *not* to build a line-for-line port by using PHP-to-Python port of Drupal (Drupy 1), or even a close remake on top of Django (Drupy 2). Even if the project ever reaches actual usability for actual web site projects, it will not offer an API identical to Drupal, which would be a rather pointless endeavour anyway, as has already been explained elsewhere.
The goals for Drupyx are different:
- To understand the unformulated assumptions done when creating and evolving Drupal.
- Because PHP is just so simple and undemanding, the large community building Drupal over the course of years has been working in a single and simple mental model, basically that of a vast flat namespace with tons of global scope functions, globals, and constants. Python is utterly different, and rethinking Drupal in its terms helps to better understand what these assumptions are
- Because Drupal, like most PHP applications, is written as a “script”, without any long-term process, its code is permeated with optimizations specific to that execution model, which actually have very little to do with the actual logic of its framework and most to do with its execution model. Here again, with WSGI, Python is strikingly different and allows us to challenge these assumptions.
- To understand Drupal better. You may be surprised, since OSInet has been developing, teaching, and consulting for Drupal since 2005, and has helped build or repair some reference french Drupal sites, but all the same, we were not there in the beginning, and that knowledge has been acquired on an existing platform, likely skipping some points of lesser interest as they “just worked”. By having to rethink and rewrite everything from scratch, we want to make sure no feature is left unexplored, and provide even improved Drupal developer training
- To reach a sufficient degree of Python-fu. OSInet has long been a PHP-only shop (OK, with a touch of Ruby), but remaining stuck with one language is a sure way to freeze intellectually. Hopefully, building such a project will require enough Python knowledge and practice to be acquired, while not messing with other projects already managed by Python knights during the learning process.
Given the goals of Drupyx, one can probably say that the deliverables due to appear fastest are likely to be Drupal patches questioning the fundamentals of Drupal during the Drupal 8 development cycle. Next in line is probably even improved course material for our Drupal training offerings.
But when it come to actual code, it should be online in a public repository soon (still hesitating between the public OSInet repo and various alternatives like Github, Gitorious, Launchpad…), and the project will gladly accept participation, especially by volunteers with similar “learning” goals, so we can grow our knowledge together. Python experts need not apply: they would likely be annoyed by beginner bugs and unpythonic choices: after all, it is a Drupal DX project, not one more perfect Python web framework. There already is at least one of these.
Since this is a learning project, testing is being used. See the Drupyx implementation and test coverage page.