2017-01-27

Ten Ways You Can Contribute To An Open Source Project

Okay, so it's really about my open source project. But that's the whole point. I don't want it to be my project. I want it to be your project too! While this article is written to specifically address contributing to longevity, much of the material here will probably apply to other projects as well.

This is a complete rewrite of the contributing page on the longevity web site. You can read it over there if you like. I've also pasted the contents below for your convenience:



How you can contribute

I’ve been working on longevity for a little over two years, more or less entirely on my own. It’s been a lot of fun, and longevity has developed into a truly excellent piece of technology. But sooner or later, longevity is going to need more community involvement if it is going to keep going.
Fortunately, there are many things that someone like yourself can do, and many of them require very little effort on your part. Here’s a list of suggestions of things you could do to help, ordered roughly from the least to most amount of effort on your part.

Try it out

This one is easy. Use it wherever you can. Now that we have a SQLite back end as well, there is really no excuse to not try it out in a simple application that requires some persistence. If you don’t have any projects that you can try it out on right away, play around with one of the many demo projects I’ve developed (demosimblsimbl-play).
Longevity wants and needs users. Don’t be afraid to give it a try!

Share your impressions

If you’ve used longevity, or even just read some of the documentation, you are in a wonderful position to give us some feedback. Please, tell us what you think! What’s good about it? What do you dislike about it? What did you find awkward or confusing? What’s missing? You would not believe how interested we are going to be to hear your feedback. Jump on the Gitter channel, or go to the user group, and share your thoughts, ask questions, just say hi, whatever. Not only does this give us good feedback, but it helps other users and potential users feel and see that there is a community here.

Tell people about us

As of now, longevity has relied almost exclusively on grass roots methods for getting the word out - blog posts, tweets, talks at meetups, and begging for mentions in Scala newsletters. So far, awareness in the framework as grown slowly but steadily. We are always looking for new ways to spread awareness, but we would be very thankful if you want to help out in our grass roots efforts. You can tweet about us, retweet our tweets and blogposts, or share in conversations. We love you for it!
If you really want to use longevity at your job, talk with the people who make the technology choices at your company. Talk to your project managers, architects, and engineers. Point them to the site, ask them to take a look. You don’t have to pressure them at all - just let them know you would be interested in using it! It’s a data point that they can use, and you may be exposing them to a technology they haven’t heard of before.

Report bugs or other problems

Please please please, if you try longevity and something goes wrong, please let us know! We have a very rigorous test suite, and we test longevity in multiple environments for every release. But there is absolutely no way that we can test ahead of time for the ways you are going to use longevity. If you find something wrong, and don’t tell us, we will never know about it. This would be extremely unfortunate, because if there are any bugs or other problems, we definitely want to fix them as quickly as possible.
If there is something in the documentation that doesn’t make sense, if something doesn’t seem to work like it’s supposed to, or if something is obviously broken, the best thing you can do is to go over to the user group and tell us about it. Of course, if you just want to submit an issue directly on GitHub, that’s fine too. Whatever you do, let us know. You are getting longevity for free, and I’ve put in a massive amount of effort to give it to you. Even if it doesn’t work out for you, you should at least give back in this small way.

Fix problems in the website

It should be clear to you by now that if you find a typo, a grammatical error, or a broken link on the longevity website, we want you to tell us about it. But if you are feeling generous, you can save us a little effort by fixing the problem yourself. No matter how small the fix, you will get to practice the process of forking and submitting a pull request. If you haven’t done this much, it’s really easy and a good skill to have. If you’ve done it often, then you already know how trivial it is to do. The documentation is on the gh-pages branch, and you can generate it locally with Jekyll.

Website design

If you have any skills in website design, you already know that my website design skills are limited. If you can help me with the layout, and the look and feel, I would really appreciate it. Just talk to me about it first. Let’s make sure your ideas work for me as well before you put too much effort into it!

Fix a bug

If you find a bug and report a bug, and we can reproduce it, then we will fix it. But if you are looking to make a strong contribution, maybe you could try to fix it yourself first! Feel free to start a discussion about the bug on Gitter or the user group. We may well have some helpful ideas about how to go about fixing it. We certainly will be willing to give you whatever support we can.

Implement a feature

We are quickly converging on what I consider a complete product. What I mean by that is, a couple more features down, and nobody will be able to say, “I’m not using longevity because it doesn’t do this!” In other words, no show-stopper missing features. Of course, there are any number of features that would still be really useful to have - just take a look at the story board!
Adding a missing a feature would make great a contribution to the project, for which we would be eternally grateful. We would be more than happy to do whatever we can to help you get started. Please write us in the user group to tell us what you have in mind, or to ask any questions about what might be good to work on.
I’ve tagged a good handful of stories as low hanging fruit on our story board. Take a look and see if there are any that strike your interest. Note that “low hanging fruit” does not necessarily mean super easy. What it really means is something more like “peripheral”. There is a pretty dense core of code in longevity, and working in that dense core will take some effort to get familiar with. The low hanging fruit issues are issues that don’t really touch that core.
Of course, we would also happily consider features that are not currently found on the board. Once again, please write to us first in the user group to see if it fits in to our project vision.

Maintain a back end

I’m currently maintaining four back ends. This means that, for certain kinds of features, I have to implement them four times before I can sign off. There is absolutely no way I can put in another back end without some help from the community. If there is a missing back end that you are interested in, you could consider becoming the implementor and maintainer for that back end. Or if there is an existing back end that you are already using, please consider becoming a maintainer for that back end, to free up some of my time.

Get your company to sponsor

Is your company the kind of company that would like seeing their logo on the website of an open source software project that exists for the greater good of all humanity? There are any number of things your company could do to becoming a longevity sponsor. Here’s an idea that works well as an example:
Does your boss say that longevity looks great, but they are worried about how it is going to perform under load? Let’s set up a joint project where we build a performance testing suite for longevity, and see how it does compared to raw database driver interactions. Your company could contribute the developer hours to the project, or they could just pay me to do the work. If any performance problems are exposed, we could extend the joint project to work on resolving the problems.
If there are any performance problems in longevity, believe me, I want to know about them, and I want to fix them. But my time and good will efforts are limited, so in the absence of any external incentives, identifying and fixing performance problems are simply two more items on a very crowded priority list. The point here is, if your boss gripes about some limitation of longevity when you ask them about using it, there are lots of creative ways to address those limitations that we can look into. Compare it to the cost of developing and maintaining the entire persistence layer for you database application! It shouldn’t take a whole lot of persuasion.

No comments:

Post a Comment