Hi Everybody,

I need some honest advice.

Every time I get somewhere in Drupal, it seems like I take 2 steps back.

I'm having a very hard time understanding if I should use Drupal, or just code up an entire site myself using the LAMP stack.

Drupal seems to have everything you need... until you realize that all the modules you require either 1) aren't released for D6, or 2) don't do *quite* what you need them to.

I have a very specific spec to follow for my site. I keep thinking Drupal is going to save me time, but I have spent a few weeks now learning it, playing with modules and trying to get it to do what is spelled out in my design spec.

It seems I can get somewhere (like having user profiles), but they don't contain what I want them to. They display in a poor layout and they don't have the features I need.

What's a person to do? Is it *really* worth putting all the time and effort into trying to set up Drupal and its modules, or is it just faster to code a site up manually?

I'm a professional software developer who doesn't have a lot of LAMP experience, but can program in C++ and Java just fine. I'm struggling because I was seeing Drupal as a speedy way to get a social networking site up and running, since it would seem that it can handle a lot of the "plumbing." On closer look, the plumbing via the modules is like having a kitchen faucet, but no hot water at it. A shower with only a drain and no showerhead.

A lot of things I need for my site are missing from the modules, or the modules aren't released for 6.

In all honesty, even though I have Drupal 6 up and running, have enabled several modules, have custom coded some PHP, etc.... here I am right back here at the "is Drupal right for me?" area of the forum.

In all honesty, are there any coders out there who have *specific* sites to develop (with specifications defined) that have found Drupal to save them any time over just developing the site from scratch? Has anyone had any luck getting Drupal to do what is in their specs?

If so, where do I begin (again)?

Should I scrap Drupal and just develop from scratch?

I'm feeling very worried that Drupal is wasting more time than it saves at this point. Any input would be greatly appreciated.

Comments

dman’s picture

These are understandable growing pains.
I'll say I've hand-coded a dozen CMS-style projects in Perl, Java, ASP, JADE and PHP and I would rather use $ANY_CMS_EXCEPT_VIGNETTE to avoid making another user/session management framework from scratch.

The pattern with Drupal, for a long time for me, was 1 hour figuring out what I wanted, 2 hours figuring out how to do it and finding the place (or almost-right contrib module) to make the change, 10 minutes to MAKE THE CHANGE (and sometimes an hour to feed back the patch)
Point being that many things are actually easy once you know how to find where to look. But if you think you know what you are doing, especially if you come from any other coding style, there's a lot of frustration. The payoff and relief is still worth it once you get there though.
Clearly, one problem is having strong preconceptions on exactly how it should work before groking how it can already work.
The plumbing is there, yes. And you do have to do some assembly, but the parts do actually all plug together well usually.

I can't tell what exactly you want, but I'll say that in 3 years I've never found anything I couldn't do within Drupal, and do in a nice, drupally way. I still open up code, look at it and smile - which is something I can't say about any other codebase I've had to work with.

I suspect that profile customizations are one of the more common bugbears, as folk DO come at it with preconceptions or very fixed mock-ups in mind, and find that existing solutions don't look like they want, although the features are there. I've seen a lot of such requests/complaints in the forums. I don't do community sites, so I can't advise there.

The stock advice is to really see the power of Form API and the Theme callbacks and use it to your advantage.
I avoid Views and CCK hacking until I really need it. It's powerful, but the learning gap between what you can do through the UI (lots) and what you need to learn to manipulate that engine through code (hard) is quite severe.

The D6 module lag is an ongoing problem, but the truth is that upgrades are actually pretty easy. The thing is that the individual developers just may not need to do so, as most were created with an 'itch' to scratch for one project. And left until next time. I don't know a happy answer to this situation.

.dan.
if you are asking a question you think should be documented, please provide a link to the handbook where you think the answer should be found.
| http://www.coders.co.nz/ |

styro’s picture

can actually get in the way of quickly and easily coding something on top of a platform (eg a framework or system) if they aren't written with that platform in mind. If platform agnostic specs are required, then (in my opinion) they need to be focused on business level requirements rather than nitty gritty specifics.

Otherwise there will probably be things asked for that fight against the platforms preferred way of working. When there are different ways of achieving the same business requirements, going with the method that suits the platform is generally the better choice.

And to write detailed specific specs for something on top of a particular platform, you'd probably want to understand the pros and cons plus the architecture/philosophy of that platform.

Back to Drupal and one of your questions that Dan didn't address...

It seems I can get somewhere (like having user profiles), but they don't contain what I want them to. They display in a poor layout and they don't have the features I need.

You can easily extend profiles to have what ever you like, and to render however you'd like them to.

Profiles have hook to change or rearrange the profile data. There are overridable templates for rendering profiles, as well as hooks for altering any form in Drupal and you can hook into any user operations as well.

Drupal is nothing if not extensible.

I'm feeling very worried that Drupal is wasting more time than it saves at this point. Any input would be greatly appreciated.

It might feel like that at this point, but that is only because you are at the beginning of a new learning curve that you can't quite see where it goes yet. It does get better, and you will get to the point where you won't want to code anything from scratch again. These comments apply to any web framework you are about to start learning :)

I know I'd rather be in charge of maintaining/securing/upgrading the small amount of glue/tweak code I add to a Drupal site than all of the other code I'd reinvent the wheel for if I wrote everything myself. A typical mature platform like Drupal has solved or worked around dozens or hundreds of little security or user management lessons you don't want to have to relearn yourself. And many that are left are probably already being worked on by someone else. The network effect of a large development community is not something to be overlooked.

I'm not necessarily advocating for Drupal specifically - just that you need to think very hard about why you'd want to code from scratch. And if you want something a little lower level than Drupal, using another web platform (eg Symphony or Django etc etc) is a better approach than coding from scratch.

--
Anton

gforce301’s picture

I started using drupal right when 4.7 came out. We were looking for a CMS framework, at the company I was with at the time, that was powerful and flexible. We decided on drupal after testing quite a few others. Every site I did there (about 60 in 2 years time) had a specific set of functionality. We did every one of them in drupal.

I still develop in drupal, I just work for myself now. All of the sites I do have specific requirements that differ from other sites. Maybe not large differences, but differences none the less. So to answer your one question, yes, I am a coder primarily and I have found drupal to save me a lot of time over developing a site from scratch.

Now the above is not to say that there was no learning curve or element of frustration while learning drupal. I remember the first 2 weeks while myself and the other developer joked every day that we were still trying to figure out the difference between a 'block' and a 'box'. And in the end we were not really joking (I never did find the 'box' configuration screen lol).

The thing about drupal is it has this vast toolbox The Drupal API (and that is just the core), and it takes some time to become familiar with what the tools do and how to use them. You can pound a nail in with a pair of pliers, but hammer works much better.

Like any coding project, developing a drupal site that is beyond the basics requires planning. I'm sure you know that. Take each piece of your design and evaluate the tools available to solve the problem. Back in the stone age when I was in school I took a class on programming languages. We wrote the same program in 6 different languages. The reason I mention this is that each language (or system) has a different way of doing things. Understanding how any particular system works is the key to leveraging it's power.

Thanks to the API, custom module development for drupal is IMHO easier than custom coding entire systems. The other nice thing about custom modules, that only your project will use, is that they do not have to apply to the vast amount of situations that a generally contributed module needs to worry about. You decide the exact use and circumstances and the rest does not matter (much like custom programming anything else).

And last but not least is the drupal community itself. Here you can ask specific questions and receive specific answers. That is a power greater than the sum of it's parts.

Just my 2 cents.

theothersully’s picture

Thank you, everyone, for taking the time to post such great responses.

You guys have really helped a lot.

I do have a pretty rigid spec due to business requirements. I had selected Drupal since it appeared to be the CMS that went about everything the "correct" (standards compliant) way. I selected a CMS thinking that it would save me a lot of time/effort in the development process. But, as you guys pointed out, I'm coming at it with a lot of training and experience in a OO C++/JAVA world developing local apps, so I'm not seeing the big picture well. I'm muddled by my prior work and the design/development processes I used to use. I'm a relic! ha ha

Your points about having the design spec agree with the platform or framework are good ones. More than one post touched on this. In my old programming days, there were nearly no limitations. If you wanted the computer to do something, you coded it and achieved the result. I'm having a hard time letting go of that philosophy, so I may still end up making a lot of my own modules. Another good point was that I am not seeing the light at the end of the learning curve. You're right. I'm expecting to be in my old comfort zone, but this is a very different development environment. Good points.

Also, I think I might have been viewing Drupal the wrong way. I was seeing it as something I could use to get maybe 90% of my site's functionality if I found the right modules and configured it properly. I kept thinking of those intro Drupal documents where it compared Drupal to a took kit, when maybe it's more of a frame I can build off of than a complete tool kit.

Maybe I need to see it more as a great user/content manager with some extra bonuses (modules), but still a package where I have to develop a large number of my own custom modules to get it to do what I need it to do for my business requirements.

It makes a lot of sense not to re-invent the wheel, especially when it comes to having my pages come out to meet standards both for html/xml, etc... and for SEO optimization.

I'm going to give it another full week of trying to basically take the core and add my own custom modules on, so it meets the specs I have to work with. Only if a module is a perfect fit (or is actually released for 6) will I activate one.

Again, thanks... I'm thinking about Drupal in a much better way now thanks to these thoughtful posts.

Michelle’s picture

Part of the frustration your having is that Drupal 6 had an unusually long lag time for contrib modules to catch up. It's getting there, but there's still a lot of modules that haven't made the leap, yet. This list is about a month out of date but it may help give you idea. Since you have a coding background, you may find it faster to port modules yourself if you need them and they aren't ready, yet. Be sure to always check their issue queue as a lot have a started port that just needs some love.

Michelle

--------------------------------------
See my Drupal articles and tutorials or come check out life in the Coulee Region.

theothersully’s picture

Good Advice, Michelle. I'll keep that in mind as I look around at D5 modules that have everything I need, but aren't updated for D6 yet.

One thing I do have is some time to invest. Taking a D5 module and upgrading it to D6 might take a while for the first one, but the later ones should come more easily.

Good thinking! :)

Michelle’s picture

Having time is good. Drupal 6 core is very nice and more and more contrib modules are being made for it every day. If you have time, I definitely reccommend starting with D6 and helping out if a module you need isn't ready. That way everyone benefits.

Michelle

--------------------------------------
See my Drupal articles and tutorials or come check out life in the Coulee Region.

juan_g’s picture

theothersully wrote:
>Drupal seems to have everything you need... until you realize that all the modules you require either 1) aren't released for D6, or 2) don't do *quite* what you need them to.

There are several possible solutions:

1. Use CCK and Views (the de facto main Drupal modules), that allow quite deep site customization without coding, and in many cases reduce the need for other modules. See for example The New York Observer's case study; they didn't like how some modules worked, so they easily built their custom solutions with CCK mainly.

2. If there is something you can't do with CCK and Views, and there is a suitable module but there is not an official Drupal 6 version of the module at this moment, look at the module issues, as Michelle has suggested on this thread. Frequently, there is already a working or almost working patch -attached to an issue- to make the upgrade.

3. If there is not yet a patch, it is often quite easy to contribute the upgrade yourself, collaborating with others on an issue of the module. Some tutorials are mentioned in the section on Converting 5.x modules to 6.x, for example by successively using the Deadwood, Schema, and Coder modules.

4. There is also the possibility, already mentioned by others on this thread, of developing your own custom modules with PHP.

And about the visual design, unless you like one of the available themes, you might develop your custom theme just by adding CSS to a starter theme such as Zen, or Genesis, or Blueprint, etc.

For many interesting details, see an IBM's intermediate/advanced, and extensive tutorial on Drupal: Using open source software to design, develop, and deploy a collaborative Web site.

On the other hand, you can see how quick can be to build a site by just using what is available out of the box (Drupal, and contributed modules and themes): Drupal Demo - Building a Small Business Site (video).

ZenCoder’s picture

But I know someone is a web developer for a university ... and he gets very specific specifications handed down from on high which are almost never available as a module ... so nearly everything is done by creating a custom module.

Myself, I shape my plans around what is already available. But I am learning that creating a custom module isn't nearly as hard as I thought it would be.

I am beginning to see that Drupal makes an excellent platform for custom code, once you take the time to study and understand it.

theothersully’s picture

I can't believe it!

After reading the links you guys put up for me in this thread, it ALL CLICKED!

I understand, conceptually, how to do my entire site using a few modules and some custom PHP. I can literally see having my site (a very complex social content site) done by the new year.

Halleluja!!! I see the light! :)

Thank you very much for taking the time to write such helpful responses. This thread could become an intermediate guide to Drupal... seriously.