I am using Drupal for my CMS.

I have significant functionality that I need to develop in addition to the Drupal functionality. I have two options:
1. Build a Drupal module
2. Build a separate web app alongside Drupal

What's better? Interested in opinions.

If I build a separate web app, I can use the framework of my choice, and isolate the relevant database functionality. However, I have to ensure the same look & feel and authentication/authorization, that I have to build.

I was not sure whether creating a Drupal module that will have a big code base as a separate module was the best idea. Is there any circumstance when not building a drupal module and building a separate app is the best idea?

Any opinions/past experiences/feedback welcome.

Comments

mm167’s picture

depends on what new function u are going to build.....

say, i dont think u can build a drupal module as a Flash rtmp server,..

but for simple functions, a drupal module is a more simple way to go.

swami’s picture

If you have a complex web function, such as building, say every employee logs in, views his hierarchy in the organization, and can view his salary. HR can update his salary etc.
Basically the technology is still web based.
By simple functions, if you meant web based functionality, I understand that you suggest a Drupal module. Have I understood you correctly?
Thanks for the feedback.

vvanaparthy’s picture

I have 7 different external systems that I Integrate with in Drupal. Its always better to build a module and library of another class that you can instantiate in the module.

So basically have a .module file that handles logic or the business flow and then pull the necessary information using your class.

It worked for me, because if ure working on drupal better do it drupal way :). I know the learning curve, I have experienced it, its a pain but its worth it. There are so many things you don't have to worry if you stick with Drupal like authentication for example.

swami’s picture

For authentication & look & feel, the Drupal way does seem better at first sight. I was only worried about the system eventually growing into a massive system, in which case the module would be massive as well. I was just wondering if there are any known issues with maintaining large modules.

vvanaparthy’s picture

Yeah sustaining and maintenance have always been a challenge to any software.

If you have too much code better split it in to different includes. I have split my 4 steps Multistep form in to 4 includes so that I don't have to scroll down 4000 lines to reach the end of the page.

That way it is better readable and easier to maintain.

Another important aspect to consider is the major release of Drupal. For example with the Drupal 6 release, many of my Drupal 5 modules became obsolete. So had to make lot of modifications to the code.

So I always feel for the huge code base proper design framework is extremely important. Yes you can stick to Drupal for huge code base at least you have support here to assist you if you need help desperately.

chrisshattuck’s picture

This thread is older, but the question is still quite legitimate, so I wanted to add in some thoughts for those at a simiar crossroads.

The first question is if you should build out new functionality as a Drupal module, or as a stand-alone application which you'd then integrate with Drupal later.

After having built several of my own stand-alone systems, and then moving to building and using Drupal modules exclusively, I can give you a number of reasons why it pays off to use Drupal as a base:

  1. Maintenance is reduced significantly. If you have a stand-alone app, you have to deal with everything from authentication, to e-mail, to the database layer. Even if your application is humongous, there's still going to be a whole lot you don't have to worry about when you need to upgrade.
  2. Security vulnerabilities are going to be less common. Drupal and most of its top modules are quite secure. Security flaws can be a deal breaker, and if you're building a stand-alone app, I can guarantee that you will have more security holes than if you build your code around Drupal's APIs
  3. Team building is easier. If you've built your application on Drupal, it's going to be a lot easier to plug other people in. There's some training available to get developers up to speed to get them integrated with the process.

The second question is how do you structure such a huge module? There's a couple of ideas here that will help. One is that your module can be composed of several smaller modules. It's good practice to do draw your focus to generalization of functionality, and can be helpful when enabling / disabling modules when testing. As someone else mentioned, you can also use include files, which can improve performance if done correctly.

Upgrading can take some time, but most of the time isn't too hard, and there are automated tools to help, like Deadwood (almost fully automated conversion) and Coder (manual conversion).

So, my advice would be to go for Drupal. Coding form scratch seems easier at first, but it quickly becomes a rabbit hole that's difficult to work your way back out of.

Cheers,
Chris

Build a Module.com - The definitive video guide to Drupal development

Learn virtually any aspect of Drupal on BuildAModule, where I've recorded over 2200 video tutorials.