Ask HN: How to get contributions to open source project

6 points by billziss ↗ HN
I am looking for advice on getting contributions to my open source project. While the project has generated interest, it has received no actual contributions as of today and I am looking for the reasons why.

My project is WinFsp, an open source project that enables developers to create user-mode file systems for Windows. In this sense it is similar to FUSE for UNIX. It consists of a kernel mode file system driver and user mode components. The project is hosted on github:

https://github.com/billziss-gh/winfsp

So far I have had little success in attracting contributions to this project. I list some reasons of why this may be so here:

- The project is not of high quality.

- The project is not well organized.

- The project is not well documented.

- No one serious about open source cares about Windows.

- The subject matter (user mode file systems) is not interesting to most of today's developers.

- The subject matter may be interesting, but most of today's developers lack the skill set required to contribute.

- Potential contributors are turned off by the license (AGPLv3 - GNU Affero General Public License).

- Potential contributors are turned off by the requirement to assign joint copyright interests to any contributions.

- Potential contributors are turned off that the project author wants to retain copyright control so that he can potentially license the code commercially.

- The project is just new and has not had enough time to gain traction.

- The project author is an intolerable dk and no one wants to work with him.

- All of the above.

- Other reasons?

Some of the things that I need help with:

- Contributions to the core WinFsp project.

- File systems ports. WinFsp has a FUSE API, which I have used to port SSHFS and FUSEPY.

- WinFsp wrapped in languages other than C/C++. I have had interest shown, but nothing concrete yet.

Thank you for any feedback.

23 comments

[ 40.3 ms ] story [ 696 ms ] thread
I did a little bit of googling, and you left out "there is an existing project that's in the same space".

For me the AGPL in itself would be an "absolutely not", and combined with the point two bullets below that, on the grounds that "hey I'm doing work but he's getting money" that just adds insult to injury.

Which license do you think would be acceptable for someone like you to contribute?
I will try to not drive it to the regular Dokany/WinFSP battle :). Your problem is definitely the license and according on your own comments you already know that.

Unfortunately for you, you will not fix the problem if you don't change the way you're thinking about commercial products and FOSS on Windows. If this can help you to understand the environment: almost all Dokany contributors are using it for commercial purpose, remember that it was also your case and so is my personal case btw.

Let me explain the license choice (even if it was decided by the previous maintainer, I would have done the same choices here): we use LGPL license for the core/library so it can be used freely on commercial app while we still protect ourselves on unpublished core modification, and MIT license for additional programs (control, samples...) because these doesn't matter and this way it can be used as a starting point for developers.

I believe this is what people are expecting on Windows (FOSS on MAC is generally worth from my experience ^^) ; but of course this means giving it to companies making business on your work. It's part of the deal. I completely understand your position as I'm also using AGPL license for other open source projects I started years ago and for those I didn't want companies to use it freely.

Philosophically, to be open source is already a great decision, then the license decision is yours according to your way of thinking for your project.

Maxhy, thank you for the very valuable input.
The other interesting part is that it's a very niche product in itself. If you go off the theory that most contributors are trying to solve a problem for themselves, then people who need an FS driver are

a) rare

b) likely to be making a commercial product, in which case the main competitor to WinFSP isn't Dokan(y), but CBFS.

The author of Expandrive could probably add more to this - his product is based off CBFS.

That is a very good insight and one that I agree with.

BTW, I am not really trying to make WinFsp into a product. I simply created it because I am a file system writer myself and wanted a stable FSD for Windows.

I was originally planning to put it under the BSD, but I spent too much time and effort to simply give it away.

Perhaps I can summarize: "I want free help for a product I can sell. I put it up on GitHub. Why aren't people giving free help to me?"
I fail to understand this. Are you saying that the GPL is not an open source license?
The AGPL is more restrictive than the GPL. It's a tricky choice to make.
If that is the only impediment, I will switch to GPL tomorrow.

I suspect that there is more than that. I suspect that people no longer like the GPL. I am actually one of those people.

My intent with WinFsp is to allow any open source project to use it without restrictions (commercial or otherwise). The only thing I want to restrict is closed source commercial uses (in which case I offer a commercial license).

Unfortunately I am not aware of an open source license that is compatible with other open source licenses and does not impose any restrictions on them. The only open source licenses that I know that allow unlimited open source use, also allow unlimited closed source use (which I would like to restrict).

If anyone points me to such a license I will be happy to consider it for WinFsp.

GPL is fine for this use case. AGPL might be considered too aggressive for some people.

Don't let people bully you here though. Choose the license that makes sense for you. I think you want GPL, but that's not for me to say.

This is true for all (most) open source projects - so why do some attract more contributors than others?
AGPL will probably scare off commercial contributors. You've also got the problem that there's a very high bar to entry in your project. I have the same problem with trying to contribute to Dokany - I just don't have the skills. Many of your potential contributors may also lack the required operating system to do the work...
There is indeed a high bar of entry, although this is not necessarily true for the user mode components.

BTW, please consider contributing to WinFsp :) You do not have to contribute to the core project if you find the license unpalatable or any other reason. But there are other ways that one could help. Creating a C# or Java wrapper would be very useful, for example.

The cygfuse project also needs help and this one intends to work with both WinFsp and Dokany:

https://github.com/mgeisert/cygfuse

> Many of your potential contributors may also lack the required operating system to do the work...

That is an interesting thought. I wonder if I could spend some time to try making this compile on Win7.

It's not going to be a popular opinion on HN, but I think supporting Windows 10 only is fine in 2016.

I'm wondering how tricky it'd be to create a C# FS implementation that supported both Dokany and WinFsp from the same codebase.

> I'm wondering how tricky it'd be to create a C# FS implementation that supported both Dokany and WinFsp from the same codebase.

That's actually a cool idea.

The API's are not dissimilar as both API's were designed for Windows. If you decide to look into this you can count on my help and support.

You've also got the problem of driver signing, especially on Windows 10 Anniversary. Microsoft really doesn't want people without signing certificates making drivers.
That is indeed a problem. Although developers can get by using testsigning and turning off secure boot.

That is what I do for development, between releases.

One thing you missed is that there just isn't the same culture around open source development in the windows world. After all, why should someone devote their time to make windows (a commercial, closed source product) better?
I understand this sentiment. I am a Mac guy myself (and have been for over 10 years).

OTOH, here is how I got involved with this. I was developing a file system on OSX that I then ported to Linux. When I looked to port it to Windows I did not find any satisfying solutions and I ended up writing WinFsp.

Why port to Windows? Because it still has the biggest market share and because it was an interesting technical problem.

I saw winfsp a few months back and thought it looked fantastic. But...

1. the license.

2. windows.

Also, I suspect open source follows a pareto distribution (5% of the projects get 95% of the contributions). And no contributors is probably better than being overwhelmed with low quality contributions and feature requests.

Thanks for the honest feedback.

> 1. the license

I am pretty convinced that this is a major issue. I am looking for a solution that would allow unrestricted open source use while restricting closed source use. For example, freely combine with a BSD licensed open source project without imposing any restrictions on it (GPL), but disallow combining with a closed source project (unless a commercial license is used).

I am wondering if such a license (or license strategy) already exists.

> 2. windows

Ok, I hear you there :) This will sound weird, but I do not even consider myself a Windows developer anymore (despite being an ex-MSFT and writing Windows kernel mode drivers). I am writing to you from a Macbook Pro and I make a living these days writing Mac and iOS apps!

People will more readily contribute to a community than a technology. For some definition of 'successful', successful opensource projects are often successful due to community at least as much as technology.

Often those communities are built around the business needs of the community members, e.g. Apache Foundation projects. Occasionally, the communities are built around shared political beliefs, e.g. GNU projects...it's worth considering how much work Stallman has put into community over the past 35 years or so. Probably worth looking at Linux too in regard to how much the principle contributor's social eccentricities affect open source success.

To put it another way:

  attractingContributors != buildingCommunity
Good luck.