Sharing Code for Social Change
One of reasons we enjoy creating relationship management tools with Salesforce.com is the energy of the community that has grown around it. From discussion groups to monthly user group meetings to the annual Dreamforce conference, there are plenty of opportunities to learn from other nonprofits taking advantage of the same tools. What is inspiring about these forums is the willingness of everyone to share their time, ideas, and even the work itself with other organizations.
At Groundwire, we have tried to do our part to share innovations. On the CRM team, we have recently started to post the program code we write to an online community called Force.com Code Share, which was established a couple years ago by Salesforce.com for the benefit of the developer community. At the time of this writing, there are 64 projects on Code Share, all of which provide code for Salesforce under a free or open source license.
Most recently, I posted two Groundwire projects to the Code Share website. The first is the Campaign Combiner, a unique outreach tool that helps groups reach out to multiple large lists of their constituents while excluding certain people from earlier lists. The second project is Opportunity Rollup, a framework for calculating donation totals (or any revenue totals) in flexible ways for reporting and outreach. You may also have seen our recent blog post about the Groundwire Auctions package, another project freely available on Code Share.
We Don’t Need No Stinking Intellectual Property
Sharing is rewarding, but it isn’t always easy to get started. One barrier to overcome is the tendency to want to retain ownership to your stuff. Thankfully, my boss isn’t holding back. “I am happy to share anything we create here,” says Dave Manelski, CRM Consulting Manager. “I consider it an important part of our mission.”
Giving away our tools for free has the potential to reduce our revenue or ability to recoup the cost of our innovation work, but we believe the benefits of sharing far outweigh the concerns.
Why Share Your Work?
While most people understand the value of sharing ideas at a conference, for example, they might feel that giving away their work product isn’t in the organization’s interest. But hey, if all those internet companies can give things away for free, why can’t nonprofits?
Organizations that take a longer view will appreciate the benefits of sharing their work with the community:
- Better feedback loop: I often wish that my coworkers and clients had more time to evaluate my work and suggest improvements. Like a beta testing process, sharing with the community helps you get broad feedback on your work and understand what is valuable and what isn’t.
- Higher standards: When I put the extra effort into a piece of work to get it ready to share, documenting it and making it flexible and reusable, it always gets better. By sharing, I am holding myself to a higher standard that using it internally.
- Greater reach and impact: Groundwire is part of a movement working for social change, and we strive to grow our reach beyond the capacity of our staff. When other organizations use our code or products, we know that we are having greater impact.
- Sharing makes you popular: Let’s be honest, sharing your work can only help your image in the community. We have found that this quickly pays of in terms of name recognition and goodwill.
Doing Sharing Right
The biggest barrier to sharing, it turns out, is the time it takes to do it right. Tools released to the community without documentation and attention to usability won’t get as much use as they could.
What makes a successful sharing effort? Whether you are sharing code for Salesforce or any other technology asset, give some thought to preparing it for sharing. Design for flexibility, so that the work you share is easy for others to use or adapt for their own needs.
Document your work, including overview information that answers the question “Why would I use this?” Create a brief video demo to generate excitement. Provide configuration instructions, and make it easy to get started. When sharing Salesforce code, for example, we include a link to an AppExchange package, making it easier for another organization to install the tools directly into Salesforce.
Beating Back the Lawyers
One last objection you might hear, just as you get ready to share your work, is that there might be legal issues to consider. You certainly wouldn’t want to hire a lawyer to write the long version of the mantra, “This work is provided AS IS.” Fortunately, this work has been done – and shared with the world! See the Free Software Foundation or Open Source Initiative websites for ideas.
Choose a public license for your work, and include a notice about it at the top of your files. For software, good choices are GNU GPL or BSD. For documentation, white papers, or other written work products, consider a Creative Commons license. By including a copyright notice and license with your files, you will retain some rights, such as the right to be acknowledged when others use your work.
Coming Soon to a Nonprofit Near You
Ultimately, our goal in sharing is to get community members involved in our projects – nonprofit users to review our tools, other consultants to suggest improvements, and other Force.com developers to contribute more of their own code. With a little extra effort, we expect that Code Share will pay off with steady improvements to our tools over time, and with increased effectiveness for the organizations we serve.
In the coming months, look out for several more nonprofit-focused projects on the Groundwire’s Code Share page. We are working on tools for processing online payments, and will continue to post improvements to our existing projects.