Contributing back to Drupal

I've met several Drupal companies lately and am finding it hard to believe that so many companies don't contribute back. When asked, most of them express how much they'd like to contribute back to the community, but simply don't know how to make it work financially. They feel that they don't yet have the time or resources. In other words, while they have an objective, they've consistently failed to translate it into an executable strategy. An objective without strategy, or a strategy without execution remains a dream.

At the end of the day, using cost as a reason to not to engage in community activities isn't sufficient justification, because there are also costs in not engaging in the community. Think about all the things you could do for the community: contribute to module development, improve documentation, help organize a local meet-up, or take part in a code sprint. Then, think about all the things the community can do for you: provide feedback (i.e. your employees get free training), confer visibility and credibility (i.e. your company gets extra sales), impart a sense of "something larger" (i.e. your business is informed by a strategic vision). It's fun and rewarding to work closely with the smartest people in the Drupal community (i.e. it helps employee retention). Simply put, the more you give back, the more you get back.

For many of these companies, Open Source and online communities are still new -- perhaps that's why some of them are still stuck in the "standard mode of operation". It may only take a little creative thinking to begin giving back to the Drupal project in a cost-effective way.

One strategy that I've seen some companies use, is to offer all your customers the option to pay an extra 15% that is then invested back into the Drupal community. Make it a line item on your invoice, and use your customer proposal to explain (i) the value your customers receive from other contributors, and (ii) the positive impact community investment has on reducing risk, increasing maintainability, and providing long term support. In other words, make the business case for the community ROI.

That's just one example, but I'm sure there are many more. Do you have your own example? Please share it in the comments.

I understand your reasoning, but like you say yourself, maintaining modules costs time. Maintaining multiple modules costs a lot of time. If you release a module on drupal.org every time you write one (supposing the customer agrees) the time you will need to spend on maintenance is often more than you can spare.

Most companies aren't visionary, they are make-a-buck-anyway-you-can operations. I'm not sure what is going to change that. That would be like asking to change human nature---you're always going to have your givers and your takers. The givers understand the larger picture, the takers don't.

There are some companies on the fence, though. I think it's important just to advertise how the whole free/open source dynamic works. Many of them just don't get it, yet. Keep encouraging them and keep advertising how important it is to contribute to the project on drupal.org. It will sink in to a few of them.

Most companies aren't visionary, they are make-a-buck-anyway-you-can operations.

Mmmmm... Sounds like lunch! "I have a bridge in Brooklyn that you'd be stupid not to buy a piece of!"

Keep encouraging them and keep advertising how important it is to contribute to the project on drupal.org.

Or just let the dumb and outdated die out. If they aren't giving back the chance is they're selling garbage anyway, so why don't we just ignore them and focus on strengthening the community of developers and shops that are giving back as much as possible?

IMO- either way more of the people using the software will be giving back in a relatively short period.

I really recognize this behaviour. We in Orange Bus have been there for quite some while now, using Drupal and other open source projects without contributing anything back to the communities.

We have however in the past few months made some major changes in our vision and are about to involve our self in the communities and contributing back with modules and documentation. I really look forward to this :)

But to tell you the truth, when I started freelancing a few months back I was (and I still am) more concerned about not getting into the red. I thought about getting at least a Drupal Association organizational membership (I'm already contributing as a personal member) but whilst drowning in work that thought just faded away.

So I have to thank you, Dries, for putting this back on my table and I'll surely work out some plan on how to give something back. At least a little bit until my income has steadied.

I'm not so sure an optional extra of 15% as mentioned would work well with customers. Needless to say times are getting harder (as it's always been ;-) ), money is almost always an issue... I'm thinking of revenue sharing instead, donating some fixed part of my Drupal related profit...

The things we see is when we do Drupal module development, it involves integrating Drupal with some legacy system or database - and this simply is not applicable for contributing back to the community.

And even though some of the ideas might be transformed into a generic module, they will still need to be re-worked before they're ready to be rolled as a module.

Having your customer voluntary sponsor the community looks somewhat hard to sell, but I like the idea.

RE: "The things we see is when we do Drupal module development, it involves integrating Drupal with some legacy system or database - and this simply is not applicable for contributing back to the community."

In the form of code, probably not -- or at least not code that ever makes it out of the sandbox.

But in the form of a case study/lessons learned writeup (that could probably be distilled from your development notes); that would be a great contribution.

As someone with quite a bit of experience selling software and serving clients my instincts tell me that it's not a good idea to put an extra line item on the invoice with an additional charge so that these companies can give back to the community.

Yes, I think that Drupal dev shops should contribute back to the community. At the very least they should join the Drupal Association.

What I think these shops should do is build the community reinvestment adder into the cost of their overall proposal without adding a separate line item. In this economy I think that 5%-10% is reasonable.

I for the life of me can't seem to grasp how giving back nothing to the community has any benefits at all for a company. To use one small example of how we, and many other Drupal firms, give back on a daily basis: we submit any changes we make to contrib modules as patches. This doesn't really take any time at all--we have to do the patching to make something work as we want-- and the benefits to our firm include (hopefully) the patch getting accepted which means it saves us the time of patching after any updates or for any new install, it raises our profile as a company within the community (and in a community of experts it seems like there's no better way to earn referrals), and it can introduce us to developers who might partner with us or whom we might be able to hire.

Companies that don't give back really have their heads up there... err, I mean in the sand. There's a reason they're choosing an Open Source CMS as their platform, and if they're not actively involved they're not seeing the whole picture. Our small firm went from 2 to 11 people in 9 months, thanks in no small part to our involvement in the community. In fact, just about all of our clients have come through the Drupal or related communities-> trainings, issue queues, referrals from other Drupal devs or shops, Drupal meetups, DrupalCamps, DrupalCon, etc.

Whatever... it just means more work and growth for firms like ours, which leads to more giving back, which leads to more growth, etc.

This is an ecosystem, and if you can't learn how to exist within it you are going to become extinct eventually.

Contributing back to the community provides 'intangible benefits' and any programmer who feels underpaid or overworked or who has mouths to feed may value that less. It is their perfect right to use free software in this way, and if they are criticised then the software is not REALLY free, but comes with a moral obligation. In any case without such users Drupal would be the best kept secret in software.

Other people get their payoff from the feeling of having participated in a larger community than their immediate social or family circle. In my view, this wider perspective is more enlightened. But I don't expect anyone to care what I think.

Making the paradoxical argument that giving is receiving is equivalent to making a case for the religious law of Karma. Let each Drupaller follow his or her own nature - not that we can stop them.

As you mention, this is extremely important and while it can be a challenge at times when fighting with budgets and deadlines, it's critical to make it a priority and follow through on it. It helps Drupal and that in turn helps you back. I would argue that for a Drupal services company and it's customers it brings a ten-fold return on the value and time through improvements to the primary tool we use to run our businesses.

Here is a short outline of some of the ways this can be accomplished (and what we do at Gravitek Labs:)

Code support

Financial support

Community involvement

Make these a part of your business processes

Code support:

10-20% time for employees to work on whatever Drupal itch they have to scratch.

Write custom code "the Drupal way" from the beginning so that it can be contributed back to the community.

Explain the value of writing code the Drupal way and contributing it back to your potential customers during the proposal process (it will probably help you land the job as well.)

Write and submit patches for bugs/issues you find and post them right away.

Write it into your proposal that you will build the site and custom code in a way that your work can be contributed back and that they will be credited as sponsoring that work.

Allow your developers to spend a little time every day on issue queues, patches, etc., and make it part of their job description.

Communicate with your client about these things from the beginning and keep them in the loop about what you are doing/have done.

Take a little extra time when you launch a project to write some documentation and post up your custom modules on Drupal.org.

One final idea or suggestion:
Why don't we get together and fund the hiring of some of the key Drupal developers to work on Drupal full time. I assume some fellow Drupalers like chx, dww, merlinofchaos, webchick, etc., might like to have Drupal be their full time day jobs. If one event like Drupalcon can raise $400k+ we ought to be able to raise a similar amount (20-30 drupal companies @ $5k-$15k/year) to hire 3-5 Drupal developers.

Is this a crazy or unrealistic idea? Would anyone else contribute towards something like this? We would pledge $10k+/yr towards making this happen.

fund the hiring of some of the key Drupal developers to work on Drupal full time - Steve Dondley and Karoly Negyesi have been discussing this, and in addition to Agaric Design Collective kicking in to support Drupal in this way (along with other donations, code, and meetups) a nonprofit I helped start, People Who Give a Damn, is available to take tax-deductible contributions for exactly that purpose of aggregating donations for core development.

(I am disconcerted that despite so many of our leading lights asking for modest donations for the core sprint that I'm not sure it made the $7K, but I still believe that Drupal will lead open source free software in community funded code ... and bury proprietary models for good.)

I have to agree with Matthew a couple of comments above - everyone contributes in their own unique way. Whether they contribute code or modules, or they simply blog about ways of using and customising Drupal, as I sometimes do.

It's obvious that many of the long-time Drupal commenters feel that everyone should be investing time and code and whatever else, but how easy is that to do?

The handbook pages on learning Drupal are wordy and not particularly user-friendly. Where are the accessible guides, the "hello world" type, how to create a module in 5 minutes tutorials?

I recently contacted the maintainer of a module to see how I could assist in its development, but have not received any response. It's things like this that put people off contributing.

Not contributing back changes, fixes, and improvements to Drupal core and contributed modules harms your client.

Your client is left alone with an almost unmaintainable Drupal site, which in most cases can only be updated or upgraded by the original service provider, who may or may not documented all modifications.

Your client is completely lost in space if the original service provider is unavailable (for any reason).

Your client has hard times to get further support from the community, because responses to support requests as well as handbook pages no longer match to the stuff that happens on your client's site.

Your client most probably would not sign this contract, if he would know above implications and he is unsure whether you are contributing back.

So, actually, this should work the other way around:

We should advise end-customers to require their service providers to contribute back. It is in their own interest to invest in a sustainable solution.

<advertisement>Journal module's next official release ships with a new feature that allows to track changes/modifications/patches to modules on-site (and linking them to drupal.org issues).
</advertisement>

This is definitely a wonderful blog post! Totally agree, there is no point stratergising something that is not executed. This is a challenge that all of us have on a day to day life, we wish to do so many things, but end up doing very little.

Any one who has truly experienced the community would automatically contribute back to it. May not necessarily be a module, could be support, or participating in Drupal meets within Local groups or just spreading the Drupal spirit.

Giving back to the community is a financial no-brainer for where I work; rather, the difficulty is in setting aside time to establish yourself as sufficiently trustworthy in the community that you can contribute even the shortest line of code.

Being a blunt devil's advocate for a moment - I'm not personally as critical as this, but I can imagine a lot of companies out there could well be - the patch submission and review system is just arcane enough to be offputting, unless you've had experience of the way that specifically similar open-source projects work; and applying for your own CVS account involves the gradual learning over time of the equivalent of a masonic handshake that can turn you into one of the elect.

I appreciate it's intended to enforce a meritocracy, where good coding earns you the privilege to do more in the community, but a contributing company with an (internal) track record of good code might wrinkle their brow at the notion that they're suddenly meant to consider it a privilege to be able to share their code for free on drupal.org. And if it ain't on the motherlode, it might as well be hidden in your desk drawer as far as findability is concerned!

But I don't know what the solution is other than CVS anarchy, which would help nobody. A separate (and distributed i.e. unhosted) repository at contrib.drupal.org , that has traffic funneled to it from the drupal.org projects?

(Documentation and tutorials are another area where companies can contribute: one about which I'm much more optimistic, and one where we're hoping to do so very soon, once our internal processes get into gear.)

I'm always encouraging my company to do things with drupal and I hope we get this a relaunch from Typo3 to Drupal managed. There is already a small project running on Drupal and I use free times here to help out at least in the forums.

When we come to the development for the relaunch I will also try to contribute back. It should be understood that anything you give back can only be advantage for yourself.

creating patches will give core and module maintainers / developers the time to build new features

helping in forums will spread knowledge enabling you to find experienced drupal workers at a time

another thing that might not be known is giving back knowledge in form of tutorials, showcases or for example install profiles. Especially for the install profiles I really would like to see more contributions. Would make many peoples life easier.

This advice is up there with 'eat your veggies', 'be more green', and all other be/do good stuff.

Financial justification is a cop out, so get creative and figure out more ways to engage them. CVS obstacle? Documentation team participation obstacle? Just telling people to be/do good doesn't really go a long way to making it happen. Address known real and perceived obstacles and speed bumps.

Contributing to the Drupal Project and the Drupal Community are well ingrained into our process now, and we would be happy to talk to any Drupal professional who would like more information on the hows and the whys of what we do.

We are giving our internal developers targets to become module maintainers or core committers by December 09.

As part of the project we have already supplied patches to the install profile api modules, core Drupal for migrations and a few other contrib modules. We are in the early stages of the build out but we feel it's important to be as big a part of the community as possible. We do this because we're investing in Drupal and to help us succeed we need Drupal to succeed. We have historically payed internal developers to improve our own home brew cms, that will continue but the cms will be Drupal.

I currently operate 5 websites, all of which are powered by open source CMS programs, unfortunately none of them are Drupal because of the lack of contributions. I do however believe in open source and as such I give back to the community even though I cannot develop PHP one bit. 4 of my websites are ran sing Joomla, when I need an extension for it, while finding free ones is great, I have no problems paying for them because I know that the time to develop the extension costs money. Furthermore, I also give back 10% of my website's income to the community through donation and the like. While Joomla is more resource and bandwidth intensive, the main reason why I have yet to make use of Drupal is for the fact that there is no directory module available. I keep seeing sites that have hand coded modules as directories on their site, and if asked about how they did it, their simple response is months of coding and refuse to go into any more details. I have found that it is people like this that do not belong engaged in the open source communities; especially when they are "supporting" the community and making money in the process.

If you are making money through an open sourced item such as templates, module directories, module creation and the like, it should only be fair that yo give something back to the community albeit in the form of free items or donations. Refusal to do so should mean that they wold get dragged into the middle of the street and stoned with PSII hard drives (of course they may be a bit too heavy to throw more then one).

I've found that day-to-day contributions can be a distraction that's hard to bear with clients that don't want to bear it.

Strategy #1: Drupal Tax
The way I've worked it at WorkHabit is this: we offer clients an option to pick up 10 or 20 (4 to 8) hours a week. I will even offer my clients that we'll focus 1/2 the day on pushing their code forward into the community, so they're guaranteed value. This part has helped.

Some do pay the "Drupal tax" (that's what one client called it) - generally the larger, wiser, experienced, harder-to-find long term clients - but I'd say 3/4 of them don't, and in the latter part of this year as we've gone into more turbulent economic times, none have. At the beginning of summer, I tried to get the whole company working on a 4 day workweek, with a fifth day for Drupal and other Open Source projects, but lobbying for volunteerism didn't prove to be particularly tenable.

Strategy #2: Micro-sponsorship
I'm still looking for a model, especially for smaller clients (and I think a lot of Drupal companies are working with smaller clients: we have the very good grace of having worked with many larger ones). I'm going to continue to experiment, but what's worked here well is kicking in 100, 200, or 300 bucks from smaller deals. We did that with the watchdog patch and quite a few others, and it got stuff written that people wouldn't have otherwise got to. I think this is a bare minimum for shops that work in Drupal: kick in a little cash man!

Strategy #3: Specific module sponsorship
The other strategy, and it's been more successful, is to ask clients to Open Source specific work. We then match a percentage of time on our end at the end of the project (built into the budget), and hammer it out. That's how we got the import-aws module out the door (thanks to our great client: PeopleJam). That thing is actually a bit of a monster, and you should definitely look at it (it's really a fairly generic web service to node mapping tool that could be used with a LOT of different services - we ended up spending a few weeks after the project to get it up to date).

Strategy #4
Of course, being a member of the Drupal association is a must. If you're not, start. If you don't know what I'm talking about, look it up.

I'm sure there are 20 other ways, but those have worked well for me. I'd love to see some of this built into the redesigned Drupal site (projects waiting sponsorship). I imagine that many of the smaller Drupal companies would rather write small checks than make commitments of their time - it's a lot less to think about. Making project sponsorship really overt and visible might lead to connecting client pain to specific work sponsorship more easily. Just a thought.

All the best Dries. Good post as usual, and congratulations on the second! It's awesome!