orta therox
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.