and How hand over OSS project
SHIBATA Hiroshi / GMO Pepabo, inc.
2017.08.05 builderscon tokyo 2017
How to take over OSS project
Executive Ofﬁcer CPO(Chief Productivity Ofﬁcer)
Director of Business Process Re-engineering Ofﬁce
Hiroshi SHIBATA @hsbt
name: “SHIBATA Hiroshi”,
organizations: [“pepabo”, “ruby_core_team”, “asakusarb”],
commit_bits: [“ruby”, “rake”, “rubygems”, “rdoc”, “psych”, “syck”, “ruby-
build”, “railsgirls”, “railsgirls-jp”, …],
sites: [“hsbt.org”, “ruby-lang.org”, “rubyci.org”, “railsgirls.com”,
A History of Ruby(Short Ver.)
•Ruby 1.8.7 bundled a lot of library named standard library a.k.a stdlib.
•Ruby 1.9.x bundled rubygems that is ruby library packaging and distributing.
•Many of libraries was born after that. Example for rspec, nokogiri, rake and thor. It’s
start time for Ruby language and library ecosystems.
•First Authors of famous library is burnout.
•Some of useful gems are changed maintainers of second generation.
•Ruby 2.4, 2.5
How continue to maintain OSS
What I talk?
•Case study of gem for take over.
•They has commonly knowledge of OSS.
Pattern of take over OSS
1. If you triage or comments to Issue, an send a pull request to
repository. Current maintainer add commit bit to you.
2. Request to take over via E-Mail/DM/slack…Etc
3. Request to take over via face to face communication.
Case 1: ruby/rake
Make in Ruby
Rake is a Make-like program implemented in Ruby. Tasks and
dependencies are speciﬁed in standard Ruby syntax.
task :awesome do
task beat: [:awesome] do
task default: :beat
•Rake was originally created by Jim Weirich, who unfortunately
passed away in February 2014.
•This repository was originally hosted at github.com/
jimweirich/rake, It has been moved to github.com/ruby/rake by
•Rake adopted SemVer policy. (v0.9.x to v10.x.y)
•@drbrain and @hsbt maintain ruby/rake now.
Rewrite hoe to bundler
•You may invoke to `bundle` when
to see Gemﬁle
•Without bundler, you need to
install hoe and their plugins.
“boilerplate” is important for
My mistake - TaskManager#last_comment
• I removed obsoleted attr_accessor named `@last_comment`
with deprecated code.
• I found a my commit is “breaking changes” when it happens.
• It was referenced yard, rspec and rubocop. When users
updated Rake 11, It breaks rake task with these gems.
We should prepare “Transition Path” for breaking changes.
Case 2: ruby/psych
A libyaml wrapper for Ruby
• It supports bundled libyaml-* sources. You can build psych
without libyaml-devel(dev) packages.
# Load YAML in to a Ruby object
Psych.load('--- foo') # => 'foo'
# Emit YAML from a Ruby object
Psych.dump("foo") # => "--- foo\n...\n"
History of Psych
• Original author is Aaron Patterson a.k.a @tenderlove
• I’ve been backport/forwardport between tenderlove/psych
• After that, I was promoted gem maintainer. I released psych to
Problem for psych case
• I’m not project Owner. Because I could not change
configuration of CI or project settings.
• Sometimes I got build fail of JRuby version.
I hope to prepare to test with JRuby on Travis CI.
• I picked up tenderlove on RedDotRubyConf and transferred
personal repository of Github to organization account named
• Now, canonical repository of psych is https://github.com/ruby/
• I can update CI configuration and team of contributors.
Face to Face is a best practice for OSS development.
We hard to fix and release these security issue. so all of release
maintainer are volunteer work.
If you have a plan for OSS take over, you should concern security
• Do you have a connection of security community?
• Do you have a friends of security specialist?
Case 3: ruby/rdoc
RDoc produces HTML and online documentation for Ruby projects.
EFGJOJUJBMJ[F TUS [email protected] [email protected] [email protected]
[email protected] [email protected]
[email protected] DPNQJMFS FPVUWBS
!TSD !FODPEJOH !GSP[[email protected] TUS
History of RDoc
• Canonical repository of RDoc was rdoc/rdoc.
• It maintained rdoc team (not ruby core, seattle.rb)
• I only backport to ruby core from rdoc upstream.
Problem of JSON dependency.
• Ruby 2.4 changed Integer Unification. Therefore json-2.x breaks
Ruby 2.4.x or later.
• You could not install rails with Ruby 2.4 at it time.
• `gem i rails` was stopped caused by json dependency via rdoc/
See details: https://www.hsbt.org/diary/20160829.html
And my talk of RubyKaigi 2017
• I was promoted RDoc maintainer.
• I fixed json dependency from RDoc.
• After that. I released new versions of RDoc and triage issues
and pull requests on rdoc/rdoc.
“Release” is important
I think “Take over the OSS project” is that take over release
Sometimes, previous maintainer only add commit bit when take
over the OSS. If you faced it, you should request to release grant
from previous maintainer.
Current status of rdoc
• I handle a project of rdoc and management releases(not
• I have no idea for improving documentation tool about rdoc
If you are interested in rdoc or documentation tools of Ruby,
Please discuss to me. (It’s a take over chance)
Case 4: rubygems/rubygems
RubyGems is a package management framework for Ruby.
• The Ruby community's gem host.
• Command line tool of rubygems
• Rubygems have difference from ruby core repository. I created a
patch for rubygems/rubygems from ruby core.
• But I felt that rubygems has no project/product manager. In the
past, @drbrain released new version of rubygems. But it
decreased a number of releases in 2015.
• In Q4 of 2015, RubyTogether taken over the rubygems projects.
Bundler team funded RubyTogether take over rubygems/
rubygems. (I didn’t understand that at it times.)
• Some maintainers removed from rubygems/rubygems.
• I requested to remain maintainer of rubygems.
Current problem of rubygems
bundler,rubygems team are not interested in ruby core collaboration.
(It’s my point of view.)
In the past, We easily discuss maintenance plan and policy about
ruby and rubygems to @tenderlove and @drbrain.
I hard to backport a patch to rubygems from ruby core. Because
these patch only need ruby trunk. It is needless stable versions.
• I should have declared take over at an early stage.
• I can fork rubygems/rubygems to ruby/rubygems. But it’s worse to
We should discuss and communicate bundler/rubygems team
Gemiﬁcation for Ruby 2.5.0
Gemiﬁcation for stdlib
• We extract old or un-maintain status stdlibs like net-telnet, xmlrpc,
tk to bundled gems.
• These are extracted under the https://github.com/ruby/ . And
shipped on rubygems.org
• Other gems are also extracted at the future.
Status of OpenSSL binding
• OpenSSL is already extracted default gems. You can update it
separated ruby core releases same as rubygems, rdoc, bigdecimal.
• It’s maintained by @rhenium
• Upstream was changed github repository from svn.ruby-lang.org
• He aggressively maintains new feature of openssl
fiddle is standard library for wrapper of libffi. But fiddle was already
reserved another implementation rubygems.org
I did coordinate to transfer above namespace and override CRuby
• ඪ४ͷ boilerplate ʹἧ͑ͯίʔυϕʔεΛॻ͖͑Δ͜ͱϝ
• OSS ΛҾ͖ܧ͙ϦϦʔεݖݶΒ͓͏
• OSS ਓͱਓͱͷίϛϡχέʔγϣϯɺbuilderscon ͷΑ͏ͳ
• OSS ΛҾ͖ܧ͍Ͱ։ൃ͢Δͷָ͍͠
Let’s Happy Hacking!