Open Source Projects: When Ideas Meet Reality

2016-08-28 | 1078 words | Discussion about proposal of ideas in open source communities

Perl 6 is a brand new language, so there's plenty of opportunity for improvement:

<redacted> [...] Perl 6 is comparatively new with many programming paradigms
     and powerful capabilities. Until we teach these features in an exciting way
     in such open course platforms (MOOC) we are doing less for "want to learn
     Perl 6 newcomers". We urgently need Perl 6 courses!!

It's easy to come up with ideas of what should be there and how it should work, but said the wrong way, your message may come across not how you intended it, and then we end up with a bit of a conflict for no good reason:

<Jeff Goff> [...] By all means, write some Perl 6 code, come back and write some
     course material, and publish that. Telling the group what to do without any
     experience, and in a condescending tone is not appreciated.

Since I've been on both sides and am skillful in pretending I know stuff, I figured I'll write about this, in an attempt to avoid such conflict in the future.

Let's begin!

Part I: So Little Time, So Much Undone

Most of Perl 6 was and is made by volunteers, in their free time—you know, that thing people use to relax and not write code in?

Having ideas is great, but keep in mind you aren't sitting in a boardroom meeting, trying to figure out the direction of your company for the next quarter. You are more like in a big mob on a street with everyone doing their own thing—if you just randomly start shouting ideas, you'll get ignored or piss someone off.

We Are Already Giving 110%

I code so much, sometimes I have dreams where I'm still coding, and I've spent well over $1,000 at the local bar, writing Perl6.Party blog posts. I have plans for Perl 6 I could fill two lives with, but I have to manage with just one I have. Many of the contributors have jobs, spouses, and kids, and they still contribute enourmous amounts of work.

Jeff Goff, quoted at the start of this article, just gave a 9-hour Perl 6 training seminar, raising €500 for the Perl 6 core fund. Elizabeth Mattijsen pushed a huge number of commits and is the primary person responsible for making Rakudo twice as fast than it was 4 months ago. Jonathan Worthington spent hours hunting down tricky concurrency bugs after squishing a ton of other bugs.

With what you just learned in this section, if you were one of the aforementioned people, how would this read to you:

* redacted joined #perl6
<redacted> another possible p6 marketing project: API support
<redacted> If we want to get p6 being used by the world, someone has to start
     providing hooks that will interest devs that want to make money.

The someone has to start bit makes it seem like we're all just sitting on our asses all day long, dying to know what to do with our time, which brings me to...

We Have Enough Ideas

Trust me, we're not short on ideas for what to spend our time on. Literally nothing is achieved by people who offer "ideas," especially if those are offered under the useless "for marketing reasons" reason.

People who are interested in API and with time to make it and provide support for it would have already made it. So why mention it?

Are you the one who wants to make it? Are you checking to see if someone is already working on it? Do you need help with it? This leads me nicely to...

Part II: Ideas Are People Too

I'm not a gambler, but I bet 99.99% of the time someone offers such ideas, they aren't actually telling other people what to do. They don't mean to, they may just come across as such. So there's little reason for getting hostile and telling them to stop doing what they aren't doing!

<other-redacted> redacted: so spark interest by writing something
     not by telling other people how to spend their spare time
<redacted> don't shoot the messenger, please

Shutting down people like that is a good way to discourage them, or worse alienate them from the community. There's a better way!

Thanks for Volunteering!

Instead of engaging in shit-flinging, pretend the person with all of the ideas is just thinking aloud about what to spend their time on. They are the volunteer who will make the idea become reality, whether they know it yet or not. Offer some encouragement!

There are three likely outcomes with such an approach: (1) the person will actually do the work and we all win; (2) they will agree to do the work, start, realize it's really damn hard and time consuming, give up, think twice before proposing more ideas; (3) the person will offer a reason for why they can't do it, which can then nicely double as the reason for why no one else did the thing yet, putting the conversation at swift and amicable end (no time? yeah, well, join the club).

<bioduds> do you guys know about koans?
<bioduds> any for perl6?
<Zoffix> bioduds, yeah, I know about them, but am not aware of any
     Perl 6 ones. You should definitely make some!
<bioduds> definitely
<bioduds> I bet if we join we can put up one. I'm still learning P6
<Zoffix> \o/
<Zoffix> bioduds, that's the best time to write them. You can still see
     them for how good they are from the perspective of someone new to P6
<Zoffix> And if you need space to host them, I'm sure we can find one.
<bioduds> well
<bioduds> I will then


It's easy to get carried away and to start proposing ideas left, right, and center. However, all of the contributors are already giving all they can, so your ideas can come off as commandments for the lazy, insensitively ignoring those contributors' already-substantial work. If you have a cool idea, great! Start working on it! Tell people about you working on it, to get them excited and join your efforts.

And if you are on the receiving end of such ideas, don't stifle them, redirect them. Every person who proposes the idea is the primary candidate to be the volunteer to implement it. Don't reprimand them; encourage them!

In the end, it's all about having fun!