SlideShare a Scribd company logo
1 of 41
BUILDING AN ECOSYSTEM FOR

H4ck3rs
H4CK3RS ARE
 PEOPLE TOO
1 4M 4 H4CK3R!
    I am a hacker!
U R 4 H4CK3R 2!
   you are a hacker too!
Rich Manalang
   @rmanalan
Building an Ecosystem for Hackers
THE SOFTWARE LIFECYCLE
         idea!                      ship!
                    prototype
                       code

         rinse, repeat, over and over again...
until your product is bloated and code begins to stink
GET OFF MY LAWN!
   Conventional Wisdom:
     Users are stupid.
     Software is hard.
 Supporting software sucks.
     We want simple.
HOW CAN WE
EMPOWER
OUR USERS?
option 1


   BUILD
OPINIONATED
  SOFTWARE
option 2

     BUILD A

PLATFORM
 THEY CAN HACK ON
TWO SCHOOLS OF THOUGHT
 product #1       product #2
                       apis
 sandboxed env
     apis, etc.

                   your product
       you
                       you
WHO DOES #1 WELL?
              gut based sampling

★ Apple                  ★ Chrome/Firefox
★ Android                ★ WordPress
★ Atlassian              ★ Many others...
Building an Ecosystem for Hackers
HOW WE
DO THIS AT
ATLASSIAN
START WITH A
PLUGIN
FRAMEWORK
Building an Ecosystem for Hackers
SPEAKEASY
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
PIMP IT WITH REST
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
SPEAKING OF PLUGINS,
HOW DOES ONE BUILD ONE?
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
I’VE BUILT MY PLUGIN.
NOW WHAT?
Building an Ecosystem for Hackers
HEY, WE’VE GOT A
COMMUNITY!
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
Building an Ecosystem for Hackers
IN THE END...
THANKS!
     we’re hiring! lots!

More Related Content

Viewers also liked

互联网商品设计
互联网商品设计互联网商品设计
互联网商品设计easychen
 
Ict4volunteering It4 C
Ict4volunteering It4 CIct4volunteering It4 C
Ict4volunteering It4 Chavs
 
5gaia Publizitate eta HHPP Sarrera
5gaia Publizitate eta HHPP Sarrera5gaia Publizitate eta HHPP Sarrera
5gaia Publizitate eta HHPP Sarrerakatixa
 
From Amber To Green in Four Weeks
From Amber To Green in Four WeeksFrom Amber To Green in Four Weeks
From Amber To Green in Four WeeksAntonio Terreno
 
Using ICT Volunteers
Using ICT VolunteersUsing ICT Volunteers
Using ICT Volunteershavs
 
Avatare - mediale Artikulationen, interaktive Aktanten, hybride Akteure
Avatare - mediale Artikulationen, interaktive Aktanten, hybride AkteureAvatare - mediale Artikulationen, interaktive Aktanten, hybride Akteure
Avatare - mediale Artikulationen, interaktive Aktanten, hybride AkteureBenjamin Jörissen
 
Philippine Folk String Ensemble
Philippine Folk String EnsemblePhilippine Folk String Ensemble
Philippine Folk String Ensemblerey ayento
 
Información científica
Información científicaInformación científica
Información científicamjordan
 
PfCongrez 2007 Zend Studio Overview
PfCongrez 2007 Zend Studio OverviewPfCongrez 2007 Zend Studio Overview
PfCongrez 2007 Zend Studio OverviewIvo Jansch
 
Publizitatearen Historia3 (1/3)
Publizitatearen Historia3 (1/3)Publizitatearen Historia3 (1/3)
Publizitatearen Historia3 (1/3)katixa
 
Social Media - Apply it to your Company Website
Social Media - Apply it to your Company WebsiteSocial Media - Apply it to your Company Website
Social Media - Apply it to your Company Websitenatalierebot
 

Viewers also liked (14)

互联网商品设计
互联网商品设计互联网商品设计
互联网商品设计
 
Ict4volunteering It4 C
Ict4volunteering It4 CIct4volunteering It4 C
Ict4volunteering It4 C
 
5gaia Publizitate eta HHPP Sarrera
5gaia Publizitate eta HHPP Sarrera5gaia Publizitate eta HHPP Sarrera
5gaia Publizitate eta HHPP Sarrera
 
From Amber To Green in Four Weeks
From Amber To Green in Four WeeksFrom Amber To Green in Four Weeks
From Amber To Green in Four Weeks
 
Using ICT Volunteers
Using ICT VolunteersUsing ICT Volunteers
Using ICT Volunteers
 
Avatare - mediale Artikulationen, interaktive Aktanten, hybride Akteure
Avatare - mediale Artikulationen, interaktive Aktanten, hybride AkteureAvatare - mediale Artikulationen, interaktive Aktanten, hybride Akteure
Avatare - mediale Artikulationen, interaktive Aktanten, hybride Akteure
 
Philippine Folk String Ensemble
Philippine Folk String EnsemblePhilippine Folk String Ensemble
Philippine Folk String Ensemble
 
词典大楼
词典大楼词典大楼
词典大楼
 
Relationsitii2005
Relationsitii2005Relationsitii2005
Relationsitii2005
 
Voordekunst
VoordekunstVoordekunst
Voordekunst
 
Información científica
Información científicaInformación científica
Información científica
 
PfCongrez 2007 Zend Studio Overview
PfCongrez 2007 Zend Studio OverviewPfCongrez 2007 Zend Studio Overview
PfCongrez 2007 Zend Studio Overview
 
Publizitatearen Historia3 (1/3)
Publizitatearen Historia3 (1/3)Publizitatearen Historia3 (1/3)
Publizitatearen Historia3 (1/3)
 
Social Media - Apply it to your Company Website
Social Media - Apply it to your Company WebsiteSocial Media - Apply it to your Company Website
Social Media - Apply it to your Company Website
 

Similar to Building an Ecosystem for Hackers

Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014michaelag1971
 
Snakes on the Web; Developing web applications in python
Snakes on the Web; Developing web applications in pythonSnakes on the Web; Developing web applications in python
Snakes on the Web; Developing web applications in pythonNaail AbdulRahman
 
in-memory capacity planning, Erlang Factory London 09
in-memory capacity planning, Erlang Factory London 09in-memory capacity planning, Erlang Factory London 09
in-memory capacity planning, Erlang Factory London 09Bhasker Kode
 
Open event (show&tell april 2016)
Open event (show&tell april 2016)Open event (show&tell april 2016)
Open event (show&tell april 2016)Jorge López-Lago
 
A Presentation on Presenting
A Presentation on PresentingA Presentation on Presenting
A Presentation on PresentingJason Lotito
 
Making Effective Prototypes
Making Effective PrototypesMaking Effective Prototypes
Making Effective PrototypesMatthew Ho
 
Using i pads with students
Using i pads with studentsUsing i pads with students
Using i pads with studentsNell Eckersley
 
App For That : OSU-COE-ISE5640
App For That : OSU-COE-ISE5640App For That : OSU-COE-ISE5640
App For That : OSU-COE-ISE5640Dan Rockwell
 
APIdays Paris 2019 - OpenAPI and AsyncAPI specifications as contracts by Mehd...
APIdays Paris 2019 - OpenAPI and AsyncAPI specifications as contracts by Mehd...APIdays Paris 2019 - OpenAPI and AsyncAPI specifications as contracts by Mehd...
APIdays Paris 2019 - OpenAPI and AsyncAPI specifications as contracts by Mehd...apidays
 
Maker Science with Arduino and SparkFun Electronics @NSTA14 Boston
Maker Science with Arduino and SparkFun Electronics @NSTA14 BostonMaker Science with Arduino and SparkFun Electronics @NSTA14 Boston
Maker Science with Arduino and SparkFun Electronics @NSTA14 BostonBrian Huang
 
Culture And Aesthetic Revisited
Culture And Aesthetic RevisitedCulture And Aesthetic Revisited
Culture And Aesthetic RevisitedAdam Keys
 
Using iPads with Students
Using iPads with StudentsUsing iPads with Students
Using iPads with StudentsNell Eckersley
 
Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date. Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date. Christian Heilmann
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Jacek Tomaszewski
 
Mastering python lesson1
Mastering python lesson1Mastering python lesson1
Mastering python lesson1Ruth Marvin
 

Similar to Building an Ecosystem for Hackers (20)

Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014
 
Learn to Code and Have Fun Doing It!
Learn to Code and Have Fun Doing It! Learn to Code and Have Fun Doing It!
Learn to Code and Have Fun Doing It!
 
peper robot
peper robotpeper robot
peper robot
 
Snakes on the Web; Developing web applications in python
Snakes on the Web; Developing web applications in pythonSnakes on the Web; Developing web applications in python
Snakes on the Web; Developing web applications in python
 
SXSWi - VPRO / HU
SXSWi - VPRO / HUSXSWi - VPRO / HU
SXSWi - VPRO / HU
 
in-memory capacity planning, Erlang Factory London 09
in-memory capacity planning, Erlang Factory London 09in-memory capacity planning, Erlang Factory London 09
in-memory capacity planning, Erlang Factory London 09
 
Open event (show&tell april 2016)
Open event (show&tell april 2016)Open event (show&tell april 2016)
Open event (show&tell april 2016)
 
A Presentation on Presenting
A Presentation on PresentingA Presentation on Presenting
A Presentation on Presenting
 
Making Effective Prototypes
Making Effective PrototypesMaking Effective Prototypes
Making Effective Prototypes
 
Listfy Sprint #0
Listfy Sprint #0Listfy Sprint #0
Listfy Sprint #0
 
FLOSS Manuals
FLOSS ManualsFLOSS Manuals
FLOSS Manuals
 
Using i pads with students
Using i pads with studentsUsing i pads with students
Using i pads with students
 
App For That : OSU-COE-ISE5640
App For That : OSU-COE-ISE5640App For That : OSU-COE-ISE5640
App For That : OSU-COE-ISE5640
 
APIdays Paris 2019 - OpenAPI and AsyncAPI specifications as contracts by Mehd...
APIdays Paris 2019 - OpenAPI and AsyncAPI specifications as contracts by Mehd...APIdays Paris 2019 - OpenAPI and AsyncAPI specifications as contracts by Mehd...
APIdays Paris 2019 - OpenAPI and AsyncAPI specifications as contracts by Mehd...
 
Maker Science with Arduino and SparkFun Electronics @NSTA14 Boston
Maker Science with Arduino and SparkFun Electronics @NSTA14 BostonMaker Science with Arduino and SparkFun Electronics @NSTA14 Boston
Maker Science with Arduino and SparkFun Electronics @NSTA14 Boston
 
Culture And Aesthetic Revisited
Culture And Aesthetic RevisitedCulture And Aesthetic Revisited
Culture And Aesthetic Revisited
 
Using iPads with Students
Using iPads with StudentsUsing iPads with Students
Using iPads with Students
 
Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date. Let’s learn how to use JavaScript responsibly and stay up-to-date.
Let’s learn how to use JavaScript responsibly and stay up-to-date.
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1
 
Mastering python lesson1
Mastering python lesson1Mastering python lesson1
Mastering python lesson1
 

Recently uploaded

ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 

Recently uploaded (20)

ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 

Building an Ecosystem for Hackers

Editor's Notes

  1. Hello... My name is Rich Manalang and I’m your lunch time entertainment today. Everyone having a good conference so far?\n\nCool. I want to spend the next hour talking about something that many of us who build products don’t often do... and that is, build ecosystems inside your product that caters to hackers.\n\nAnd, I use the term “hackers” loosely in this context. Hackers tend to have a bad rap, but in recent years, I think it’s become a cool thing to be a hacker. Wouldn’t you agree?\n
  2. ... and frankly, Hackers are people too. Smart people who are usually highly opinionated, motivated to change things (not always with bad intentions) -- look at these people... do they look like they can cause harm, and generally, these are the people you want to be around in the context of writing software.\n
  3. So... I’m a self-proclaimed hacker...\n
  4. And so are you. You don’t need to know l33t speak or even know what l33t speak is. If you’ve ever tinkered with software (and frankly, anything), you’re a hacker. In different communities, you might be known as a maker, a craftsman, a hobbyist... for the next hour let’s just say you’re a hacker.\n
  5. As I said before, my name is Rich Manalang. Find me on Twitter as @rmanalan\n
  6. I’m here via my employer Atlassian where I spend my days trying to improve our dev experience to hackers like you!\n
  7. Let’s start by looking at how most of us build software. \n\nFirst someone comes up with an idea. Then, they prototype it. Iterate several times until it’s right, then code it. Eventually you ship. Shipping is the best thing in this whole process. Then you do it all over again.\n\nThe unfortunate thing in this cycle is that over time, your product is never really the same. For users, it usually appears that the product is improving, meanwhile most of your devs gradually begin to dislike the codebase because it’s lost it’s simplicity, it’s gotten bloated, and it’s generally no longer cool to work on. Refactorings only go so far.\n\nThat’s just the nature of the software business... it happens everywhere. In the end, all software gets old and becomes a legacy system of sorts. The hard part that not everyone can do is how to grow old slowly and gracefully.\n\nHow do you fix this?\n\nWell... there’s no one answer, but in someways the burden this creates can be taken off your shoulders and passed onto your user-base by allowing them to inject themselves in this process.\n
  8. But generally, we don’t allow our users to inject themselves in the process of creating the product. At least not in a way where they have greater control. Why don’t we build software to empower our users?\n\nSimple... we generally think users are stupid, so we don’t want them to shoot themselves in the foot which would in turn create a support nightmare for you. And generally, software craftsmanship is hard enough and the last thing we want to do is make it harder. As software practitioners we’re always striving for simplicity... well, at least I am :)\n\n
  9. So, how do you keep things simple, but also empower your user base to get what they want out of your product? It’s a difficult problem.\n\n\n
  10. Most devs simply build opinionated software which makes it easy for them maintain and define future product direction... simply because they’ve defined the limits of their product to their user and say no to their users a lot. Generally, this is good practice because 1) the user isn’t always right and is more often wrong about most things and 2) you get to control your destiny, not your user.\n\nHowever, the big drawback is you will likely look like an asshole to lots of people -- although you will appear as a hero to just as many. Either way, you’ve drawn a line in the sand and told your users to take it or leave it.\n
  11. Another approach is to build a platform for extending your product. This approach enables a few things:\n\n1. It gives your users the power to extend your product without you needing to be involved\n2. It allows you to keep your code simple\n3. It allows you to build an ecosystem of developers who want to build on your platform... which in turn can provide you a nice little revenue stream (just like all of the app stores you see cropping up).\n\nI don’t know about you, but I’m not scalable. Generally, individual developers are not good at multi-tasking and those that are, aren’t very good at keeping focus. So, there’s really only one way to scale out your development... add more developers.\n\nAnother nice benefit to this is that you can use that platform for yourself to build new features... which has a nice consequence of forcing you to keep the platform relevant and useful because you have to use it yourself.\n\n\n
  12. Building a platform requires some thought.\n\nThere are two schools of thought in creating a platform. The first allows your hackers to embed themselves inside your platform. The second provides the hacker with an api, but they can only use it outside of that platform.\n\nThere are good use cases for supporting one or the other or both. #2 is much easier and cleaner but limits your developers ability to extend your product.\n
  13. Today, we’re going to focus on option #1... building a platform developers can embed themselves in. These are some companies who do this well today...\n\nBTW, Atlassian is there because we really do do this well.\n
  14. The end output of having a platform is having a way for your developers to benefit from showing off their wares and maybe make some money for what they created. The implications of this are huge.\n\nThis is old news, but check out how well Apple has done with their App Stores. It’s been so successful, so many others have copied them.\n\nAt Atlassian, for example, we have plugin developers who make their living off of building plugins for our platform. If you do this right, you get to contribute to boosting the economy by helping create jobs!\n
  15. So... now I suppose I should show you how we do this at Atlassian.\n
  16. We start with a plugin framework. Our apps are all web based Java apps.\n\nThere are several ways to do this with each language and framework. So, do you your research before you start. And depending on how deep you want to allow your developers access into your app’s innards, you can either build or implement a framework that works for you.\n\nWe happened to pick OSGi as our plugin framework of choice. It’s a complex beast, but gave us pretty good control of what we wanted.\n
  17. We took a bunch of technologies (felix, springDM, jersey, jackson, etc) and built an in-app plugin framework where administrators can browse/search for plugins then install/disable/ or uninstall them.\n\nEach of our products define various extension points that they want to be available to external developers, but in all products there’s a common set of extension points that devs can use. For example, in all of our products, they have the ability to create new pages and augment the builtin navigation. They also have the ability to alter and enhance our delivered pages. There are also extension points that allow devs to do things in the background.\n\nBecause this is so flexible, people can create their own “plugin” framework on top of ours.\n
  18. One of these plugin within a plugin plugins is called Speakeasy. It was developed by a guy named Don Brown, who happens to be the architect behind our plugin framework. You might have heard of him... he’s also one of the guys behind Struts.\n\nSpeakeasy’s goal is to make it possible for users to build product enhancements/extensions without writing an Atlassian plugin. Building Atlassian plugins are pretty easy and we provide a great SDK to get a dev going, but you still need an administrator to install it into a running instance. If you’re not an administrator, you’re sort of out of luck.\n\nSpeakeasy is like Greasemonkey. Although the big difference is that it’s hosted inside the app instead of on your browser. Any user can create a speakeasy extension. It’s just like writing a Greasemonkey extension as a matter of fact. The big difference is that speakeasy provides libraries that you typically would want when building a browser side app. We provide users the use of Mustache, jQuery, and Backbone for example (to name a few).\n
  19. Here’s what Speakeasy looks like... as you would expect, you can browse for an extension then install it...\n
  20. However, it goes a step further...\n\nYou can fork the extension, clone it locally via git, then push your changes back up! It also provides the author of the extension some nice built in features like the ability to take feedback from its users.\n
  21. Here’s what happens when you click on the Git menu... again... you can clone it locally. Edit it in your favorite text editor/ide, commit locally, then push it back up or to some other repo or Atlassian product that has Speakeasy installed!\n
  22. But say you didn’t want to go through the trouble of cloning the repo locally and just had some minor changes you want to make to your forked version. Well, you can then edit the extension inside the app!\n\nHere’s a demo...\n
  23. Speakeasy becomes even more powerful when you’ve got a nice set of REST APIs you can access. It turns out Atlassian has quite a few REST resources.\n\nWhen I started at Atlassian in September, I surveyed our products for all our REST resources. I got mixed answers. No one quite knew how many REST resources were available in each product. It turns out that each product published their formal REST APIs and with the expected documentation for each, but it was spotty -- meaning there are some undocumented resources.\n\nWhen I discovered how we built REST resources (as plugins using Jersey), it became clear that we needed a tool to manage all of our REST resources. It turns out that Jersey creates a WADL for each REST resource created. This WADL described everything we needed to know about the REST resource (endpoint, methods, parameters, etc).\n\nSo, we set out to build a dynamic REST API browser that looked at all of the REST resources available in the product. Also because we allow our external developers to either extend or build out their own REST resources as plugins, the REST API browser works for those apps work also!\n
  24. Here’s what the REST API browser looks like. It’s basically an in-app REST API playground.\n\nYou can find the api you want to use, then test it out and see what you get back. Everything you need is right there.\n
  25. If you want to access another REST resource (one provided by Atlassian or another plugin developer), you can do so.\n\nSpeakeasy coupled with some REST APIs and this browser, make for a nice way to build extensions on top of the product.\n\nHowever, there are drawbacks of course. The first is that these extensions have to be installed manually by each user -- currently, there’s no way for an adminstrator to push these out to all users. The next drawback is that it runs on the client... well, maybe that’s not a drawback. Either way, you’re a bit more limited to what you can do with Speakeasy extensions than a traditional plugin.\n\nAnother good use for Speakeasy is for rapidly prototyping a feature inside the product. If appropriate, you can turn the Speakeasy extension into a plugin quite easily.\n
  26. How does one build one?\n\nWith an SDK of course. You can’t build a platform to hack on if you don’t provide some tools to allow it. Our SDK is a set of command line tools that allow for easy creation, testing, packaging, and deploying of plugins. It takes the pain out of getting started and allows our developers to be productive.\n
  27. ... which they can download from a dedicated developer site we host. BTW, if you’re going to amass a group of developers, you’ll need to provide them a dedicated resource for documentation, reference materials, etc. Our developer site is just that.\n
  28. Here’s what the SDK provides...\n
  29. I’m going to skip talking about the rest of the plugin dev details because it’s just that... code. I don’t know about you, but I hate staring at Java code on large screens in conference presentations.\n\nSo, let’s talk about what happens after you’ve built your plugin. Well... first, you celebrate. Then you deploy it. We provide you with a place to host and market your plugin, plugins.atlassian.com.\n
  30. Here users can download and review your plugin. Early next year, you’ll be able to sell them.\n
  31. The nice side effect of building a platform for people to hack on is that you end up creating a community of people who become your fans. And in the software business, there’s nothing better than having fans.\n\nBut now that you have fans, you have to keep them happy and satisfied. Your platform has become a product of its own. You have to maintain it, support it, and continually make it better in order to keep the ecosystem happy. How do you do that?\n
  32. well... for us, we do a few things.\n\nA few years ago we started holding a plugin development contest. It was really popular. We give our participants about 6 weeks to build something cool. At the end, the a panel of judges pick the best and give out a nice package of prizes.\n
  33. This year, one of the most popular plugins submitted was called JIRA Hero. It’s a plugin that added game mechanics to managing issues. Users can collect badges for managing their issue queues well. If you’re good, you move up levels. And there’s also a leaderboard.\n
  34. Another awesome entry is called Jitter which basically adds a twitter-like microblog inside of JIRA.\n
  35. Having a community is nice, but it’s nicer when you get an opportunity to connect the members of that community real life. For us we do that once a year at an event called AtlasCamp (it’s going to be twice a year starting in 2012). We hold a conference in Half Moon Bay every year just for our plugin developers. It’s a great way to get way to get people out from under their keyboards and a great opportunity for sharing and learning.\n
  36. During the event event we also try to do something fun. Having hackathons are great, but this is really why people show up.\n
  37. Well... in the end, most hackers just want to be able to contribute, right? So, let’s not shut them out of our products. Let’s embrace them. They can become our biggest fan, but not if we don’t include them.\n\n\n
  38. Well... that’s all I have. If you’ve got questions or comments, let me know. And if you or one of you pals is looking for a job, let me know... we’re hiring... lots!\n