You are here

Open Question: Is there a non-MVC node.js framework?

Corey Pennycuff's picture
nodejs-green.png
Image from nodejs.org.

tl;dr

Is there a non-MVC node.js framework with Drupal-like plugin power and flexibility? If not, is anyone interested in working on one?

A very quick background about myself.

I have developed websites professionally with Drupal since 2004. I have worked as a freelancer as well as salaried and hourly programmer (not just with Drupal, but you get the idea). I have worked on several HA projects and have worked on large dev teams. Academically, I am currently working on a PhD in Comp Sci (already have the MS, and am 2 years in to doctorate). Why do I say this? Just to establish that I'm not a noob suffering from NIH, neither do I think that all web apps are a nail. I do, however, have experience and opinions. It doesn't mean I'm right, but it doesn't mean I'm wrong, either.

Now, down to the nitty gritty

I don't like MVC for re-usable web projects. I think MVC is fine for many things, especially stand-alone projects, but it gets messy for frameworks. A quick example is GitLabHQ, a beautiful and full-featured open source github replacement, based on Rails. GL was considered for a company project because it had so much core functionality in place. The problem, though, was in expanding the functionality. In order to get it to do what was needed for the company, extensive hacking of core files was necessary. That, coupled with GL's fast rollout schedule and history of regression issues made it dangerous for us to choose. Can you imagine the headache of having to re-integrate changes every single month (even with GIT)? At best, it can only be described as a brittle approach for a complex project like this. This is a single example of an MVC project. It's great if the single project does everything that you need, but otherwise, your code gets very messy very quickly!

What I am looking for is a plugin-type of architecture for node.js. I admit it: Drupal spoiled me. Drupal's philosophy was that if you needed to modify its behavior and had to hack core files to do so, then Drupal itself was broken. If you found one of these situations with either a core or contrib module (plugin), then you should file a bug report so that the appropriate access points (hooks) could be integrated. Over the years, the pursuit of this philosophy has matured Drupal into a powerful system for many things. Drupal, however, it is still written in PHP, and it has its limits. That being said, I can have a highly functional site in 10 minutes with Drupal, but node.js (express), Django, Rails, etc. all seem to take forever just to get something of minimal functional equivalence.

I am not looking to translate Drupal into node.js (I actually disagree with some of D's architecture, and some of its paradigms are inappropriate for node), but I am looking for a similar philosophy ("Don't hack core!"). Does anyone here know of a robust and powerful framework that will allow for massive customization without hacking the core (or contrib) files? If not, is anyone interested in working on one?

P.S - I've actually started a project on my own, just as an exercise to learning node, but I'm at the point where I know enough to either continue with my own work or use someone else's. I just find it repulsive to have to hack a project's files in order to add custom functionality.

Tags: