Skip to content

Instantly share code, notes, and snippets.

@swinton
Created June 29, 2016 18:45
Show Gist options
  • Save swinton/468cffb71de8f1852e53c49ee52cc53f to your computer and use it in GitHub Desktop.
Save swinton/468cffb71de8f1852e53c49ee52cc53f to your computer and use it in GitHub Desktop.

THE HASHICORP FORMULA TO OPEN SOURCE

MITCHELL HASHIMOTO, @mitchellh Creator of Vagrant, Packer, Terraform, and more

  • Background
  • ❤️ OSS
  • Idols, open source:
    • Katz, Resig, DHH
  • Started doing OSS, 2006
    • Building mods for open source forum software
    • In 2013, top contributor to OSS according to GitHub report
  • Founded Hashicorp
    • All open source projects have > 1500 stars on GitHub, one has > 12000 stars 💥
    • Measure of usage, interest
  • Success how?
    • One time: chance, two times: coincidence, three times: pattern, more than this? Formulaic.
  • What steps? What formula?
  • ⭐ You can do it too
  • Before the formula… Back to 2007
    • Mac specialist, 🍎 retail
    • Formative period, in terms of how to build software, communities
    • Lessons:
      • Look and feel matters
        • iPhone alignment
      • Design for humans
      • Be welcoming, kind 😄
        • Most people want to be nice, and are genuinely kind
        • If someone’s not nice, they usually have a reason, you would feel the same in their shoes
        • How to approach meanness, useful for open source
  • And now… The Formula for Open Source
    • Find a problem (at least one of: time, money, errors (and fun))
      • Vagrant: time and errors
      • Deeply appreciate, understand. Go and experience the pain. Not that painful, maybe don’t solve for it.
      • Understand: Who else has tried to fix? Why is my idea better? What are the risks?
      • 10x, aim for order of magnitude… Be 10x better than anything else out there, to overcome cost of replacement. At least 3x. Be significantly better to overcome the good enough incumbent.
    • Design a solution
      • Don’t write code yet
      • Write human language
        • Cover the why, the what
        • Design, in words, the front-end and back-end at the same time
          • Back-end: internals, technical details
          • Front-end: anything user facing. the terminal, yes!
            • Nice errors, fun, intuitive, human interaction element, design for people
            • Playtest the front-end, i.e. mock it, make it look like’s it done, but just a shell, so you can interact with it, improve the interface. Assume you can engineer the back-end, but get the front-end right.
    • Build a 0.1
      • Code! < /> 😄
      • 3-6 months, regardless of bandwidth (full-time, part-time)
      • Focus on primary use case, guard the bugs through human-friendly errors
      • 0.1 a path to a 1.0, set the direction
      • Follow the design ❗, adjust if needed (this is normal 😄)
      • Code as craft, care about the code, treat it as a craft, write tests, 0.1 code rarely changes
    • Documentation
      • Not just a README, yes do this. Also: make real docs. Because designing for humans.
      • Code, for machines. Now invest in docs for humans. Humans will not talk to the code.
      • Documentation != landing page
      • Human ordering, not alphabetical. Order intuitively, like a journey. Beginners want the journey, advanced users know where to go.
      • Repeat yourself. Counterintuitive to programmers (DRY). Harder to maintain, but a much nicer experience.
      • Plan for a full week for documentation. But pays off, lasts forever.
    • Landing page
      • Marketing focus:
        • What it is, why it is, how do I use it, how do I get involved
      • Look and feel matters
      • Common look and feel across all Hashicorp landing pages
    • Ship 🚢 :shipit: 🎉
      • Think about the 0.2, clean up, ship features that slipped
      • 0.3 to 0.5, Hashicorp aims production-ready
      • If you build it they will come not necessarily true. Promote through public speaking, meet ups, conferences, get creative with funds
      • Community.
        • Be kind, be helpful, be welcoming. All the time. Otherwise, remove yourself from the situation. Step away.
        • Negative people will come.

Metadata


Wed Jun 29 10:59:31 PDT 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment