Twitter github

Open Container Initiative in 2017

Last year I had the opportunity to help build out/run the Open Container Initiative (OCI) and I wanted to take some time to reflect back on what the OCI community accomplished in 2016 and how far we’ve come in a short time since we were founded a little over a year ago.

The community has been busy! The project saw 3000+ commits from 128 different authors across 36 different organizations. With the addition of the Image Format specification project, we expanded our initial scope from just the runtime specification. Our membership grew to nearly 50 members and we also added new developer tools projects —runtime-tools and image-tools— which serve as repositories for conformance testing tools and have been instrumental in gearing up for the upcoming v1.0 release.

We’ve also recently created a new project within OCI called go-digest (which was donated and migrated from docker/go-digest). This provides a strong hash-identity implementation in Go and services as a common digest package to be used across the container ecosystem.

In terms of early adoption, we have seen Docker support the OCI technology in its container runtime (libcontainer) and contribute it to the OCI project (as runc). Additionally, Docker has committed to adopting OCI technology in its latest containerd announcement. The Cloud Foundry community has been an early consumer of OCI by embedding runc via Garden as the cornerstone of its container runtime technology. The Kubernetes project is incubating a new Container Runtime Interface (CRI) that adopts OCI components via implementations like CRI-O and rklet. The rkt community is adopting OCI technology already and is planning to leverage the reference OCI container runtime runc in 2017. The Apache Mesos community is currently building out support for the OCI image specification.

Speaking of the v1.0 release, we are getting close to launch! The milestone release of the OCI Runtime and Image Format Specifications version 1.0 will hopefully be available this first quarter of 2017 or shortly the following quarter, drawing the industry that much closer to standardization and true portability. To that end, we’ll be launching an official OCI Certification program once the v1.0 release is out. With OCI certification, folks can be confident that their OCI-certified solutions meet a high set of criteria that deliver agile, interoperable solutions.

We’ll be looking into the possibility of adding more projects in the coming year, and we hope to showcase even more demonstrations of the specs in action under different scenarios. We’ll be onsite at several industry events, so please be on the lookout and check out events page for details.

There is still much work to be done!  The success of our community depends on a wide array of contributions from all across the industry; the door is always open, so please come join us in shaping the future of container technology! In particular, if you’re interested in contributing to the technology, we recommend joining the OCI developer community which is open to everyone. If you’re building products on OCI technology, we recommend joining as a member and participating in the upcoming certification program.

Note: This was cross-posted to the OCI community blog.

Improved GitHub Code Review Tools

The default GitHub code review experience has always been lacking for me, especially when it comes to code review enforcement. I definitely admit to my bias of being a Gerrit code review fan but at least GitHub is moving in the right direction with recent code review improvements earlier this year.

On the bright side, GitHub has a fairly open API and there’s been a great ecosystem of tools that have popped up that help deal with some of the shortcomings in my opinion. Even more so after GitHub opened up the commit status API, it’s definitely enabled some interesting workflows.


One interesting code review workflow involves enforcing that changes must be reviewed by certain team members (which is a fairly common code review practice). In my opinion, the best tool that I’ve come across that handle this scenario is PullApprove. All you need is a simple metadata file that formalizes your requirements, and you’re good to go, here’s an example of what we use in the OCI project:

approve_by_comment: true
approve_regex: '^(Approved|lgtm|LGTM|:shipit:|:star:|:\+1:|:ship:)'
reject_regex: ^Rejected
reset_on_push: true
required: true
- image-spec-maintainers
name: default
required: 2

The important pieces here are the approve/reject regexes which dictate what terms will be used to approve and reject changes:


As a bonus, the “signed_off_by” setting can be used to enforce DCO which is to make sure your commits are properly signed off for DCO purposes.


I also want to give an honorable mention to LGTM which is a simple pull request approval system that is open source but not as configurable as PullApprove IMHO.

For any large scale and high velocity projects on GitHub, managing what you need to review can be a daunting task. I’ve personally found as an interesting tool that helps address the problem of managing the context of what you looked last and what’s on your queue.

Screen Shot 2016-08-04 at 9.49.55 AM

Anyways, hope this helps and happy code reviewing! If you’re interested in more integrated GitHub code review tools, I highly recommend checking out the GitHub integration directory.

Open Container Initiative at 12 Months

Today at DockerCon 2016 I had fun speaking with colleagues on where we are with the Open Container Initiative (OCI) after about a year:


The industry needs standards around the container format/runtime to enable portability, if you’re interested in joining this effort you can find more information here:

Cloud Native Computing Foundation and Kubernetes

Over the past few months I’ve been helping form an infrastructure focused open source foundation (from scratch) and acting as its interim Executive Director. I’m thrilled to announce that the Cloud Native Computing Foundation (CNCF) has accepted its first project, Kubernetes:

There’s a ton of work to do still around developing and evolving development processes, but I’m happy to have our first project which will collaborate with us to establish and evolve these processes (along with the other projects that get accepted).

In the end, it’s really been an adventure in setting up this new open source foundation and I definitely need to write a blog post on some of the lessons learned so far about the experience. I’m really looking forward to see the CNCF become a cloud native commons home for many projects, move the cloud native computing paradigm forward and define what it means to be an open source foundation in the modern GitHub era.

CFP: MesosCon 2016

MesosCon is happening again and I’m happy to be involved with the Program Committee. MesosCon 2016 will be in Denver on June 1st-2nd:

The CFP is open until March 9th and the schedule will be announced on April 4th!


@EclipseFdn Neon+1 Name: Oxygen

Oxygen (a pretty important element for life) is now the name of the Eclipse Foundation Neon+1 release:


See bug 485861 for more details.

Git Ketch multi master replication in JGit

Google is contributing a new a new multi-master implementation to JGit called Git Ketch (based on the Raft consesnus algorithm).

More information is on the JGit mailing list and on Gerrit if you’re interested in this important feature.

@EclipseFdn Neon+1 Name

The vote for the Eclipse Foundation’s Neon+1 name is over (see bug 485861):

  1. Oxygen (Condorcet winner: wins contests with all other choices)
  2. Odyssey loses to Oxygen by 121–112
  3. Osiris loses to Oxygen by 141–94, loses to Odyssey by 131–97
  4. Opal loses to Oxygen by 136–95, loses to Osiris by 112–109
  5. Oberon loses to Oxygen by 143–98, loses to Opal by 115–110
  6. Orpheus loses to Oxygen by 142–90, loses to Oberon by 121–99
  7. Ozone loses to Oxygen by 152–61, loses to Orpheus by 111–103
  8. Ohm loses to Oxygen by 152–69, loses to Ozone by 103–99
  9. Oceana loses to Oxygen by 161–54, loses to Ohm by 103–94
  10. Oort loses to Oxygen by 158–63, loses to Oceana by 116–78

Screen Shot 2016-01-14 at 9.37.03 AM Pending legal approval, Eclipse Oxygen will be the name for Neon+1

Students: Getting Involved with Open Source

Note: This is also cross-posted as an article 

As a student, getting involved in open source is a great way to improve your programming skills. From my experience, it can even help kickstart your career. But where do you begin? And how do you get involved?

I started my open source journey during my high school days when I had a lot more free time on my hands (and lived on IRC). It was through that experience that I learned how to contribute to open source through communication media like IRC and Usenet. Open source has grown since those olden days, and there are now more formal ways to get involved with open source as a student.

Programs for university students

Google Summer of Code

Google Summer of Code (GSOC) is a global program that offers students stipends to write code for open source projects. Student participants get paired with open source project mentors to create software. On top of getting paid, they build connections within the open source community. From my experience, these connections could lead to future employment opportunities.

There are over 100 open source organizations that take part in GSOC, from the Apache Software Foundation to Mozilla and more. I find it to be one of the best programs out there for students to get started in open source. If you’re interested in participating in GSOC, the 2016 application window opens March 14.

Outreachy (formerly known as Outreach Program for Women)

Outreachy takes people from groups underrepresented in free and open source software and guides them through their first contribution. The program provides a supportive community for beginning to contribute and offers focused internship opportunities twice a year with a number of free software organizations. Applications for the 2016 program will open February 9 and close March 22.

Rails Summer of Code

Rails Girls Summer of Code is a global fellowship program aimed at bringing more diversity into open source. Successful female applicants are paid a monthly stipend (July-September) to work on open source projects of their choice. The 2015 program was a roaring success, with 16 teams participating.

Facebook Open Academy

The Facebook Open Academy (FOA) program promotes collaboration between universities and open source organizations. FOA is similar in spirit to GSOC, but students end up participating by taking a normal university course. The course begins with a kickoff event in which all parties come together for an intensive weekend of learning and hacking. After the kickoff, students return to their home universities and continue work in virtual teams. The mentors continue to support the teams during the rest of the project. The course instructors at each university meet with student teams at regular intervals to review progress. Some instructors overlay a lecture series to provide further learning opportunities to students. At the end of the program, students receive a grade.

University Clubs and Programs

One thing to look out for if you’re at university is to see if there are any associated open source clubs. For example, Oregon State University (OSU) has the OSU Open Source Club and even an OSU Open Source Lab; other universities may have similar clubs to help you get involved with open source. Some universities are even formalizing minors around open source, for example, in 2014, RIT launched the first minor degree in open source software.

Programs for pre-university students

Google Code-in

For the younger crowd, Google Code-in is an annual programming competition that allows students aged 13-17 to complete tasks specified by various open source organizations. These open source organizations range from Drupal to KDE and even the Wikimedia Foundation. Over the past five years, 2,233 students from 87 countries have completed 12,495 open source tasks through the competition.

Students who complete one task earn a certificate, and students who complete three tasks earn an extra T-shirt. At the end of the competition, each organization will choose two students as the grand prize award winners and they will visit Google HQ.

This year’s Google Code-in competition is already underway and ends January 25.

Conferences and travel scholarships

Attending an open source related conference is a great way to get involved with an open source project and community. There is usually a beginner track at conferences to help first-time contributors. You also have the opportunity to network with committers and community members.

On the downside, as a student, finances are most likely tight. On the bright side, there are conferences offering travel grants for students and underrepresented groups. PyCon, for example, has a financial assistance program, and StrangeLoop has opportunity grants. For women, the Grace Hopper Conference offers scholarship grants you can apply for every year. If you’re into Linux, every LinuxCon has deeply discounted tickets for students and a diversity scholarship program.

These are just a few of my favorite conferences that offer travel assistance or scholarships. For a more thorough list see the OpenHatch wiki.

Finding mentors and beginner issues

Another way to get involved in open source is to find a great mentor. In certain large open source organizations, there are formal mentoring programs you can take part in. For example, the Fedora project has a list of mentors offering help depending on your interests. Mozilla has a great website on how to contribute and find mentors to get involved. Furthermore, Mozilla has a great volunteer site for those who want to contribute design or translation skills if you’re not a programmer.

There are also some open source projects that mark issues as beginner-friendly. To find them, I highly recommend visiting the OpenHatch issues page or Up For Grabs site, or search for beginner issues on GitHub. As a bonus, feel free to check out the 24 Pull Requests initiative, which provides a listing of projects you can contribute to at the end of each year during the holidays.

Pay it forward

It’s important to remember that we were all students at one time and everyone starts their open source journey somewhere. If you’re reading this as a student, I hope you find these resources useful to get started (please note there are more programs out there than I listed). If you’re reading this as an experienced open source developer, remember to pay it forward, we owe it to the future generation of open source developers to spend time mentoring them and lowering the barriers to contribution.

Review: @ring door bell

I recently purchased a Ring door bell for the home and installed it last weekend:

I have to admit, I was worried this would be an @internetofshit type of experience:

However, I’ve been pleasantly surprised with it and the install time event took less than an hour. The camera works great both in the day and during the night time. The speaker comes across loud and clear. The only downside right now is there is no API for the device.

On a related note, I’m also stoked that Ring recently announced an outdoor camera that integrates with the existing system:

I was in the market for an outdoor camera and this looks like it meets the majority of my needs. The only downside so far is the rechargeable battery, but it has a pretty long charge time (6-12 months) so you only have to fetch it once or twice a year to charge.

Anyways, I highly recommend the Ring doorbell for anyone that is looking for a home improvement upgrade.