Why I Contributed To Easy Digital Downloads, What I Learned, & Why You Should, Too

Easy Digital Downloads

At the risk of sounding like a marketer rather than a fan and contributor of the plugin, Easy Digital Downloads is a free plugin for WordPress that makes it exceptionally easy to sell digital products through your WordPress-based site.

Though it’s available for download from the WordPress Plugins Repository, Pippin – the lead developer behind the plugin – open sourced the plugin on GitHub in order to get other developers involved.

This past weekend, I was able to contribute a couple of fixes. In light in the whole plugin conversion that’s going on within the WordPress Developer Community, I found several points worth mentioning with regards to getting involved with Easy Digital Downloads.

1. Easy Digital Downloads

Easy Digital Downloads Dashboard

One of the challenges of selling products through WordPress is not only having to figure out which payment gateway to use, but which plugin to use as well – there are a lot of choices.

Some options are free, some require payment, others are limited to a subset of payment gateways, etc. The truth is, there are a lot of good options. The thing I dig about Easy Digital Downloads is the add-on model, the variety of gateways and options that it includes out-of-the-box, and the contributors on GitHub.

2. Learning via Open Source

Easy Digital Downloads on GitHub

One of the things that I dig about WordPress is its open source nature. At the same time, it’s harder to contribute to other developer’s work – especially with plugins – with the way that the plugin repository is organized.

Though each plugin offers its own support forum, users often leave comments on the developer’s blog rather than in the forum. Case in point.

There’s also no easy way to track and file bugs, feature requests, documentation, and so on. As such, it makes the whole development process feel a bit diconnected.

Though Easy Digital Downloads is available in the WordPress Plugins Repository, its primary branch (or trunk, or location, or whatever nerdy term you want to use) of development actually occurs on GitHub.

A Lesson on Security

This past weekend, I submitted a pull request that resolved a problem with images being uploading into the Easy Digital Download products page.

The problem was that once the image was uploaded, WordPress rendered a broken image despite the fact that the file was uploaded to the proper location.

The short of it is that the rules of the htaccess file were a bit too strict so I provided something that would prevent users from snooping around, but still allowed requests from browser clients.

Shortly after my contribution, Pippin commented on the ticket:

I’ve modifying your changes slightly. Now only one .htaccess files is created as multiple files is unneeded and a potential security flaw, as pointed out in issue #260.

Had I not gotten involved on this ticket, I wouldn’t have learned about that particular security issue.

Now, a team of us have improved the core product and I’ve learned something that I likely would’ve learned the hard way and that I can bring back to some of my other work.

3. An Opportunity For WordPress Plugins Everywhere

Obviously, this is nothing but an overview of my experience with contributing a couple of patches to the core plugin, but I still see this as an opportunity for many WordPress plugins: open sourcing the work on GitHub can benefit others everywhere in that it provides a higher quality product through:

  • A team of people contributing to the project
  • A much easier way to track issues, documentation, and so on
  • The chance to learn from others more experienced than you in a given field
  • Code reviews, critiques, and suggestions that ultimately make you a better WordPress developer

Of course, this does come at an expense: As the lead developer, you’re responsible for maintaining the overall vision of your work.

Speaking from personal experience, some users could submit pull requests that may offer nice features but ultimately don’t fit the ultimate goal of your project. Sometimes, this isn’t such a big deal, but if it’s a large pull request, you’re basically telling a person you don’t want their hard work. Depending on your personality, this isn’t always easy.

You’re also having to maintaining two repositories – one in GitHub for other developers and the Subversion repository for the plugin hosted on WordPress. It does offer a bit of overhead.

Nonetheless, my overall experience with this has me mulling over if I want to bring all of my plugins over to GitHub.

4. Contribute

Easy Digital Downloads Open Issues

If you’re looking to become a better WordPress Developer, familiarize yourself with GitHub, learn how software used by tens of thousands of people are used, or just wanting to help build out a plugin, browse the issues on Easy Digital Downloads.

If you see one that looks easy enough for you to fix, then fork it, supply a fix, and issue a pull request. It’s that easy and you’ll be learning a bit a long the way.

One of the things that I always tell aspiring developers to do is to get involved with an open source project to see how they like it. If nothing else, perhaps they – or you – will find that this isn’t actually something worth pursuing as far as a career or a hobby.

Then again, who knows – you may really dig it. And in the process, you end up helping someone else continue to do good work with one of their primary projects.

10 Replies to “Why I Contributed To Easy Digital Downloads, What I Learned, & Why You Should, Too”

  1. Interesting points re developing and open source projects-thanks.
    However I am not a fan of EasyDigitalDownloads plugin. When I tried it, it seemed to have a limited set of free features and instead highlighted commercial plugins that are not free so I am disappointed with that. It seems that to get useful features you have to buy other plugins and so has profit at the core and not Open source developing in my opinion.
    Best wishes

    1. One of the key things that I (and the other devs) kept in mind while building the plugin was the weight. I’ve worked with every ecommerce plugin out there, even the small ones, and the thing that always irritated me was their weight. They were always so heavy on resources, features, etc. I wanted my plugin to be extremely lightweight.

      I would love to hear what features you felt were lacking, or that you felt should be included as part of the core plugin instead of an add-on.

      When deciding to build a feature into the core or as an add-on, I usually think about it this way: will 80% of users use it, or likely make use of it? Great, put it in core. If the number is significantly less than that, it becomes an add-on. Obviously this is not always the case, but most of the time it is. For example, there was no reason to include the Stripe payment gateway in core because only users in the US could use it.

      I will also openly admit that one of the goals of the premium add-ons is to generate a revenue stream, and the truth of the matter there is that in order to do that, you (developers in general) must create enough add-ons to peak the interest of enough users.

    2. Richard – thanks for the comment. I think you bring up some interesting points.

      First, like Pippin, I’m curious to know which features were missing that made it feel limited. IMHO, the plugin offers some solid features at its core that many of the other plugins don’t (such as the ability to integrate with so many international gateways so easily).

      Secondly, you mention:

      It seems that to get useful features you have to buy other plugins and so has profit at the core and not Open source developing in my opinion.

      My question for here is that are you saying open source should be synonymous with free? I’m genuinely asking – this isn’t a loaded question :).

      Anyway, getting feedback like this is always valuable. Just curious more about some of your thoughts.

  2. I like the idea of using github to facilitate collaboration with the general community on plugin development, partially because I’m more comfortable with git than I am with SVN, and am more likely to really actively keep up with a plugin that way.

    It might be nice if there was a more standard way to announce that the plugin is actively developed on github – or at least if we took the way Easy Digital Downloads did it (Follow this on github (link) in the description of the readme) as a standard, and people could expect that if a plugin IS on github, it’s announced there.

  3. Great round-up of your learnings and the process, Tom. I’m really interested to follow this, and jump in if I can :)

    Also, I wanted to respond a little to Richard’s comment:

    It seems that to get useful features you have to buy other plugins and so has profit at the core and not Open source developing in my opinion.

    Open Source and profit are not mutually exclusive. Automattic run WordPress.com for profit, on Open Source software, and this also allows them to contribute significant time and development back to the WordPress application on WordPress.org.

    The same applies here. A revenue model for Easy Digital Downloads means that if add-ons do well, that also essentially funds the development of the free core plugin.

    People too often think Open Source == Free. Open Source is fantastic, and profit strategies linked with it allow it to continue while developers also get to eat.

Leave a Reply