87
OPEN SOURCE BY DEFAULT

Orta Therox

Embed Size (px)

Citation preview

Page 1: Orta Therox

OPEN SOURCEBY DEFAULT

Page 2: Orta Therox

@ O R TA

I'm Orta Therox, I run a development team of 5 iOS developers at a company called Artsy.

Page 3: Orta Therox

You might not have heard of it, that’s totally cool. I’ve give you a tiny overview - only the important bits for the this talk

Page 4: Orta Therox

The start-up Art.sy aims to do for visual art what Pandora did for music: become a source of discovery, pleasure and education.”

We're planning to do this by making all the world’s art accessible to anyone with an internet connection.

If you’re into art, you’d love us. The important bit that I want to reference later, is our values system

Page 5: Orta Therox

valueswhat is a values system?e.g. what are the fallbacks for when you make the hardest decision

Page 6: Orta Therox

1- ART MEETS SCIENCE

Our work should be the intersection of art meets science, practically speaking that means: - showcase art. - Involve artists in our process, - regard art historians as peers for programmers

Page 7: Orta Therox

2- ART MEETS SCIENCE - PEOPLE ARE PARAMOUNT

Care about individuals, if a group decision strongly hurts individuals, it’s probably a bad call

Page 8: Orta Therox

3- ART MEETS SCIENCE - PEOPLE ARE PARAMOUNT - QUALITY WORTHY OF ART

Art isn’t always beautiful, it isn’t always functional, but we need to make sure we showcase it in the best way possible

Page 9: Orta Therox

4- ART MEETS SCIENCE - PEOPLE ARE PARAMOUNT - QUALITY WORTHY OF ART - POSITIVE ENERGY

Being nice is nice!

Page 10: Orta Therox

5- ART MEETS SCIENCE - PEOPLE ARE PARAMOUNT - QUALITY WORTHY OF ART - POSITIVE ENERGY - OPENNESS

The art world is extremely closed.Lots of back-room dealingMakes it very hard to get involved if you’re not from the “scene”

Page 11: Orta Therox

ossIn 2013, I started devoting serious amounts of time to open source.

I already had a lot of experience, I have a tattoo about OSS from when I was 16

Page 12: Orta Therox

IMPACT

I didn’t have the words then, but I do now. I was looking at trying to help out, and to try and make an impact.

Page 13: Orta Therox

I choose what I work on based on its impact, so I joined the biggest project in our ecosystem, a dependency manager called CocoaPods.

Android peeps: When no-one clapped at Google IO last year at an announcement, that was when Google announced that they were shipping via CocoaPods

Page 14: Orta Therox

Documentation.Websites.BrandingBeing a project manager of sorts.One-off community events ( socks, meetups, hackathons )

Page 15: Orta Therox

apps500,000+

Page 16: Orta Therox

clones/fetches in a week1,100,000+

Page 17: Orta Therox

impact through oss

It’s great being able to have an impact through OSS, but then during the day, I would work on an app whose impact is far more local.

I've been working at Artsy 4 and a half years.

Page 18: Orta Therox

IMPACT ON THE ART WORLD

Artsy’s apps have an impact on the Art world.

Page 19: Orta Therox

MORE THAN JUST THE ART WORLD

Part of the idea for us when moving to OSS by default was about trying to make our work have more of an impact.

Page 20: Orta Therox

IMPACTING YOUR COMMUNITIES

We wanted to use our development time to not just affect Artsy.So we changed our mindset to: how can we make an impact at Artsy, but also make an impact on the community.

Page 21: Orta Therox

mindsetI wanted to set the strongest foundations I possibly could for our growing team

I set myself the goal: Make the Artsy mobile team entirely transparent.

Page 22: Orta Therox

ARTSY MOBILE TEAM ENTIRELY TRANSPARENTMAKE THE

It took roughly two years to get to a point where we operate 100% in the open.

I want to give some examples:

Page 23: Orta Therox

PROGRAMMING

For all these examples I’m using our flagship iOS App, EigenYou can see all of these details on github.com/artsy/eigen

You can see all of our commits

Page 24: Orta Therox

PROCESS

We publicly handle our process. This ranges from upcoming project milestones, to team culture, to the usual bugs / features.

Page 25: Orta Therox

CODE REVIEW

All code is reviewed on GitHub, so we’re not having backroom discussion about what works, all we write up PRs knowing that people will be reading them

This means we treat our review differently, every PR should sit atomically.

Page 26: Orta Therox

DESIGN + QA

We iterate on our designs in GitHub issues, interacting with designers and product managers in a way that allows for outside participation

Page 27: Orta Therox

EASE OF INSTALL

We treat “installing and running” easily as a feature.

You could C&P the whole thing and it would just work.

This is about lowering the barriers of entry for anyone to learn from

Page 28: Orta Therox

TIME & PATIENCE

So how did I start this process?

Page 29: Orta Therox

CREATE OSS LIBRARIES

We took the time to abstract out a lot of our code into libraries, so that apps were built on OSS

Page 30: Orta Therox

START SOMETHING NEW AS OSS

We started a fresh project that was Open Source from day one

Page 31: Orta Therox

MAKE OLDER PROJECTS OSS

We started opening our older codebases

Page 32: Orta Therox

the pitch

Unless you're a 2-3 person business, there are other people involved in the product. They need to be on board too.

Page 33: Orta Therox

HOW DO I SELL OTHERS ON OSS?

We devoted quite a lot of time to understanding you can win non-developers on OSSThis was made easier because of company values, I pitched it as being the best way the development team could apply Artsy's values to our day to day process

Page 34: Orta Therox

WE ARE NOT THE FIRST

Lots of companies do OSS by Default- Automattic- Telegram- Open Whisper Systems- Duck Duck Go

Page 35: Orta Therox

STEP BY STEP

We start off with a new appBuild out the toolingSee what problems we hit with community expectationsIt's an experiment, if it fails, we can stop there.If it is considered a success, then we can try a bigger project

Page 36: Orta Therox

LOWERING BARRIERS TO ENTRY

When I started, there were no classes for Mac development 10 years agoNo StackOverflow, no Slack or GitterI consulted Adium, Colloquy and Quicksilver's codeI’d run these apps, make some changes, and understand how everything hooks together then take ideas and re- apply. We would be making our complicated, real-world apps available for anyone to study

Page 37: Orta Therox

INFORMED → EXPERT

People rarely aim blog posts to the informed programmerOSS helps that fill that gap when you’ve finished your first book, and can make a trivial app. But what next? We could offer fully working apps for anyone it inspect

Page 38: Orta Therox

OPENING OUR PROCESS

As an individual, I struggled a lot with understanding how to create an app.

Page 39: Orta Therox

GREAT FOR DEVELOPERS

We could use our apps to improve our work flow as development team

Page 40: Orta Therox

ASKING FOR HELP

this issue use has 114 comments, from all sorts sorts of developers, from apple’s compiler engineers to newbies with no clue

Page 41: Orta Therox

GREAT FOR COMMUNITY QUESTIONS

We want to introspect, to understand how we came to the decisions we came to.

offering a forum for others to ask questions meant we had to really define and be sure in what we talk about

Page 42: Orta Therox

SIGNAL BOOST

Can signal-boost individual developerscan you tell when we open sourced our last app?you want to be a place where people can grow, and keep their code and ideas with them for as long as they want

Page 43: Orta Therox

BLOG POSTS

By providing direct links to code we could write better blog posts It becomes very easy to discuss implementations / abstractions when you can point to the code

Page 44: Orta Therox

HIRING

It is easy to hire, and to showcase that you're a great place to work. Considering all the options developers have, standing out is hardOSS by Default makes that easier.

Page 45: Orta Therox

OUR EXPECTATIONS

I think it’s also important to talk about what we expectedWe know that our app is a commercial app, it’s big and it’s complicated. It’s target is Art collectors, and the overlap with iOS developers is pretty small

Page 46: Orta Therox

COLLECTORS ←iOS DEVELOPERS

I think it’s also important to talk about what we expectedWe know that our app is a commercial app, it’s big and it’s complicated. It’s target is Art collectors, and the overlap with iOS developers is pretty smallFor our apps, we don’t aim to foster a community - it’s not realistic

Page 47: Orta Therox

Let’s do itOK, so maybe you're interested Here's the secret. Your apps are CRUD.

Page 48: Orta Therox

C.R.U.D

Create Read Update Destroy

Page 49: Orta Therox

CREATE.R.U.D

Create Read Update Destroy

Page 50: Orta Therox

CREATE.READ.U.D

Create Read Update Destroy

Page 51: Orta Therox

CREATE.READ.UPDATE.D

Create Read Update Destroy

Page 52: Orta Therox

CREATE.READ.UPDATE.DESTROY

The vast majority of non-game apps, exist to: * Pull some data* Present it nicely* Allow a user to manipulate it.

Page 53: Orta Therox

CREATE.READ.UPDATE.DESTROY

With these 4 types of functions, the vast majority of non-game apps, exist to: * Pull some data* Present it nicely* Allow a user to manipulate it.

Page 54: Orta Therox

You have a serverYou app pulls some data and present it nicelyAllow a user to manipulate it.

The majority of us are not creating apps that win design awards, that push the platform forwards. We build apps that we care deeply about, but they are pretty pictures of data.

Page 55: Orta Therox

PRETTY PICTURES OF DATA

The problems I face, as someone who is building "pretty pictures of data" is the same as anyone else building "pretty pictures of data". We need to be smart about * networking* JSON parsing, * data modelling, * stealing good design patterns we've seen in other apps.

Page 56: Orta Therox

MY APPS ARE NOT SPECIAL

My apps are not special. Your apps are probably not special. There are special apps out there, and they can be special cases. In my opinion: Every app that is just another "pretty pictures of data" should be open sourced.

Page 57: Orta Therox

*OUR APPS ARE VALUABLE

Aside from games, most mobile apps are free, so people are making money from the serviceThe apps most of us are building are not the most valuable part of the business.

Page 58: Orta Therox

In Artsy, it's our database of artworks, our relationships with galleries, museums, fairs and auction houses. Our ability to bring paying customers to all of the above, and be a place for great recommendationsWe want to introduce more people to art.In opening the code for our apps, we do nothing to risk the core parts of our business.

Page 59: Orta Therox

FolioSo I mentioned we started with opening a new project, then moved through our apps.

We had one app that exists in a really competitive space, it's a portfolio tool for galleries.

Page 60: Orta Therox

ARTSY OSS PRESENTATION

The space has big competitors with millions of investor funding for a tool that we apply minimal resources to.

This was the only app we needed to have a real discussion about “How can this affect the business?”

Page 61: Orta Therox

HOW EASY WOULD IT BE TO BOOTSTRAP A COMPETING BUSINESS OFF THIS CODE

How easy would it be to bootstrap a competing business off this code

In the end, we decided that the app is very strongly tied to our APIs, the user interface well, let me go back to that photo again

Page 62: Orta Therox

ARTSY OSS PRESENTATION

OK, so, it’s pretty simple

Page 63: Orta Therox

So this is the app running in a developer tool for showing the view structure, let’s dig into what we see

Page 64: Orta Therox

The core parts of the UI is provided by Apple’s - UICollectionView / RecyclerView

Page 65: Orta Therox

And a UIToolbar / MenuThis entire app could be prototyped in less than a day, and mostly using GUI tools

Page 66: Orta Therox

ARTSY OSS PRESENTATION

tada!

Page 67: Orta Therox

QUALITY WORTH OF ART?

The "is this code worth of art" part of the discussion was interesting

I strongly believe that we ship products, and not code-bases. As a part of this, we also include a file called HACKS.md. This lists all the times we made trade-offs for code quality for speed. We will never ship a perfect code-base. I strongly believe in iterations as opposed to big releases, we handle OSS the same.

Page 68: Orta Therox

SecrecyApps can have suspiciously anti-user behaviour:

Page 69: Orta Therox

PATH / TWITTER

Path secretly uploading all your contacts to their servers- Causing Apple to change permissions for contacts

Twitter checking every app you have installed- Causing Apple to deprecate the API

Page 70: Orta Therox

VOLKSWAGON

VW CEO blames the emission issue on “rogue programmers”

Page 71: Orta Therox

VW CEO blames the emission issue on “rogue programmers”

Page 72: Orta Therox

$46,000,000,000

The current fine being asked by the U.S. Govt is 46 billion, and this doesn’t include any European finesallow me to translate that into Rubles

Page 73: Orta Therox

3,117,167,000,000 RUBLES

3 trillion1 hundred and 17 billion1 hundred and 67 millionRubles

Page 74: Orta Therox

~59 DEATHS

Roughly 59 deaths according to the peer reviewed journals

brutal

Page 75: Orta Therox

OPEN COMBATS SECRECY

Had the process, and the code been easily available for public audit. These things would not have happened.

When you have to publicly put your name and reputation on the line, you are far more cautious around shipping anti-patterns

Page 76: Orta Therox

GREAT FUTURE FOUNDATION

From here it’s now much harder for our team to ship things they’d not be proud of

Page 77: Orta Therox

BUT…

However secrecy is essential

Page 78: Orta Therox

KEYS - ASSETS - CODE

If your app interacts with the outside worldIt probably has keys it needs to keep secretIn the web world, different environments ( like dev, staging, production )we had to build a tool to allow us to do this

Page 79: Orta Therox

KEYS - ASSETS - CODE

This is our closed serif font

This is our open serif font

THIS IS OUR OTHER CLOSED FONT

THIS IS OUR OTHER OPEN FONT

We buy our fonts, and they’re not available for distribution publiclyso we use OSS versions, they’re very similar to our closed source versions

Page 80: Orta Therox

KEYS - ASSETS - CODE

Sometimes there are great reasons to do work in the darkWe built a watch app entirely in the dark, we used a private fork of our appSo we could have all the usual code-review and CI, but could work on features with a release embargo

Page 81: Orta Therox

ImpactI am driven by impact. When I choose what I do in the morning, I base my decisions on the following:

Page 82: Orta Therox

ARTSY THE OSS COMMUNITY THE WORLD

What impacts ArtsyWhat impacts Communities I care about What impacts the world.

Page 83: Orta Therox

I've been programming for a decade, the skills I have are valuable and needed in so many contexts.

Deciding what I should do every day should be about the expanding spheres of influence I can have an impact in, and though working in Open Source. I can have a bigger impact.

Page 84: Orta Therox

For me OSS by default is a mindset, that I can use to expand the areas I can have an impact.

I can have an impact through the products we make at artsy. I choose to go the extra mile, and move that to affect the entire iOS development community.

It’s about committing not just to your own instincts that community is good but to finding ways in which you can make OSS by default align with your business goals

Page 85: Orta Therox

This is not a simple task.

This year, I’ve been in more talks with companies asking for advice for going OSS than all of last year. We’re only three months in.

So now has never been a better time to start moving towards

Page 86: Orta Therox

OPEN SOURCE YOUR APPS

ORTA

I interpret it to mean that the work I do should go towards the benefit of humanity, and I think that we, as developers can continue to create a better world.

Even if it is just by making CRUD applications which make pretty pictures of data.

Page 87: Orta Therox

OPEN SOURCE YOUR APPS

ORTA HTTP://ARTSY.GITHUB.IO/AUTHOR/ORTA

I interpret it to mean that the work I do should go towards the benefit of humanity, and I think that we, as developers can continue to create a better world.

Even if it is just by making CRUD applications which make pretty pictures of data.