40 comments

[ 3.0 ms ] story [ 95.2 ms ] thread
Hey, I'm the author of this blog post. Hit me with questions if you got some!
TL;DR: how to turn a side project into an OSS side project: start by scratching your own itch, timebox tweaking, write a good README, hit publish. Easier than you'd think.

here's the project https://github.com/jehna/ga-lite

Nice work! I especially appreciated the emphasis on writing a good README… but I think it's missing the most crucial thing you need on top your README. That's the motivation aka why the project exists at all, why it's better than the alternatives, etc.
The differentiating qualities of the project is indeed very important. But I think it's more than okay to also say that "this is a clone of xxx I'm using to learn yyy".
Putting a bit more into the README has my preference. Often I come acros repos with “I cloned xxx with yyy”, where I have never heard of xxx. It only takes a bit more to briefly explain xxx.
i love the idea of just finishing - anything - and doing another. this is the only way to go, in any endeavor. try, fail, learn, fix. repeat.
Deadlines are a bliss. They help you to both reduce the unnecessary, but also to fail faster.

Sunken cost fallacy is a real thing even in side projects.

I think that adding a (permissive) license is the missing step from this "tutorial". If you want people to use your project you are going to need to give them permission to do so.
I agree that it's crucial to have a good license for your project to spread. But I think it's one of those things that takes a lot of mental effort when you do it the first time.

Fortunately GitHub helps you quite a lot nowadays with choosing the license for your project.

Only because so much FUD has been spread about the GPL
The GPL advocates say it is FUD, but as any BSD advocate will tell you the concerns are real. Note that GPL advocates spread FUD about the BSD license

In my experience the GPL advocates completely ignore the concerns of the BSD people. The BSD people understand the GPL concerns they either don't think they are very real world (they will acknowledge some exceptions when forced to); or more pragmatically think that the GPL: concerns are outweighed by other concerns.

You need to figure out where you stand. Calling the concerns of the other side FUD is in fact not helpful.

> Note that GPL advocates spread FUD about the BSD license. In my experience the GPL advocates completely ignore the concerns of the BSD people

Um ... people who advocate for GPL are not a uniform group.

> Calling the concerns of the other side FUD is in fact not helpful.

I fully agree with that statement, though.

You have to have a license to attract contributors. https://choosealicense.com/ and github make it easy; there's zero excuse to not have a license.

Permissive licenses attract the broadest range of contributors, so if you're looking to build a large community, they are the way to go. GPL tends to have a smaller overall, but very strong pool of contributors, so if copyleft makes sense for your technology, by all means use it.

Just use a license, please.

The chance of a personal project building a large community are quite slim regardless of the license.

Chances are a personal OSS project will only attracts a few dozen users and maybe a handful of contributors (contributing mostly small bug fixes) with the creator as the only real developer/maintainer.

There is also a good chance that the maintainer will only contribute from time to time after the initial "dev sprint", if it doesn't abandon the project all together.

Basically the bus factor for such projects is 0. If you are relying on one of them, you should be aware that you may have to maintain a fork on your own in the future.

Given this state of things, I prefer having permissive licenses (ex: MIT) on my projects. It's a way for me to give complete freedom about what you do/want to do with my piece of code (piece of code that I may have abandon but is still useful to you). You can fork it and keep the fork OSS or you can include it inside the source tree of your product and maintain it that way, the later being generally easier.

Thumbs up on licensing. This is key to the success of a project in my opinion. If a project is missing a license, that's a clear sign that I can't use it. I've even filed issues on open source projects stating that I want to help them, but I can't due to unclear licensing.
(comment deleted)
Unless you don't mind a hostile take-over don't make it too permissive though. GPL is a good license if you want good protection while still allowing people to fork, share and profit on your work.
Are there any stories/examples of MIT-licensed projects being subject to hostile take-overs?

Also if it's you are the originator of a project what's stopping you from using the GPL license but not disclosing your own source while you commercialize?

For example xamarin's fork of Cocos2D.

Or companies adding closed source features to open source software. You can't do that with GPL unless you own all the code.

The classic business plan for software is to charge per license/copy. But if you release your software for free, you have to sell something else. And anyone who come up with a good solution for this will be the next unicorn.

I was just worrying last night that I've released my side project too early, so glad to hear someone encouraging imperfect-but-usable releases. If anyone has advice on finding users, testers, and contributors besides posting on Show HN, please let me know.

https://github.com/spieglt/flyingcarpet

Wow, cool project!

You should try Reddit. It has a lot of niche communities where you could share your project.

Also Google for things someone who seeks for a project like yours would Google. That gives you a rough idea of what kind of sources people use to find tools like yours.

Also some directories list specific tools (like "awesome" lists of github). Try listing your project there. Or even starting your own "awesome" list project on GitHub :)

Thanks! Any specific subreddit recommendations besides r/golang?
Try product-specific subreddits like /r/coolgithubprojects

There are other subreddits too which are trying to find cool projects like yours.

Other approach is to write a blog post and post that to e.g. /r/opensource

Awesome, project! I can't even count how many times I needed something precisely like FlyingCarpet. Please spread the word about your project.
Please help me! I'm trying but I've gotten next to 0 feedback so far. If you have two laptops will you test it and let me know what your experience was?
This looks awesome! I'll test this later and give feedback.
This is a great guide. I followed the similar steps for https://gitignore.io

I was doing a lot of development work and going to github.com/github/gitignore to copy templates from GitHub's website to my own file system was getting tedious. What I wanted was a simple command line tool like

  gi java > .gitignore
So I built it over the course of a week while at Mammoth CA. I was on a snowboard trip so I would ride during the day and code at night. I was thankful to have a great designer (who worked at GitHub) help me design the site. And today the project is almost 5 years old and gets nearly 80,000 MAU's.
A little feedback - it seems a bit mixed up. If I put in "Node" it assumes I want suggestions for files that you'd typically ignore on a Node project. That's useful. But if I enter "Web" it gives me a list of web file types to ignore (*.html etc). Rather than assume I'm working on a web project (as it does for Node) it's doing the opposite of that, and making suggestions to ignore all the "Web" files.

Clearly this isn't a huge problem as your project is doing really well, but it jumped out at me a bit.

The history on this is that originally, templates like Web, Compressed, Audio, Video, etc... were added to ignore an entire domain's tele tapes instead of assuming that you're working on any of those types of projects. Right now, there isn't anything that differentiates the domain specific templates from a language, IDE, or operating system template. Not sure how to improve the experience off the top of my head but I'll think about it.

Good feedback.

This idea sounds like a good use for ‘choose’ [1]. It’d be a bash script that uses curl to get a list of the languages with gitignores, pipes to choose to let the user choose one, and pipes it into curl again to get the gitignore contents and sends to stdout.

[1] https://github.com/sdegutis/choose

That looks cool. Most of the time I was running into problems, I was on a remote server with no access to a GUI, but this does look like a cool integration.
Hey, thanks for the site! I use it all the time! Great tool to have!
You're welcome. Glad it's helping.
Call me old-fashioned, but the only thing necessary for turning a side project into open source is to grant anonymous access along with a license. Well, that, and either too much disposable time or a strict policy how to deal with users or contributors. Making this policy clear to your users/contributors is IMHO the most important thing - it allows you to tell people to GTFO if they disagree; after all, they already get more than they paid for.
Yep. Anything more and you’ve turned it into a side job that doesn’t pay.
On the subject of OSS projects on the side, I'm really interested in the dual licensing model - I'd like to have my code licensed under a strict copyleft license so people can see the code, but a more permissive license so businesses can use it.

Based on articles like http://www.mikeperham.com/2015/11/23/how-to-charge-for-your-... I've figured out the following:

OSS license - AGPL - I'm building web services distributed as docker containers, so AGPL makes sense because it forces businesses to buy a license even if thy just deploy an instance of the service without modification.

Commercial license - this is where I'm stuck. MIT / BSD isn't a good fit because the business is then free to make and sell their own version of the service. What license will allow a business to run my service, and customize it for their own needs if necessary, but not re-license or redistribute it? Based on https://choosealicense.com/appendix/ it seems like the Mozilla Public License comes close, but it forces businesses to disclose the changes they've made - which I doubt they'd want to do.

I don't want to write my own license - anyone know of a good existing license or template? Don't mind buying it if it's less than $100, but getting a lawyer to write one is much more expensive.

AGPL doens't force bushiness to buy a license. They can use your code at no cost and modify at will so long as they make their changes available AGPL.

What you want is dual license. First is AGPL: you accept that some companies will use the free code - get over it. Second is a non-open source license: your lawyers write it, those who buy this license don't have to share changes (which could be made by you or them).

The hard part is not the license, the hard part is the business model so you don't go bankrupt. Since AGPL is always available what do you offer so that a company will pay you? (there are many good answers, just make sure you have one)

> AGPL doens't force bushiness to buy a license. They can use your code at no cost and modify at will so long as they make their changes available AGPL.

Because the AGPL counts network access as distribution, it would force businesses to open source their private codebases that communicated with my service - which is enough of deterrent to freeloading for me.

Because the AGPL counts network access as distribution, it would force businesses to open source their private codebases that communicated with my service

I don't think so. It only forces you to distribute the source of their copy of your service to any network users.

Some thoughts from a guy who has done a lot with licenses:

As others have stated, GPL/AGPL or anything "open" does NOT force business to buy a license. All it says it that _if_ they use your code, they have to make the code available to their users. (Today that often gets interpreted as made public, but it truly only requires that the users have access to it). So the business CAN still freely sell software that uses your code without your involvement in any way.

If you want to be paid by every business that uses your code, don't make it public. There really isn't any other way to force that behavior.

As far a commercial license goes, just basically just say it belongs to you and no usage is allowed without arrangements with you. That is generally wrapped up in a contract between you and the business. I haven't used it, but you can try a tool like this to generate that type commercial license: http://www.binpress.com/license/generator

One of the real advantages of going open for you (the author) is getting help from other people. Often it is small things, but you can get help. Doing a Dual License complicates this. As long as you are the owner of the code you can freely re-license it. But once you accept a code contribution to your GPL code, you cannot legally or ethically just resell that contributed code under the commercial license. So you either: 1) Reject all contributions from other programmers 2) Have two independent branches that might end up diverging 3) Asking every code contributor to grant you a license to also use their code under your commercial license.

To me, option #3 is questionable and probably won't fly well if your project takes off.

We moved Mycroft (https://github.com/MycroftAI/mycroft-core) from GPLv3 to Apache 2.0. There were various reason for this, but for us the biggest was that business generally avoids GPL code, and in some cases there the regulatory system comes in conflict with the requirements of GPL. For example, if a car brake system has GPLv3 code you are REQUIRED to provide a mechanism so users can replace that code. Good luck getting approval of a car. Even if you did get it approved, the car manufacturers would be terrified of the court cases they'd have to defend -- win or lose.

In short, if you don't think it is valuable enough to spend more than $100 on this, then just go with a well-known permissive open source license like MIT. If it takes off, you get famous and can command a high salary somewhere.