1. 程式人生 > >A Blueprint for Internal Open Source

A Blueprint for Internal Open Source

A Blueprint for Internal Open Source

By Chris Downey

Internal Open Source (aka Inner source) is a topic that I’ve seen come up in lots of different places, but I’ve never seen it first-hand translate into anything beyond an interesting discussion.

In Skyscanner, an internal blog generated a slack discussion, which soon became a working group of interested people from different parts of the company. We all shared a desire to create a workable Inner source approach for Skyscanner and this is how we went about it.

A fellowship of the willing

We started out with an invite to those who had been active in the discussion to form an initial working group.

In our first session together, we started to frame the discussion around the core problems that we were trying to solve. A stand out area was to be able to simplify the path to production for innovative ideas. In addition, how can those ideas make a business impact with minimal blocking dependencies and frustrations.

That particularly resonated for me as it sums up the whole agile movement:

To deliver value in the most friction-less of ways.

Getting Going

Our aims of the group

A few months prior to the group forming, we had invited Dan North to Skyscanner to give a talk to the company on scaling. One concept that really resonated, was that of guiding principles. Guiding principles can be a useful mechanism to help align an organisation, helping people of every level make a consistent decision.

Dan North at Skyscanner Office in Edinburgh

In the working group we felt that defining some guiding principles would help bring inner source to life. At this stage, there was already some inner source activity happening, but it wasn’t pain free. To create the guiding principles, we started to collect some examples of real problems, dilemmas and friction that was being felt both from contributors and service owners. We have a couple of squads in the company who do not own any services, so inner source was their only mode of working, providing a great source of insights.

Our guiding principles

Guiding Principle: Make each other’s life easier

Context: There had been some delays and frustrations with both the service owners and for those contributing to a service.

Intent: Based on some pain points felt from both parties, our guidelines gave some basic advice on the importance of

Contributors

  • discuss with service owner any changes in advance
  • don’t reinvent the wheel
  • follow the service owner’s standards
  • make sure tests pass
  • add good alerting
  • demo before a merge request (if a demo doesn’t make sense/is feasible, what about some screenshots or a little video?)
  • small merge requests make it easier for everyone

Service Owners

  • invest time in creating and maintaining good readme + contributing files
  • set expectations to the contributor — timelines, release schedules

All

  • be clear about as much as possible e.g. by default, service owner owns the code after contribution

Guiding Principle: Leave things better than you found them

Context: What do you do if you spot a problem or identify missing information.

Intent: For the quality of the codebase and supporting artefacts to improve. If you spot problems, try to make it smoother for the next contributor and for the service owner — e.g. improve a readme/contributing file, improve the codebase, add those missing unit tests etc.

Guiding Principle: Reduce scope, not standards

Context: Some contributors were looking for some standards to be relaxed for short lived experiments (e.g. dropping code style for learning experiments)

Intent: To keep the quality of the code base as high as possible, regardless of the type of change that is being worked on. If the overhead in doing that is too high, then look to reduce the scope of what you are trying to deliver. Use automated tools as much as possible to make things easier.

Guiding Principle: Create it, clean it

Context: It came from a scenario where service owners were spending lots of time, removing code from failed experiments.

Intent: To make it clear that it is the contributor’s responsibility to clean up a change after an experiment has taken place.

Guiding Principle: Evolve or decommission

Context: Longer term, we want to have all services to be in a state where anyone in the company can contribute to them. There are some legacy parts of the overall system that are not quite inner source friendly at this stage.

Intent: Is for legacy parts of the system to have a strategy to evolve or be decommissioned. Our guideline also includes ways of incrementally improving e.g. strangler application

Guiding Principle: Lower the barrier to experimentation

Context: Skyscanner is live in 50+ country specific domains. What we find is that markets change frequently and have different characteristics. Across Skyscanner, there are hundreds of different experiments taking place each day. Over time what worked or didn’t work in the past is no guarantee for the future.

Intent: Is to make it as easy as possible for contributors to run scientific experiments. We want previous experiments to be shared, but with the contributor having the final say whether to proceed or not with an experiment. The principle also included our guidelines on what makes an experiment scientific.

Internal Open Source

This is part 2 in a series of 3 posts

SEE the world with us

Many of our employees have had the opportunity to take advantage of our Skyscanner Employee Experience (SEE) — a self-funded, self-organized programme to work up to 30 days during a 24 month period, in some of our 10 global offices. There is also the opportunity to work for 15 days per year from their home country, if an employee is based in an office outside of the country they call home.

About the Author

Hi, my name is Chris Downey and thanks for reading my post. Here are some of my previous Skyscanner blogs :

Chris Downey

相關推薦

A Blueprint for Internal Open Source

A Blueprint for Internal Open SourceBy Chris DowneyInternal Open Source (aka Inner source) is a topic that I’ve seen come up in lots of different places, b

Ask HN: Is there a Google for searching website source code?

If a website was referencing a JS file at https://evil.com/keylog.js, how could I see how many other sites this is embedded in?

A Blueprint for a Better Digital Society

Digital transformation is remaking the human world, but few are satisfied with how that's been going. That's especially true in media, where the dominant m

A note from an open source lead developer who got banned from his community due to Code Of Conduct…

A note from an open source lead developer who got banned from his community due to Code Of Conduct violationsI have been, for twelve years, the most prolif

Kharagpur Winter of Code is a 5-week long, open-source mentoring and coding

Hi! We are organizing third edition of Kharagpur Winter Of Code. If you have any open source project, in which you are not able to contribute due to lack o

Ask HN: Are grants sustainable for supporting open source projects?

I posted the other day about how to sustain Open Source projects via donations and you guys gave great feedback:https://news.ycombinator.com/item?id=185275

kafka-rest:A Comprehensive, Open Source REST Proxy for Kafka

machine cost ace def hms mas benchmark file oss Ewen Cheslack-Postava March 25, 2015 時間有點久,但講的還是很清楚的 As part of Confluent Platform 1.0

Who Pays for Open Source? A Case for Open Governance & Enterprise Contributions

Who pays for open source? Angel Diaz makes the case for open governance and enterprise contributions to open source. He discusses som

Darknet: Open Source Neural Networks in C - Train a Classifier on CIFAR-10

Darknet: Open Source Neural Networks in C - Train a Classifier on CIFAR-10 Darknet is an open source neural network framework written in C and C

Open Source Vbootkit 2 0 Attack Tool for Windows 7

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

67 open source tools and resources for IoT

The idea behind open source has been around for years, long before the movement toward open source software in the late 1980s—even before

ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras

1 摘要 我們為單眼,立體和RGB-D相機提供完整的SLAM系統ORB-SLAM2,包括地圖重用,閉環檢測和重定位功能。 該系統可在各種環境中的標準CPU中實時工作,從小型手持室內序列,到工業環境中飛行的無人機和城市周圍的汽車。我們的後端基於捆綁調整,具有單眼和

Open source HTML5 Charts for your website – Max的程式語言筆記

試了一下 Chart.js 效果滿好的,而且使用簡單,不會被其他的 css 給綁架,不會互相比影響。css 會被影響的是:MDB Free charts.js 使用方法是要先下載: Chart.bundle.min.js 然後再修改掉官方附的 html 就可以拿到自己想要的效果。

Hacktoberfest is back. Contribute to open source and get a cool T

Hacktoberfest is back. Contribute to open source and get a cool T-shirtDesign for hacktoberfest T-shirtHacktoberfest is an event GitHub and Digital Ocean h

An Open Source Cross-Platform AI Tool for Intelligent Screen Capture | Machine Learning Blog

This post is authored by Tara Shankar Jana, Senior Technical Product Marketing Manager at Microsoft. What if we could infuse AI into the everyday tool

Ask HN: Open source commitment for commercial software

Hi HN,I write a bunch of open source software. I also make and sell closed source products. I'm a small shop and sometimes my clients worry about platform

Datmo: the Open Source tool for tracking and reproducible Machine Learning experiments

As data scientists frequently training models while in grad school and at work, we've faced many challenges in the model building process. This problem has

 Free and Open Source Ad Targeting for Campaigns

Why We Built ItDigital Directors and the political campaigns they run face a unique marketing challenge unlike most businesses — they must reach a wide ran

Ask HN: What are some open source companies for part

It's okay if they aren't 100% FOSS, preferably things like systems programming, application software etc..

5 Open Source HTML5 Video Players for 2018

Why Choose an Open Source Player?Open source video players offer some advantages over players developed with proprietary software. Many businesses and indi