Open Source Craft at Twitter
      Chris Aniszczyk (@cra)
       http://aniszczyk.org

           #monkigras
Twistory
Twitter History
2006: A simple idea...
2008: Growing Pains
2009... Crazy Growth
2010+: Shit, build a company!
Employee Growth...
Now: Growth Continues...

1400+ Employees Worldwide
50% Employees are Engineers
200M+ Active Users
400M+ Tweets per Day
33+ Languages Supported
60% Active Users are on Mobile
100+ Open Source Projects
Engineers run the asylum...
Code dumping happens...
Code dumping happens...
No Ownership = Problems
         Start with ownership.
 Created an Open Source Office in 2011
Open Source
Craft and Culture
   How we roll...
Open Source Craft
   (operating principles)


        Use Open
      Assume Open
   Define Secret Sauce
   Measure Everything
    Default to GitHub
   Default to Permissive
    Acquire and Open
      Pay it Forward
Use Open
Use and benchmark open source software by
  default. When starting a new initiative, always
   evaluate open source options before going to
 reinvent the wheel. (e.g., if redis doesn’t work for
        you, you better have solid evidence)
Twitter Runs on Open Source
Define Secret Sauce
 Don’t open source anything that represents a core
  business value. Define your secret sauce so
there’s a shared understanding that can guide
  decisions. Embed this secret sauce within your
         culture and company via training.
Secret Sauce, what is it?




     What’s yours?
If you know your secret sauce...
Assume Open
  Assume that what you are developing will be
opened in the future. Pretend the whole world
  will be watching. Use reasonable third party
dependencies to prevent pain down the road. (we
 mostly use Apache’s Third Party Guidelines as a
                 starting point)
Default to GitHub
 The GitHub community is the largest open source
community, with over three million users. You would
  be stupid to ignore that fact. Embrace social
      coding tools to lower the barrier to
        contribution and participation.
Foundations are Good*
   We just prefer not to default to them. We view
 them as a place for stable projects that grow
into maturity, not to incubate new projects. Our
goal is to gain traction first as fast as possible. If not,
                  fail fast and carry on.
Default to Permissive
Be Permissive
For outbound open source software, we default to
OSI permissive licenses (the ALv2 in the majority of
cases). We do this so we can maximize adoption
 and participation, which we favor instead of
                     control.
Embrace the Trend




  See http://blogs.the451group.com/opensource/2011/12/19/the-future-of-commercial-open-source-business-strategies/
Notes from Antirez (1)
 “First of all, open source for me is not a way to contribute to
  the free software movement, but to contribute to humanity.
  This means a lot of things, for instance I don't care about
what people do with my code, nor if they'll release back
   their modifications. I simply want people to use my
                  code in one way or the other.

 Especially I want people to have fun, learn new stuff, and
make money with my code. For me other people making
money out of something I wrote is not something that I
           lost, it is something that I gained.”

    See http://antirez.com/news/48
Notes from Antirez (2)
1) I'm having a bigger effect in the world if somebody
can pay the bills using my code.
2) If there are N subjects making money with my code,
maybe they will be happy to share some of this money
with me, or will be more willing to hire me.
3) I can be myself one of the subjects making money
with my code, and with other open source software
code.

For all this reasons my license of choice is the BSD
licensed, that is the perfect incarnation of do whatever you
want as a license.”
    See http://antirez.com/news/48
Acquire and Open*
   Include open sourcing software in M&A
discussions, especially if you’re mainly acquiring
talent or shelving the product. There’s no need for
              software to go to waste.
Acquire and Open: RedPhone




   See https://github.com/WhisperSystems/RedPhone
Acquire and Open: Clutch.IO




   See http://engineering.twitter.com/2012/10/open-sourcing-clutchio.html
   See http://www.prweb.com/releases/2012/10/prweb10067693.htm
Measure Everything
 If you can’t measure what you’re doing, you have
no idea what you’re doing. We measure everything
inside of Twitter (affectionately called birdbrain)
         and make it accessible to everyone.
Pay it Forward
   Support open source organizations and
  projects important to your business, it’s the
right and smart thing to do. This can be financially
or simply staffing projects that are strategic to you.
Open Source Craft*

                                  Use Open
                                Assume Open
                             Define Secret Sauce
                             Measure Everything
                              Default to GitHub
                             Default to Permissive
                              Acquire and Open
                                Pay it Forward

Note: This fits in a tweet
Scaling
Scaling an open source program
Light / Automated Process
  Automated Process via JIRA Workflow
   Inspiration from Eclipse.org’s IPZilla
Not all process is bad!
    “process is an embedded reaction to priority stupidity”
                            True.
              Remember the history of surgery?
              Ignaz Semmelweiz (hand washing)
    Surgery checklist: Glad your surgeon washes hands?
Even with surgery process, metal objects still are left in people :)




      See http://many.corante.com/archives/2003/09/17/process_is_an_embedded_reaction_to_prior_stupidity.php
      See http://en.wikipedia.org/wiki/Ignaz_Semmelweis
Automate Quality Checklist
  Tooling to check for baseline “quality” before we open

                      √ README
                      √ LICENSE
                 √ CONTRIBUTING.MD
                      √ .travis.yml
              √ Avoid KEYS / sensitive bits
              √ Avoid GPL License Family

       Attempts to build and posts results in JIRA.
          Enforces and teaches good practices.
Automate Sourcing for Hiring
                  Let’s scale hiring a bit!

 Run monthly queries on contributors to our open source
           projects and projects of interest.

          Hand it off the Recruiting and the ATS.

It’s hard enough to find good talent, why not hire from open
                source projects of interest.
Automate Reporting / Metrics
         Send out weekly reports based on:

       Open Sourced Projects (what opened)
      Top Committers (commits+issues closed)
           Releases (assumed via git-tag)
   Contentious Issues (issues with most comments)
          Top Watched Project (most stars)
           Top Forked Project (most forks)

                   Track trends.
               Motivates contribution.
Conclusion
    Define Your Principles
Open Source Almost Everything
Measure / Automate Everything
Thanks for listening!
 (especially if you survived last night’s beer fest)

             @cra
         zx@twitter.com

Open Source Craft at Twitter

  • 1.
    Open Source Craftat Twitter Chris Aniszczyk (@cra) http://aniszczyk.org #monkigras
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
    Now: Growth Continues... 1400+Employees Worldwide 50% Employees are Engineers 200M+ Active Users 400M+ Tweets per Day 33+ Languages Supported 60% Active Users are on Mobile 100+ Open Source Projects
  • 9.
  • 10.
  • 11.
  • 12.
    No Ownership =Problems Start with ownership. Created an Open Source Office in 2011
  • 13.
    Open Source Craft andCulture How we roll...
  • 14.
    Open Source Craft (operating principles) Use Open Assume Open Define Secret Sauce Measure Everything Default to GitHub Default to Permissive Acquire and Open Pay it Forward
  • 15.
    Use Open Use andbenchmark open source software by default. When starting a new initiative, always evaluate open source options before going to reinvent the wheel. (e.g., if redis doesn’t work for you, you better have solid evidence)
  • 16.
    Twitter Runs onOpen Source
  • 17.
    Define Secret Sauce Don’t open source anything that represents a core business value. Define your secret sauce so there’s a shared understanding that can guide decisions. Embed this secret sauce within your culture and company via training.
  • 18.
    Secret Sauce, whatis it? What’s yours?
  • 19.
    If you knowyour secret sauce...
  • 21.
    Assume Open Assume that what you are developing will be opened in the future. Pretend the whole world will be watching. Use reasonable third party dependencies to prevent pain down the road. (we mostly use Apache’s Third Party Guidelines as a starting point)
  • 22.
    Default to GitHub The GitHub community is the largest open source community, with over three million users. You would be stupid to ignore that fact. Embrace social coding tools to lower the barrier to contribution and participation.
  • 23.
    Foundations are Good* We just prefer not to default to them. We view them as a place for stable projects that grow into maturity, not to incubate new projects. Our goal is to gain traction first as fast as possible. If not, fail fast and carry on.
  • 24.
  • 25.
    Be Permissive For outboundopen source software, we default to OSI permissive licenses (the ALv2 in the majority of cases). We do this so we can maximize adoption and participation, which we favor instead of control.
  • 26.
    Embrace the Trend See http://blogs.the451group.com/opensource/2011/12/19/the-future-of-commercial-open-source-business-strategies/
  • 27.
    Notes from Antirez(1) “First of all, open source for me is not a way to contribute to the free software movement, but to contribute to humanity. This means a lot of things, for instance I don't care about what people do with my code, nor if they'll release back their modifications. I simply want people to use my code in one way or the other. Especially I want people to have fun, learn new stuff, and make money with my code. For me other people making money out of something I wrote is not something that I lost, it is something that I gained.” See http://antirez.com/news/48
  • 28.
    Notes from Antirez(2) 1) I'm having a bigger effect in the world if somebody can pay the bills using my code. 2) If there are N subjects making money with my code, maybe they will be happy to share some of this money with me, or will be more willing to hire me. 3) I can be myself one of the subjects making money with my code, and with other open source software code. For all this reasons my license of choice is the BSD licensed, that is the perfect incarnation of do whatever you want as a license.” See http://antirez.com/news/48
  • 29.
    Acquire and Open* Include open sourcing software in M&A discussions, especially if you’re mainly acquiring talent or shelving the product. There’s no need for software to go to waste.
  • 30.
    Acquire and Open:RedPhone See https://github.com/WhisperSystems/RedPhone
  • 31.
    Acquire and Open:Clutch.IO See http://engineering.twitter.com/2012/10/open-sourcing-clutchio.html See http://www.prweb.com/releases/2012/10/prweb10067693.htm
  • 32.
    Measure Everything Ifyou can’t measure what you’re doing, you have no idea what you’re doing. We measure everything inside of Twitter (affectionately called birdbrain) and make it accessible to everyone.
  • 33.
    Pay it Forward Support open source organizations and projects important to your business, it’s the right and smart thing to do. This can be financially or simply staffing projects that are strategic to you.
  • 34.
    Open Source Craft* Use Open Assume Open Define Secret Sauce Measure Everything Default to GitHub Default to Permissive Acquire and Open Pay it Forward Note: This fits in a tweet
  • 35.
  • 36.
    Light / AutomatedProcess Automated Process via JIRA Workflow Inspiration from Eclipse.org’s IPZilla
  • 37.
    Not all processis bad! “process is an embedded reaction to priority stupidity” True. Remember the history of surgery? Ignaz Semmelweiz (hand washing) Surgery checklist: Glad your surgeon washes hands? Even with surgery process, metal objects still are left in people :) See http://many.corante.com/archives/2003/09/17/process_is_an_embedded_reaction_to_prior_stupidity.php See http://en.wikipedia.org/wiki/Ignaz_Semmelweis
  • 38.
    Automate Quality Checklist Tooling to check for baseline “quality” before we open √ README √ LICENSE √ CONTRIBUTING.MD √ .travis.yml √ Avoid KEYS / sensitive bits √ Avoid GPL License Family Attempts to build and posts results in JIRA. Enforces and teaches good practices.
  • 39.
    Automate Sourcing forHiring Let’s scale hiring a bit! Run monthly queries on contributors to our open source projects and projects of interest. Hand it off the Recruiting and the ATS. It’s hard enough to find good talent, why not hire from open source projects of interest.
  • 40.
    Automate Reporting /Metrics Send out weekly reports based on: Open Sourced Projects (what opened) Top Committers (commits+issues closed) Releases (assumed via git-tag) Contentious Issues (issues with most comments) Top Watched Project (most stars) Top Forked Project (most forks) Track trends. Motivates contribution.
  • 41.
    Conclusion Define Your Principles Open Source Almost Everything Measure / Automate Everything
  • 42.
    Thanks for listening! (especially if you survived last night’s beer fest) @cra zx@twitter.com