orta therox

Post on 16-Apr-2017

650 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

OPEN SOURCEBY DEFAULT

@ O R TA

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

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

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

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

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

2- ART MEETS SCIENCE - PEOPLE ARE PARAMOUNT

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

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

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

Being nice is nice!

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”

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

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.

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

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

apps500,000+

clones/fetches in a week1,100,000+

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.

IMPACT ON THE ART WORLD

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

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.

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.

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.

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:

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

PROCESS

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

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.

DESIGN + QA

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

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

TIME & PATIENCE

So how did I start this process?

CREATE OSS LIBRARIES

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

START SOMETHING NEW AS OSS

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

MAKE OLDER PROJECTS OSS

We started opening our older codebases

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.

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

WE ARE NOT THE FIRST

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

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

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

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

OPENING OUR PROCESS

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

GREAT FOR DEVELOPERS

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

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

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

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

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

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.

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

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

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

C.R.U.D

Create Read Update Destroy

CREATE.R.U.D

Create Read Update Destroy

CREATE.READ.U.D

Create Read Update Destroy

CREATE.READ.UPDATE.D

Create Read Update Destroy

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.

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.

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.

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.

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.

*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.

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.

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.

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?”

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

ARTSY OSS PRESENTATION

OK, so, it’s pretty simple

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

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

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

ARTSY OSS PRESENTATION

tada!

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.

SecrecyApps can have suspiciously anti-user behaviour:

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

VOLKSWAGON

VW CEO blames the emission issue on “rogue programmers”

VW CEO blames the emission issue on “rogue programmers”

$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

3,117,167,000,000 RUBLES

3 trillion1 hundred and 17 billion1 hundred and 67 millionRubles

~59 DEATHS

Roughly 59 deaths according to the peer reviewed journals

brutal

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

GREAT FUTURE FOUNDATION

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

BUT…

However secrecy is essential

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

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

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

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

ARTSY THE OSS COMMUNITY THE WORLD

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

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.

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

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

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.

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.

top related