Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Dramatic Consequences of the Open Source Re...

The Dramatic Consequences of the Open Source Revolution

Unrecognized Challenges & Some Modest Attempts at Solutions in Scala

Heather Miller

December 09, 2016
Tweet

More Decks by Heather Miller

Other Decks in Programming

Transcript

  1. .. Heather Miller @heathercmiller Scala Exchange, December 9th, 2016 scalacenter

    Unrecognized Challenges The Dramatic Consequences of the Open Source Revolution & Some Modest Attempts at Solutions in Scala
  2. .. Heather Miller @heathercmiller Scala Exchange, December 9th, 2016 Forget

    compilers: scalacenter The Toughest Stuff is the Soft Stuff A talk about open source. Original title… Didn’t quite capture the spirit of the talk.
  3. The same is true for digital infrastructure Open source software

    is our shared digital infrastructure. free/libre and open source = FLOSS
  4. The same is true for digital infrastructure Open source software

    is our shared digital infrastructure. Like physical infrastructure, anybody can use these things.
  5. “ ” Fill That Hole contacts the highway authority to

    get it fixed. Concerned citizen observes pothole. Report to loca government. Government fixes it. 2 1 3 (UK app)
  6. This is going to be in large part a talk

    about general FLOSS. Towards the end, we’ll come back to Scala.
  7. Roads and Bridges: The Unseen Labor Behind Our Digital Infrastructure

    W R I T T E N B Y Nadia Eghbal + many blog articles, surveys, etc, that will be cited in-line. Nadia Eghbal Pieter Hintjens Several sources of information for this talk: I found many of these references via Nadia’s excellent report! —
  8. https://www.blackducksoftware.com/2016-future-of-open-source Black Duck 2015 & 2016 “Future of Open Source”

    Survey Open source survey Interviewed 1,313 companies Key points (in 2016) 78% “of companies run on open source” Interviewed 1,240 companies (in 2015) This is up 2x over 2010! (in 2015) Companies are depending more and more on floss
  9. https://www.blackducksoftware.com/2016-future-of-open-source Black Duck 2015 & 2016 “Future of Open Source”

    Survey Open source survey Quality of solutions Key points (in 2016) top 3 reasons to use floss #1 Competitive features & technical capabilities #2 Ability to customize & fix #3 66% of companies consider FLOSS options before proprietary alternatives. (in 2015) floss is the default choice!
  10. https://bothsidesofthetable.com/understanding-changes-in-the-software- venture-capital-industries-b69a7e3a1ec7#.4m1gkd577 FLOSS is widely viewed as a way to

    help startups scale quickly and save money Mark Suster Entrepreneur & VC (in 2011) When I built my first company starting in 1999 it cost $2.5 million in infrastructure just to get started and another $2.5 million in team costs to code, launch, manage, market & sell our software. Open source became a movement — a mentality. Suddenly infrastructure software was nearly free. We paid 10% of the normal costs for the software and that money was for software support. A 90% disruption in cost spawns innovation — believe me.
  11. https://opbeat.com/blog/posts/picking-tech-for-your-startup/ FLOSS is widely viewed as a way to help

    startups scale quickly and save money Mike Krieger Instagram co-founder Borrow instead of building whenever possible There are hundreds of fantastic open-source projects that have been built through the hard experience of creating and scaling companies; especially around infrastructure and monitoring…that can save you time and let you focus on actually building out your product. Blog article: Advice on picking tech for your startup
  12. Meanwhile, OpenSSL was maintained by only a few volunteers 66%

    of all web servers were using OpenSSL In 2014, [1]: https://news.netcraft.com/archives/2014/04/08/half-a-million-widely-trusted-websites- vulnerable-to-heartbleed-bug.html 1 [2]: https://fordfoundcontent.blob.core.windows.net/media/2976/roads-and-bridges-the- unseen-labor-behind-our-digital-infrastructure.pdf Steve Marquess, noticed that one contributor, Stephen Henson, was working full time on OpenSSL. Curious, Marquess asked him what he did for income, and was shocked to learn that Henson made one-fifth of Marquess’s salary. Marquess had always considered himself to be a strong programmer, but his skills paled in comparison to Henson’s. … Henson had been working on OpenSSL since 1998. 2 2
  13. [2]: https://fordfoundcontent.blob.core.windows.net/media/2976/roads-and-bridges-the- unseen-labor-behind-our-digital-infrastructure.pdf I had always assumed, (as had the

    rest of the world) that the OpenSSL team was large, active, and well resourced. 2 In reality, OpenSSL wasn’t even able to support one person’s work. – Steve Marquess 2 And yet, industry, government, etc are largely unaware of infrastructure’s funding issues.
  14. Have you ever heard of the Truck factor? Look at

    the 133 most active projects on GitHub It gets worse. https://peerj.com/preprints/1233.pdf the minimal # of developers that have to be hit by a truck (or quit) before a project is incapacitated The Truck Factor: Determine the amount of information concentrated in individual team members from commits. 64% of projects relied on 1-2 devs to survive. Result:
  15. Table 2: Truck Factor results TF Repositories 1 alexreisner/geocoder ,

    atom/atom-shell , bjorn/tiled , bumptech/glide , celery/celery , celluloid/celluloid , dropwizard/dropwizard , dropwizard/metrics , erikhuda/thor , Eugeny/ajenti , getsen- try/sentry , github/android , gruntjs/grunt , janl/mustache.js , jr- burke/requirejs , justinfrench/formtastic , kivy/kivy , koush/ion , kriswallsmith/assetic , Leaflet/Leaflet , less/less.js , mailpile/Mailpile , mbostock/d3 , mitchellh/vagrant , mitsuhiko/flask , mongoid/mongoid , nate-parrott/Flashlight , nicolasgramlich/AndEngine , paulas- muth/fnordmetric , phacility/phabricator , powerline/powerline , puphpet/puphpet , ratchetphp/Ratchet , ReactiveX/RxJava , sandstorm- io/capnproto , sass/sass , sebastianbergmann/phpunit , sferik/twitter , silexphp/Silex , sstephenson/sprockets , substack/node-browserify , thoughtbot/factory_girl , thoughtbot/paperclip , wp-cli/wp-cli 2 activeadmin/activeadmin , ajaxorg/ace , ansible/ansible , apache/cassandra , bup/bup , clojure/clojure , composer/composer , cucumber/cucumber , driftyco/ionic , drupal/drupal , elas- ticsearch/elasticsearch , elasticsearch/logstash , ex- cilys/androidannotations , facebook/osquery , facebook/presto , FriendsOfPHP/PHP-CS-Fixer , github/linguist , Itseez/opencv , jadejs/jade , jashkenas/backbone , JohnLangford/vowpal_wabbit , jquery/jquery-ui , libgdx/libgdx , meskyanichi/backup , netty/netty , omab/django-social-auth , openframeworks/openFrameworks , plataformatec/devise , prawnpdf/prawn , pydata/pandas , Re- spect/Validation , sampsyo/beets , SFTtech/openage , sparklemo- tion/nokogiri , strongloop/express , thinkaurelius/titan , ThinkU- pLLC/ThinkUp , thumbor/thumbor , xetorthio/jedis 3 bbatsov/rubocop , bitcoin/bitcoin , bundler/bundler , divio/django-cms , haml/haml , jnicklas/capybara , mozilla/pdf.js , rg3/youtube-dl , mrdoob/three.js , spring- projects/spring-framework , yiisoft/yii2 4 boto/boto , BVLC/caffe , codemirror/CodeMirror , gra- dle/gradle , ipython/ipython , jekyll/jekyll , jquery/jquery 5 iojs/io.js , meteor/meteor , ruby/ruby , WordPress/WordPress 6 chef/chef , cocos2d/cocos2d-x , diaspora/diaspora , em- berjs/ember.js , resque/resque , Shopify/active_merchant , spotify/luigi , TryGhost/Ghost 7 django/django , joomla/joomla-cms , scikit-learn/scikit-learn 9 JetBrains/intellij-community , puppetlabs/puppet , rails/rails 11 saltstack/salt , Seldaek/monolog , v8/v8 12 git/git , webscalesql/webscalesql-5.6 13 fog/fog 14 odoo/odoo 18 php/php-src 19 android/platform_frameworks_base , moment/moment 23 fzaninotto/Faker 56 caskroom/homebrew-cask 130 torvalds/linux 250 Homebrew/homebrew PrePrints The Truck Factor Results: The higher the TF the better! Only a handful of projects with a high TF…
  16. All the cool kids are doing it: US Dept of

    Defense: A 2003 report showed that the US DoD was a major user of FLOSS. Going FLOSS-crazy http://dodcio.defense.gov/Portals/0/Documents/FOSS/dodfoss_pdf.pdf FLOSS even being used in mission-critical situations. Report concluded: Don’t ban FLOSS at the DoD! Instead, promote promote broader and more effective use of FLOSS at the DoD. Moar! Unexpectedly, DoD security depends heavily on FLOSS. “FOSS applications tend to be much lower in cost than their proprietary equivalents, yet they often provide high levels of functionality with good user acceptance.”
  17. A few trends. Using FLOSS over proprietary is now mainstream.

    Startups, enterprise, and even governments are depending on this digital infrastructure. most users of floss unaware of these trends! Orders of magnitude more users, same or fewer contributors.
  18. How can we reverse this? More companies should allow engineers

    to contribute to FLOSS If you profit off of it, give back to this shared infrastructure!
  19. A new not-for-profit center established at EPFL EPFL (the Swiss

    Federal Institute of Technology at Lausanne) First a 30 second intro to the SC…
  20. O u r m i s s i o n

    Independently guide and support the entire Scala community. Coordinate and develop open source libraries and tools for the benefit of the overall Scala community. Provide deep, quality, and freely available educational materials for Scala.
  21. A new not-for-profit center established at EPFL EPFL Equally backed

    by 10 companies. All major stakeholders in Scala
  22. The SC aims to make it easier to contribute to

    core Scala + the Scala ecosystem. We want to grow contributor base across core libs + ecosystem. Higher truck factor 
 = good :)
  23. Concretely, A handful of initiatives: Democratizing the standard library Defining

    “scala-core” 1.) Democratizing the standard library 2.) Forming a Scala Platform Batteries-included! 3.) Ecosystem hackathons 4.) Scala Improvement Process
  24. Separating out core and platform Our compiler has stabilized, but

    our libraries have frozen along with it. We want to open up libraries to everyone, in the form of a small core and a batteries-included platform. scala-library.jar scala-core.jar scala-platform.jar If it’s a must-have library for most projects, and if it’s maintained, ship it with the Scala Platform. e.g, ScalaTest Step 1:Defining “scala-core”
  25. Separating out core and platform Our compiler has stabilized, but

    our libraries have frozen along with it. We want to open up libraries to everyone, in the form of a small core and a batteries-included platform. scala-library.jar scala-core.jar scala-platform.jar If it’s a must-have library for most projects, and if it’s maintained, ship it with the Scala Platform. e.g, ScalaTest Step 1:Defining “scala-core” Feedback + help welcome! Just getting started on this. We need to hear from you on this one! Julien Richard Foy
  26. Scala Platform Process Step 2: Forming a Scala Platform Jorge

    Vicente Cantero Goal: provide infrastructure Help Scala ecosystem libraries stay alive! Batteries-included set of libs to get started with. for building, continuous integration, and releasing help with project governance processes and guidelines to recruit contributors Make it easier on platform library authors to ensure that maintenance and releases of their library can scale beyond just them alone. Two ways:
  27. Scala Platform Process Jorge Vicente Cantero Infrastructure: sbt-platform plugin configuring

    automatic nightly builds, automatic releases of stable versions when a git tag is found, MiMa compatibility checks and PGP signatures for artifacts (with Scala Platform keys), integration with our Drone setup for writing your own sbt scripts, and other configuration that is oftentimes tedious to manage. continuous integration Continuous integration (CI) is provided by Drone, on an EPFL cluster. (SPP) a release manager For automatically releasing staged changes
  28. Scala Platform Process Jorge Vicente Cantero Governance: Based on Pieter

    Hintjen's C4 contract: Decentralize decision-making. (SPP) Goal: happy contributor community. Set of processes aimed at growing a community of contributors. The Collective Code Construction Contract (C4) is an evolution of the github.com Fork + Pull Model, aimed at providing an optimal collaboration model for free software projects.
  29. Scala Platform Process Governance: Based on Pieter Hintjen's C4 contract:

    Decentralize decision-making. (SPP) Goal: happy contributor community. Set of processes aimed at growing a community of contributors. The Collective Code Construction Contract (C4) is an evolution of the github.com Fork + Pull Model, aimed at providing an optimal collaboration model for free software projects. Jorge Vicente Cantero Help us evolve the SPP! Just released v0 on November 28th! Join in on the discussions! on our new Discourse installation!
  30. Ecosystem Hackathons Scala World (Sep’16), Lambda World (Oct’16), Scala Exchange

    (Dec’16) tomorrow!! Structure and process for bringing people together to work on Scala ecosystem projects Community-building exercise Pair programming Library author in the room Library author curates ~10 todos, accomplishable in 3hrs by newcomers ahead of time Goal of participants: 1 PR merged by end of hackathon
  31. Ecosystem Hackathons Scala World (Sep’16), Lambda World (Oct’16), Scala Exchange

    (Dec’16) Julien Richard Foy Ólafur Páll Geirsson Jorge Vicente Cantero Portable, repeatable. For any library/project. Eventually: Recipe for meetup group organizers to follow in their cities. Goal: How to help? JOIN US TOMORROW!
  32. Revived Scala Improvement Process Accepted: Rejected: In progress/under review: SIP-30

    Static members SIP-28 and SIP-29 Scala.meta SIP-25 Trait parameters SIP-24 Repeated by-name parameters SIP-23 Singleton Type parameters SIP-24 Spores SIP-20 Improved lazy val initialization SIP-26 Unsigned Integers SIP-12 Uncluttering Scala's syntax for control structures, SIP-27 Trailing commas
  33. Revived Scala Improvement Process Accepted: Rejected: In progress/under review: SIP-30

    Static members SIP-28 and SIP-29 Scala.meta SIP-25 Trait parameters SIP-24 Repeated by-name parameters SIP-23 Singleton Type parameters SIP-24 Spores SIP-20 Improved lazy val initialization SIP-26 Unsigned Integers SIP-12 Uncluttering Scala's syntax for control structures, SIP-27 Trailing commas Help discuss language changes! Join in on the discussions! On Discourse! How to help?
  34. In the last five years, open source infrastructure has become

    an essential layer of our social fabric. But much like startups or technology itself, what worked for the first 30 years of open source’s history won’t work moving forward. In order to maintain our pace of progress, we need to invest back into the tools that help us build bigger and better things. If you remember anything from this, remember this quote by Nadia Eghbal:
  35. Thank you We dont’ want your money. We want PRs!*

    *For everybody not just Scala core repos. Questions? And remember…