Marco is right.

Folks do OS for a few reasons. We hyperfixate on "save the world by building an X." Which is a shame because:

1. that one has some issues we tend to gloss over
2. OS advice and expectations tend to assume that one.

Shall we go through some OS motivations?

1/
Note: I'm skipping "Green Box Credit" as a motivation. That's an extrinsic motivation created by employers in lieu of actual instructive hiring criterion, and its optimization is a 24h cron with an empty commit script to a public repo.

We're not counting that.

Onward.

2/
The next motivation for OS contribution is to learn.

Couple things about this one.

1. Code bootcamps and whatnot LOVE to recommend this to BEGINNERS, and it's one of the worst ideas I've heard these places consistently parrot. Here's why:

3/
Why OS contrib often sucks as a "learning opportunity" for beginners:

1. Beginners are usually learning end user app dev (bootcamps) or low level systems (CS). Popular OS projects usually aren't thoseβ€”DEF not that first one. So it's high barrier to entry for beginners.

4/
Reason #2 that OS contrib often sucks as a "learning opp" for beginners:

2. A PR to an OS repo represents work for the maintainers. The less mergable-as-is, the more work it represents. Beginners tend to submit not-mergable-as-is PRs. So maintainers either have to...

5/
a) Put in a ton of work to fix the PR
b) Put in a ton of work to safeguard the OP's feelings
c) Both.

Most OS maintainers are also not exactly career diplomats either, so they might not be good at B even if they wanna do it.

Result: rough contrib experiences for beginners.

6/
HOWEVER, I have seen OS be a LOT more successful as a learning opp for people WITH experience.

1. They're more self-sufficient and require less of the original maintainers' help

2. They know How Programmers Are (TM), so a terse comment from a maintainer doesn't put them off

7/
Tips for Doing OS to Learn: Beginners

1. PRing to a popular library probably won't be a positive experience
2. Instead, make your own learning repo (or fork) and work on that
3. Reach out to seasoned folks for feedback on SPECIFIC parts of that code

I do this. It works.

8/
Here's an example of a time I did it, and literal maintainers of CPython itself pitched in to help me make my Python project more performant (y'all are the best)



9/
Tips for Doing OS to Learn: Experienced

You are more likely ready to PR a popular or jointly-maintained library

1. Read a book about the kind of thing the project is first.
2. Talk to the maintainers about where you can help most BEFORE PRing in.

I did this w @roc_lang!

10/
OK, next reason to do OS: Try Out Your Personal Idea

This one covers a lot of the contribs Marco is talking about in that tweet above.

And it's fine! You're allowed to have your personal vision! You're allowed to want to build your cardboard fort and not let others in.

11/
This can be great for learning, too, because you're testing a hypothesis about whether something is gonna work or not.

Now, I WILL say this: if the goal is to Try Out Your Personal Idea and THEN Take The Industry By Storm...

...uh, THAT's probably not gonna happen.

12/
Here's why: most Brilliant Ideas that Take The Industry by Storm came from MANY people working together. That's even true of the ones that our rumors and history SAY came from one "inventor."

Working alone, you almost certainly miss some important considerations.

So...

13/
To Take the Industry by Storm, maybe you can START with a personal proof of concept,

but to reach scale, popularity, and maintainability, you're gonna have to NOT ONLY let other people in, BUT ALSO disproportionately value the ways they disagree with you.

14/
That's hard for anyone. For Programmers Who Think They Are Very Smart, it's often even harder.

I've seen this in companies, too. "That genius in the corner built X all by himself" almost always means there's something repellent to the rest of the team about 'that genius.'

15/
So, Tips for Trying Out Your Personal Idea:

1. Write down the hypotheses you want to test.
2. Recognize when you have confirmed or contraindicated those hypotheses.
3. Consider that a result in and of itself, regardless of what else happens with this project.

16/
Tips if your goal is actually to Take The Industry by Storm:

1. Imagine the person most often ignored by the status quo and beg/bribe those people to drive the project
2. Put more effort into community management than to writing code
3. I know you want to ignore #2. DON'T.

17/
OK, now let's talk about the one I referenced earlier, the goal of Saving the World by Building X

I've talked about the issue with this one before in this thread from last June.

I recommend really sitting with it; it's not a fun conversation.

18/

Finally, there's Ideological Commitment to Free Software.

I mostly hear about this OS motivation now from folks who were 20somethings in the 70/80s.

Younger OS contributors are quicker with "I want to make $ from this code, or from the knowledge I get by writing it"

19/
There's historical reasons for tech's unique degree of idealism and saviorism compared to other unabashedly capitalist industries, but that's not the point of this thread.

20/
On the "free" thing: I mean, pragmatically, super hard to make that work.

I say that as a person with a business that deliberately and almost exclusively supports clients who are either grant-funded or directly supported by the community they serve.

Eventually...

21/
...someone has to sustain the project.

And if maintainers don't think about how that's gonna happen, it's easier for it to end up happening in ways orthogonal to (or even antithetical to) the project's publicly stated goals.

22/
Idealistic OS projects regularly get "sponsored" and then consumed or shut down by private companies.

That's extreme, but if a sponsor keeps you alive, you have to care what they need. Unless they're LITERALLY who you wanna serve, you can end up with some ugly tradeoffs.

23/
Those are the MAIN motivations I've seen for doing OS.

This is my Twitter account so I get to talk about MY motivations, and I'll do that now.

I've got 3.

24/
My motivations for doing OS:

1. Learn. OS projects help me do this by, effectively, holding me accountable to others for being able to execute on the things I am studying on my own.

It's harder to quit studying if 4-10 other people are expecting your PR on the subject.

25/
This happens at jobs too, but ultimately, as a pre-tech boss once sagely told me, "no one pays you to learn."

I can't get hired to jobs I don't know how to do yet. But an OS project that sees my GENERAL exp doesn't mind that I'm a beginner at their specialty.

26/
My OS Contrib motivation #2: Get paid to teach.

I reduce my rate for clients who let me live stream my work; if their code is public anyway, they're like "HELL YES"

Then I get $ to "show people how to debug" (see: fork up on camera), which tech education rarely covers.

27/
Here's where I organize those videos. My most streamed projects are an iOS app about Scottish Gaelic Phrases (evidently the foremost resource on the web for space-efficient custom wait spinners, lol) and then, of course, @the_zooniverse mobile app

28/

chelseatroy.com/category/live-…
My OS Contrib motivation #3: Make tech education more accessible.

My biggest OS project that I maintain solo is probably my interactive textbook for my Python Programming classes, which is free because forcing students to buy my book felt icky.

But then I got ambitious, so

29/
...so now the plan is to create a standalone resource that a new (or maybe even intermediate) Pythonista could use by themselves to get up to speed or learn new stuff.

Here it is. Please don't hammer me with feature requests.

30/

github.com/MPCS-51042/mat…
BONUS MOTIVATION:

OS projects often face greater support demands & community management challenges than internal repos, so code stewardship REALLY matters for them. I'd like to learn from and contribute to how they do that.

More:

30/30

chelseatroy.com/2021/01/18/avo…

β€’ β€’ β€’

Missing some Tweet in this thread? You can try to force a refresh
γ€€

Keep Current with Chelsea Troy πŸ³οΈβ€πŸŒˆ

Chelsea Troy πŸ³οΈβ€πŸŒˆ Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @HeyChelseaTroy

15 Nov
I've been looking up a lot of soup recipes lately.

Now, the way that I learn things is to avoid committing a bunch of seemingly unrelated stuff to memory by coming up with a framework that connects all the pieces together.

I give you: A Framework for Vegetable Soup

1/
STEP 1: Choose two vegetables.

I have no idea why it's two, but I can confirm that "garden soup" where you blend several together tastes gross to me so let's just accept the Magic Number Two for now

Examples:
- Sweet potato & corn
- Broccoli & cauliflower
- Lentil & Tomato

2/
STEP 2: Chop up your two vegetables and sautee them until soft in a truly decadent amount of butter and probably some garlic.

Every single recipe appears to call for butter and garlic. I do not know why. I'm just recording an aggregate observation of the recipes here.

3/
Read 9 tweets
12 Nov
As any infosec person will tell you, a company's greatest security vulnerability is its people.

So I was shocked that, in 2 years of WFH, tech largely ignored meeting securityβ€”despite the fact that many techies are cohabiting partners with employees of competitors.

Like,

/1
...sure, partners talk, of course.

But it's a little different to be having a Zoom about something, and the verbatim conversation is wafting through a set of speakers with a competitor literally sitting in the room.

But yesterday, I realized why companies aren't worried.

/2
My co-presenter and I stopped in a coffee shop. A few tables over, two young men were talking. LOUDLY.

I, and presumably anyone else in that coffee shop, now know:

- How their company's payroll is secured
- What software it's in
- The NAME of the person with blanket access

/3
Read 7 tweets
9 Nov
Okay.

Let's talk about the word 'interested' in Cook's quote that he has been 'interested in it for a while.'

That word has a very specific role and legacy in the modern tech industry, and who uses it, and why.

/1
In tech, I frequently hear the word 'interesting' used as a universal compliment signaling worthiness of attention.

"This refactor was interesting" means "it was worth doing and we made the right decision"

"This technology is interesting" insinuates that we should use it.

/2
But that "interesting" descriptor is frequently unique to the person giving it.

I don't mean it's subjective in the sense of "everyone might hav a different opinion about this"

I mean people will call it "interesting" based SOLELY on its benefit for them personally.

/3
Read 19 tweets
7 Nov
Due to a series of airline mishaps I’ve been at MDW since crack of dawn. I usually fly out of ORD.

I realize my sample size is 1, but this is striking: I’ve overheard more casual homophobia in this one visit to MDW than in seven years of flying out of ORD. Like, combined.

Wtf?
I’m also not sure why it’s so trendy to hate ORD.

It’s a GIANT intl airport. I can count on my fingers the number of U.S. airports that face the logistical challenges that ORD does.

And, you don’t want to hear this: given what those challenges are, ORD does pretty good.
Let’s do the @MaryRobinette airport game.

Travel plans go well, you drink. Travel plans go poorly, I drink!

Beverage can be anything. I’m going with honey green tea for now, with vague hopes of finding a good latte when I get to Denver.
Read 21 tweets
6 Nov
Options for my @rubyconf bio slide:

Poll in replies ImageImageImage
Listed here in the order they appear.
OH MY GOSH IT'S NECK AND NECK
Read 4 tweets
3 Nov
Jean identifies a narrow slice of perspectives that disproportionately drive the conversation about what "good software eng" looks like: both the code itself and the work that produces it.

Here's my $0.02, as a S.Eng and an educator, on what this conversation misses.

/1
So first of all: a few tweets downthread, Jean brings up FAANGs. I promise, I'll get to FAANGs. But that's not where this conversation starts.

It starts with the dissonance between what 90+% of devs do and what they THINK they do.

/2
The lion's share of "THE OTHER STUFF," from my perspective, are the parts of engineering that The Conversation about "good software engineering" habitually ignores or under-discusses.

Once again, educator and practitioner here: I think "the parts" are like 80+% of the job.

/3
Read 24 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Thank you for your support!

Follow Us on Twitter!

:(