
Why We Engage in FLOSS: Answers from Core Developers - eqcho
https://arxiv.org/abs/1803.05741
======
bfirsh
If you're on a phone, here's an HTML version of the article:
[https://www.arxiv-vanity.com/papers/1803.05741/](https://www.arxiv-
vanity.com/papers/1803.05741/)

~~~
jonahx
This is great.

Do you know what software is being used to automate the conversion from pdf to
html?

~~~
detaro
Their Show HN has the answers:
[https://news.ycombinator.com/item?id=15534580](https://news.ycombinator.com/item?id=15534580)

------
KirinDave
I've never understood it. I've only had horrific experiences with my open
source efforts. From the simplest cases like being ignored on PRs and tickets
to mockery in social circles for algorithmic mistakes to finding out my work
was enabling bad people to finding out people were misrepresenting my
employment status while using my work in violation of the license, I don't
think I've ever once had a positive experience with open source as a producer.
Hell, I never even knew my extensions to the clojure time library were even
being used until another maintainer who had added some incremental stuff over
my work disappeared.

I wish I could go back in time and tell my younger self it was all a waste of
time and I shouldn't do it. Maybe then I could be more positive about it now
that I'm better at writing software.

~~~
teddyh
Since you don’t give verifiable links to examples so we can judge for
ourselves, and your reported experiences don’t match the majority’s, the rest
of us are more or less forced to believe the simplest explanation:

There’s a known principle that goes “If you think that everyone around you is
an asshole, _they’re_ not the assholes, _you are_.”. This would be the
_simplest_ explanation in this case, since we don’t know anything else about
you.

Of course, you could easily remedy this by posting enough examples to change
our minds, but until you do, Occam’s razor must reign supreme.

~~~
KirinDave
Nothing I can do can change the outcome either way, teddyh. I suspect you've
already decided how you feel about me.

People are seeing a candid discussion of subjective experience as an
indictment of theirs. This is another action I regret. I thought perhaps a
related but dissenting viewpoint would have value to the conversation, but I
guess not. This conversation itself is an example of the kind of negative
experience I'm talking about.

I'm sorry my post offended you. It wasn't my intent.

~~~
teddyh
> _Nothing I can do can change the outcome either way, teddyh._

On the contrary, I told you _exactly_ how to change my mind (and that of
others): Point to examples that we can read for ourselves and decide that yes,
you really were treated badly in all these cases. That really _would_ change
minds.

> _I suspect you 've already decided how you feel about me._

Again, you are mistaken. You are just some random anonymous person on the
internet; you could very well be an asshole; what do I know? But if that is
the _most likely_ explanation of your reported experience, then sure, why not.
I can easily use that as a working hypotheses, because I have no vested
interest in having a good opinion about you; I don’t care about _you_ at all;
I don’t even know you, so I have no strong opinion about you. I _do_ care
about people reading your description and (even though you were careful enough
to not do so yourself) generalizing your experiences to the whole of the
community, and being discouraged thereby.

You must understand that when you write something along the lines of “I had
only bad experiences doing X, and I wish I could travel back in time to tell
myself to not ever do X.”, it _will_ be taken as a generalized advice to
everyone, and be more or less rightly criticized as if it were such.

If you instead had written about the same experiences using words like “People
can have bad experiences too; I only had bad experiences doing X, and
therefore I gave it up. Was I just unlucky?”, I believe that people would be
much more open to either agree or disagree. But that is not how you presented
it.

> _I 'm sorry my post offended you. It wasn't my intent._

Not offended. Just worried that people might draw unlikely conclusions from
your limited sample of experiences (especially when the submitted article is
an actual scientific paper about this very issue).

~~~
KirinDave
> On the contrary, I told you exactly how to change my mind (and that of
> others): Point to examples that we can read for ourselves and decide that
> yes, you really were treated badly in all these cases. That really would
> change minds.

Consider for a moment what you're asking me to do: name names. In several
cases, for events over 5 years old. You're asking me to expose myself to more
contention and argument to convince you that my feelings are not dirty lies
that slander the OSS community.

The most respectful thing I can do for all parties is relate my experiences.
If you find them to be so outrageously implausible that you feel the need to
call me an asshole, there's not much I am willing to do that will change that.
You're right, I could link to examples of people behaving badly (and
inevitably, cases where I have behaved badly because those exist). But there
is very little upside in that for me.

Like I said, this demand predetermines the outcome. It asks me to shoulder
more commentary like this for the dubious promise of your personal approval.
That's not a very compelling value proposition. Add to that that your tone
disinclines me to believe you're actually asking in good faith, and I have
absolutely no reason at all to reopen these topics.

~~~
teddyh
I’m sorry, I did not mean to ask for anything you were unwilling to do; your
initial text did not give the impression that you were unwilling to name
names, it just lacked details or links – on the contrary, you even named “my
extensions to the clojure time library”, which could conceivably be used by
somebody to look up said details, so I did not see anything to indicate you
wanted to avoid “naming names”.

Certainly, nobody can force you to name names if you don’t want to, but vague
accusations (such as yours) towards a community deserves to at least be
questioned and probed for evidence. Some people would say to not say anything
which you’re not prepared to back up with evidence, but I’m not sure I would
go that far. Unsubstantiated claims have _some_ value if presented carefully
and tactfully. But you appeared to be neither; you seemed to make sweeping
generalizations (while carefully not literally doing it), but not giving
examples or even details. This style is a non-working strategy for effecting
change, which I would assume to be the goal of us all.

> _Add to that that your tone disinclines me to believe you 're actually
> asking in good faith_

I’m sorry to hear that; I did not mean to give such an impression. I would
certainly say that I believe myself to be acting in good faith, such as it is;
my goal is to give people what I believe to be a reasonably accurate picture
of what kind of treatment they can expect from contributing to FLOSS, to
counter the view they might get from your initial comment.

In conclusion: There is a good possibility that you were merely unlucky,
either with individual authors or toxic projects. That is simply a slightly
more unlikely explanation than the simplest one which I gave. Please don’t be
offended by it; I actually only offered it as a motivation for you to disprove
it by giving us examples, so we might see for ourselves, and I fully expected
you to simply give a few links to end the matter. Since you won’t (for reasons
I fully accept), the discussion took an unexpectedly unproductive turn, and I
am sorry for that. I never accounted for the possibility of you to not wanting
to give details or references, but I should have.

------
vjeux
As a core contributor of some very popular github projects, I get a ton of
emails from researchers wanting me to fill out surveys. It would be nice if it
was somehow centralized instead of a lot of independent people trying to do
the same work over and over.

~~~
fundamental
With respect to community surveys, I think they can be a good thing, but
they're annoying when it looks like the author is on a fishing trip rather
than trying to identify the answers to a few new specific questions.

Usually my off-the-cuff response is "What are you trying to understand which
isn't already discussed heavily?". New areas of research and some small amount
of redundant work is fine, but too often everyone covers the same base without
aiming to take a deeper dive on something new.

------
ogennadi
From the article (fig. 13a)

Motivations: \- To improve the project because I am using it \- To have a
volunteer work \- I have interest or expertise on the project domain

Project characteristics: \- Friendly community \- Availability of the project
leaders \- Unit tests

Barriers: \- Lack of time of project leaders \- Large and complex project \-
Unclear, complex or buggy code

------
blattimwind
I think the converse would be very interesting as well: Why do people dis-
engage?

~~~
jolmg
The paper also addresses that at section 3, Barriers[1]:

    
    
        - Large and complex project
        - Lack of time of the project leaders
        - Non-clear, complex or buggy codebase
        - Lack of time of the own contributor
        - Inappropriate design or architecture
        - etc.
    

[1] [https://www.arxiv-
vanity.com/papers/1803.05741/#S3.SS3](https://www.arxiv-
vanity.com/papers/1803.05741/#S3.SS3)

------
jgtrosh
Figure 9.b seems to have a problem with sampling? Half numbers of core
contributors are plotted even though they (thankfully) don't correspond to the
samples.

~~~
blattimwind
No, the negative lobes just show how contributor numbers are whole numbers.
Natural, even.

~~~
jgtrosh
Yes, but do we need that information? It could be the case of any integer
graph. Either just plot the samples, or curve them. Don't curve them with
intermediary values, that means even less than a trend curve.

Edit: okay maybe the violin plot as it is shown has the correct density
information. I disregarded that aspect of the plot.

------
mlinksva
My takeaway from the paper (read two months ago) was that core contributors
looking to encourage more core contributors should focus on making great
software which will have dedicated users some of whom might be motivated to
help project eventually as a core contributor.

------
kakwa_
I'm on the other end of the spectrum, I have a bunch of low popularity
projects on Github (Python, C, Puppet, a little bit of Perl). Low popularity
meaning above 0 users, but users can be counted on your fingers.

My motivation are often the following:

* I've encountered common issues at work that are generic (ie not tide to the functional domain of my employer), with no time to spent on it at work, as a consequence I chose to implement the thing on my free time and open source it because it kind of frustrated me.

examples:

\- web UI to manage DNS zones content, (previously the team was managing their
dev boxes IPs in an excel sheet).

\- web UI for LDAP management, with a simple notion of "Roles".

\- tools to convert Visio files (specially stencils) to SVG as my company
wasn't big on buying Visio licenses, and I was under Linux 99% of the time
anyway.

\- a generic enough puppet modules to manage samba.

* To learn new stuff or be better in a specific language. I've a bunch of project like that, were part of the goal was to unrust my skills or to learn how to setup unit test, continuous integration and code coverage. This is the way I learned pytest, cunit, gcov, Jenkins, Travis-ci, CMake.

Sometimes my motivation are a little weird. One time, I've created an empty
repository with a description and didn't start the implementation of what I
had in mind. Someone stared it out of nowhere, and I felt compelled to
actually implement it. It did learn me in the end that if you want a good
"ini" like parser in C, OpenSSL is quite decent with a permissive license.

Another time, I created a very rough Python library to display histograms in
ASCII. I just dump it on GitHub with no setup.py, nearly no documentation and
everything pretty much unorganized (initially, it was an half baked stat
module for an IRC bot). Someone submitted a PR righting the thing (proper
layout, a setup.py file, the thing being published on pypi and some rst
documentation). I accepted the PR gladly (and a few others after that) and I
felt compelled to add at least some unit tests.

This library code is absolutely horrible (even me, the creator, I spent a few
days figuring out all the edge cases), bu strangely enough, it's my most
successful library/tool (yay, a whooping 81 stars \o/) and people do
contribute to it.

It brings me to another point: external contributions.

From what I've experienced, people will more often create issues than submit
PRs. That's ok, but it can also be a little bit of a strain if your are the
sole maintainer of a project as I am. I know that on some of my projects,
issues can be left unanswered for months if not years.

For PRs, you are more likely to receive PRs if your language is easily
accessible. On my Python projects, I got a bunch of PRs, some of them far
beyond simple bug fixes (ex: implementing new really interesting
functionalities, like color support in the previously mentioned ASCII graph
library). In my C projects, I almost never get PRs, and I'm guessing the
language is a huge barrier, even if, in my opinion, the code is far more
readable and structured than some of my Python projects. An interesting mix of
the 2 is actually a Samba Puppet module. I've a bunch of Puppet DSL code,
where I've received ton of PRs, but I've also a little ruby code (type
providers), this one I almost never get PRs for.

Lastly, for a bunch of my project I feel a little culpability since I don't
maintain them appropriately, there is a bunch of my projects where I lost
interest in the subject (example, my puppet module: I don't use Puppet
anymore). But at the same time, I feel a little responsible for all the people
asking me questions or submitting bugs to these projects.

PS: why fundamentally do I contribute in Open Source? Mostly because of: hey,
I've implemented this, it was useful to me at some point, it might be useful
to other people, why should I keep it private? Other people could pick it up,
and use it to do some incredible things.

------
erikb
Saying FLOSS instead of "open source" is like saying "LBQTXRSABCFGHKWPÖ"
instead of "queer". Putting more letters doesn't make it more inclusive or
anything, it just makes you look less serious.

~~~
AsyncAwait
Open-source does not convey the same idea as free software.

~~~
ufo
And LOSS wouldn't work out quite as well as FOSS or FLOSS :)

