Skip to content

Instantly share code, notes, and snippets.

@alexellis
Last active July 17, 2021 17:44
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexellis/a5770e6456b9c47713548e007074c003 to your computer and use it in GitHub Desktop.
Save alexellis/a5770e6456b9c47713548e007074c003 to your computer and use it in GitHub Desktop.
Insiders Update: 15th May - How to make PRs and influence maintainers

Welcome to this week's Insiders Update! Insiders gain exclusive access to early previews, tutorials, updates, news, and events on my OSS work.

✅ Become an Insider today and pay whatever you want through 👉 GitHub Sponsors

Insiders Update: 15th May - How to make PRs and influence maintainers

How to make PRs and influence maintainers

One of the earliest self-help books I read on human to human interaction was: How to Win Friends and Influence People by Dale Carnegie. It was originally published October 1936, and when you read the examples, it doesn't feel dated at all. This is the kind of book that you need to read every 2-3 years to make sure you've fully integrated its lessons. I've seen some folks (who obviously haven't read a page) criticise the book as a manipulation aid, it's very much the opposite. The only one being manipulated is the reader, to question the auto-pilot responses we have built-in. For instance, it's so easy to: criticise others, to try to be right all the time (especially on the Internet, right? The urge is 10x worse), and to project perfection, instead a humble reality.

The first time I read the book I learn a different set of things to when I re-read it last year. One part spoke to me particularly about trying to "win" an argument. This is going to feel weird, but it's often better to tell the other person that you're wrong, and they may come around or soften their position. Don't believe me? Try it with your partner or children over the weekend, see how things change.

So what does this have to do with influencing maintainers and getting PRs merged?

This summary is taken from Forbes, and I think that it can be applied to any human to human interaction, especially over social media and open source projects, where communication may be async, across time-zones, cultures, and where so much "context" is missing.

  1. Do Not Criticize, Condemn or Complain
  2. Be Generous With Praise
  3. Remember Their Name
  4. Be Genuinely Interested In Other People
  5. Know The Value Of Charm
  6. Be Quick To Acknowledge Your Own Mistakes
  7. Don't Attempt To "Win" An Argument
  8. Begin On Common Ground
  9. Have Others Believe Your Conclusion Is Their Own
  10. Make People Feel Important

We probably don't have enough time to go into each of these, but think about your next interaction with an open source project, whether you're the maintainer or the contributor. How could you apply these principles? The changes are that you'll see a dramatic effect in how you feel and how successful you are.

Here's my cheat-sheet for winning at contributing to OSS:

  • Start small, introduce yourself to the community, if you can.
  • Show an interest and ask where you can be of help. Most inexperienced folks look for what they want to do, it's going to be a balance, and you'll have more success doing what you want, once you have built up some trust.
  • Make sure that the change is wanted, look for a process, or raise an issue suggesting it. Wait for consensus before working on a change.
  • If the project has a communication channel like Slack, join the community and "suck it up". One more Slack, you can have it your way, or you can have your PR merged. I know which I'd go for.
  • Provide some evidence of testing, even if you're not sure what's needed. Automated tests like unit tests can be the hardest to write, but go a long way to building trust.
  • Be patient, try to see things from both sides, and apply the Carnegie principles.

If you're particularly interested in how we take contributions to OpenFaaS, there's a contributing guide that covers everything from commit-style, to how long you can expect to wait for a response, to how we would like you to propose changes.

Buy the book: How to Win Friends and Influence People by Dale Carnegie

If you're a seasoned influencer, and all-around good human being, try to up your leadership game with: What Got You Here Won't Get You There: How Successful People Become Even More Successful by Marshall Goldsmith, a coach to top-level executives.

Have you got other suggestions? Feel free to ping me on Twitter if you found this section useful, or reply to the email.

Articles & content

I wrote up about how the kubectl run command got deprecated in K8s 1.18, and what the alternatives are. I also cover - writing YAML and using the Kubernetes Go client. The full release notes are available here

I was over the moon to have my first contributed piece accepted on thenewstack.io, the Cloud Native news publication. This 3000-word write-up explores how bare-metal, and servers fit into a Cloud Native world. You'll learn (or re-learn) the concepts and techniques, some of which have not changed for 20 years. You'll also get to see the state of the landscape, and what automation can bring to this field.

I sit down with my buddy Keith The CTOAdvisor, to discuss the recent article and give a live demo of it all in action, netbooting a Raspberry Pi from NVMe over my home network.

If you'd like to try out my workshop, reply back to this email for access to the private repo.

inlets development

Liking my setup? Get it for yourself here

I gave over the day to R&D on inlets. My original plan was to introduce a new entry-level version called inlets PLUS, which would come with some neat new features. After weighing things up, I've decided to ship those for free, at no cost in the OSS version.

Tune in for the what, why, how and what next of inlets including demos and case-studies.

Inlets - New security features

You can now update and download version 2.7.3:

  • PR #182 Enable strict filtering feature for client by @alexellis
  • PR #181 add option to select address to bind to by @jsiebens

Client: Strict forwarding policy

By default, the server code can access any host. The client specifies a number of upstream hosts via --upstream. If you want these to be the only hosts that the server can connect to, then enable strict forwarding.

  • --strict-forwarding

This is off by default, however when set to true, only hosts in --upstream can be accessed by the server. It could prevent a bad actor from accessing other hosts on your network.

Server: Bind to a different adapter, or to localhost

By default the inlets server will bind to all adapters and addresses on your machine.

At times, you may wish to change this, so that you can "hide" the HTTP websocket behind a reverse proxy, adding TLS termination and link-level encryption without exposing the plain HTTP port to the network or Internet.

Usage:

  • --bind-addr 127.0.0.1
  • --bind-addr 10.0.101.20

Inlets - Helm chart

My friend Pau put together a helm chart for installing an inlets exit-sever to Kubernetes, I hope you'll find it useful. We'd like feedback on this, so feel free to comment in #inlets.

Inlets - Save money on hosting Kubernetes in the cloud

Why waste money on public cloud when you're testing and exploring K8s?

One of the things I like to do with inlets PRO is to install an IngressController to my PC or RPi. From there I'll let the inlets-operator and cert-manager work together to get me TLS certificates for whatever I want to run. This works with KinD, minikube, microk8s, k3s, you name it.

See how it works in the tutorial: Expose Your IngressController and get TLS from LetsEncrypt

I'll extend the 14-day trial for inlets PRO to anyone who signs up over the weekend, that'll give you 21 days to kick the tires.

Signing off for the weekend

I hope you enjoyed the editorial this week, and found it helpful. Working in Open Source means going into the arena, and exposing yourself to criticism, being told you're wrong, and to all sorts of negativity. When I have a bad interaction or someone comes across as entitled, demanding or rude, I try to pause and not reply immediately. I say to myself something like "I'm going to let that go." (it's worth trying, even if it doesn't help every time)

On the upside, open source and community can be incredibly rewarding and a fulfilling way to connect with like-minded people. It's unlikely you'll find anyone excited about Raspberry Pi clusters at the local super-market or gym, but when you start contributing to a repo you found on GitHub, making it better, and getting cheered on by the maintainer, isn't that a fantastic feeling?

If you'd like to contribute to any of the projects you've heard me talking about, say hi to the community on in the #contributors channel on OpenFaaS Slack

Important: If you're an OpenFaaS or Cloud Native user, please take the CNCF survey and say so, these things are taken seriously by analysts and it would be good to have your representation. Cloud Native Survey 1H 2020

Events

Join me with Kelsey Hightower, Mark Coleman, Jamie Dobson, Anne Currie and many others at The Software Circus 21st May. I'll be giving an introductory talk on Bare Metal and showing off some new demos. Hope you can join!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment