SlideShare a Scribd company logo
1 of 35
Download to read offline
DEVELOPERS!
                         Y U No Open Source Ur Code?




                                             http://ragecomics.memebase.com/
Tuesday, 1 November 11
SOMETHING ABOUT ME

                            Craig Marvelley

                          Developer @ Box UK

                            @craigmarvelley

                              boxuk.com


                              http://www.flickr.com/photos/jimmiehomeschoolmom/
                                          http://www.flickr.com/photos/catatronic/
Tuesday, 1 November 11
What is open source software?




                                        http://ragecomics.memebase.com/
Tuesday, 1 November 11
Hands up if you use open source software



                                                       http://www.flickr.com/photos/cheesy42/
Tuesday, 1 November 11
Hands up if your company uses
                               open source software

                                                http://www.flickr.com/photos/cheesy42/
Tuesday, 1 November 11
Hands up if you release open source software



                                                         http://www.flickr.com/photos/cheesy42/
Tuesday, 1 November 11
Hands up if your company releases open source
                                   software

                                              http://www.flickr.com/photos/cheesy42/
Tuesday, 1 November 11
A recent survey of 300 companies found:

                Using Open Source Software            Don’t intend to use it           Experimenting with it




                                            28%

                                                                      50%

                                              22%



                           Source: Accenture (2010): http://newsroom.accenture.com/article_display.cfm?article_id=5045
Tuesday, 1 November 11
A recent survey of 300 companies found:

                  Willing to contribute software back to the community                Unwilling to contribute




                                                                     29%



                                              71%




                             Source: Accenture (2010): http://newsroom.accenture.com/article_display.cfm?article_id=5045
Tuesday, 1 November 11
OPEN SOURCE AT BOX UK

    •   Utilised in many of our products

    •   Particularly the Amaxus ® Content Management System

    •   Amaxus is mainly written in PHP

    •   Version 3 (2002): ~1,439,295 lines of PHP, 3% open source

    •   Version 4 (2008): ~1,474,994 lines of PHP. ~81% open source


Tuesday, 1 November 11
Avoid reinventing the wheel
                                                 http://www.flickr.com/photos/rvignes/
Tuesday, 1 November 11
Quality is paramount
                                                http://www.flickr.com/photos/zigdon/
Tuesday, 1 November 11
Make sure it’s accessible
                                              http://www.flickr.com/photos/potatojunkie/
Tuesday, 1 November 11
Check the license suits the usage
                                                    http://www.flickr.com/photos/ecastro/
Tuesday, 1 November 11
THE TURNING POINT




Tuesday, 1 November 11
http://ragecomics.memebase.com/
Tuesday, 1 November 11
OBSCURA

    • PHP           component to perform thumbnailing

    • Written             for PHP 5.3 - namespaces, autoloading, fully unit
       tested

    • Integrated            back into Amaxus

    • Could              we do another one?


Tuesday, 1 November 11
BOXUK-DI

    • Amaxus   has an annotation-based dependency injection
       container

    • Uses           the Addendum library to parse doc-blocks

    • We          refactored Amaxus to extract the DI code

    • Existing           unit tests made sure we didn’t break anything

    • We          now had two libraries on our hands

Tuesday, 1 November 11
“What if we open sourced them?”

                                                  http://ragecomics.memebase.com/
Tuesday, 1 November 11
PRECEDENT

                   • Zend            • Gradwell

                   • Sensio   Labs   • openSky

                   • Liip AG         • knpLabs




Tuesday, 1 November 11
GOING OPEN-SOURCE

    • Hosted             the libraries on a company github account

    • Redesigned            our ‘labs’ page on boxuk.com

    • Authored     content for the website to announce and document
       the libraries

    • Tweeted             about it from the company account


Tuesday, 1 November 11
Tuesday, 1 November 11
Feedback for Obscura


Tuesday, 1 November 11
Feedback for boxuk-di

Tuesday, 1 November 11
“Lets do some more!”

                                            http://ragecomics.memebase.com/
Tuesday, 1 November 11
BOXUK-ROUTING

    • Refactored             and extracted the routing system from Amaxus

    • Slightly           different to other routing components

    • Decreased             coupling

    • Improved             code quality

    • Improved             test coverage


Tuesday, 1 November 11
DESCRIBR


    • Component               to extract metadata from any file

    • Wraps              php-reader, adding a plugin architecture

    • Encourages             others to contribute plugins and functionality

    • First        library to be used outside Amaxus



Tuesday, 1 November 11
Bringing it all together
                                               http://www.flickr.com/photos/pinksherbet/
Tuesday, 1 November 11
CODING STANDARDS
    • We          had a defined coding standard

    • It    was only written down; no way to enforce it

    • Enter              PHPCodesniffer

    • We   wrote a set of sniffs to check code conformed to our
       standard

    • Integrated             it into our Continuous Integration process

    • Open               sourced the sniffs on Github
Tuesday, 1 November 11
DEPLOYMENT

    • We          started using the libraries in live projects

    • Git       isn’t ideal at dependency management

    • Looked             into using PEAR as a deployment mechanism

    • Wasn’t             straightforward to begin with - documentation lacking

    • Eventually           successful - and it was worth it


Tuesday, 1 November 11
The Future
                                      http://www.flickr.com/photos/alejandroamador/
Tuesday, 1 November 11
MORE OPEN SOURCE SOFTWARE



    • Continue            to release PHP components

    • Perhaps            contribute to the Symfony CMF project

    • Release            code for other languages?




Tuesday, 1 November 11
SUMMING UP
        Thanks to our open source experiment:

    •   We have improved our code
        quality                        •   Our website has more content

    •   We have an enforced coding     •   The company has increased
        standard                           visibility

    •   We have a PEAR channel         •   Our developers can work on
                                           diverse, contained projects that
    •   We have experience using Git       make a difference
        and Github

Tuesday, 1 November 11
LESSONS LEARNED


    • Remember YAGNI             - You Ain’t Gonna Need It

    • If    refactoring existing code for release, choose wisely

    • Use         the right tools for the job




Tuesday, 1 November 11
THANKS FOR LISTENING!


                                 @craigmarvelley
                             http://github.com/boxuk
                           http://joind.in/talk/view/3810




Tuesday, 1 November 11

More Related Content

What's hot

Twitter streamingapi rubymongodbv2
Twitter streamingapi rubymongodbv2Twitter streamingapi rubymongodbv2
Twitter streamingapi rubymongodbv2Jeff Linwood
 
03/2012 - Popping the gherkin stack
03/2012 - Popping the gherkin stack03/2012 - Popping the gherkin stack
03/2012 - Popping the gherkin stackdaveayan
 
WordPress Under Control (Boston WP Meetup)
WordPress Under Control (Boston WP Meetup)WordPress Under Control (Boston WP Meetup)
WordPress Under Control (Boston WP Meetup)Matt Bernhardt
 
Mozilla: Continuous Deploment on SUMO
Mozilla: Continuous Deploment on SUMOMozilla: Continuous Deploment on SUMO
Mozilla: Continuous Deploment on SUMOMatt Brandt
 

What's hot (6)

Twitter streamingapi rubymongodbv2
Twitter streamingapi rubymongodbv2Twitter streamingapi rubymongodbv2
Twitter streamingapi rubymongodbv2
 
03/2012 - Popping the gherkin stack
03/2012 - Popping the gherkin stack03/2012 - Popping the gherkin stack
03/2012 - Popping the gherkin stack
 
WordPress Under Control (Boston WP Meetup)
WordPress Under Control (Boston WP Meetup)WordPress Under Control (Boston WP Meetup)
WordPress Under Control (Boston WP Meetup)
 
InfectNet Technical
InfectNet TechnicalInfectNet Technical
InfectNet Technical
 
Mozilla: Continuous Deploment on SUMO
Mozilla: Continuous Deploment on SUMOMozilla: Continuous Deploment on SUMO
Mozilla: Continuous Deploment on SUMO
 
Togetter matome matome
Togetter matome matomeTogetter matome matome
Togetter matome matome
 

Similar to Developers! Y U No Open Source Ur Code?

Are Your Tests Really Helping You?
Are Your Tests Really Helping You?Are Your Tests Really Helping You?
Are Your Tests Really Helping You?LB Denker
 
Phorum - PHP Community Conference
Phorum - PHP Community ConferencePhorum - PHP Community Conference
Phorum - PHP Community ConferenceBrian Moon
 
Power tips to get your app discovered and not forgotten
Power tips to get your app discovered and not forgottenPower tips to get your app discovered and not forgotten
Power tips to get your app discovered and not forgottenAppsfire
 
Continuous Deployment at Disqus (Pylons Minicon)
Continuous Deployment at Disqus (Pylons Minicon)Continuous Deployment at Disqus (Pylons Minicon)
Continuous Deployment at Disqus (Pylons Minicon)zeeg
 
Apcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schulerApcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schulerhewie
 
O365Con19 - Sharing Code Efficiently in your Organisation - Elio Struyf
O365Con19 - Sharing Code Efficiently in your Organisation - Elio StruyfO365Con19 - Sharing Code Efficiently in your Organisation - Elio Struyf
O365Con19 - Sharing Code Efficiently in your Organisation - Elio StruyfNCCOMMS
 
Interop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServiceInterop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServicePatrick Chanezon
 
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJava EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJAX London
 
Free Your Mind and Your Data Will Follow: Open Source for Libraries
Free Your Mind and Your Data Will Follow: Open Source for LibrariesFree Your Mind and Your Data Will Follow: Open Source for Libraries
Free Your Mind and Your Data Will Follow: Open Source for LibrariesNicole C. Engard
 
Fred Spencer: Designing a Great UI
Fred Spencer: Designing a Great UIFred Spencer: Designing a Great UI
Fred Spencer: Designing a Great UIAxway Appcelerator
 
Jeff mc cune sf 2010
Jeff mc cune sf 2010Jeff mc cune sf 2010
Jeff mc cune sf 2010Puppet
 
Toolset of Beansmile
Toolset of BeansmileToolset of Beansmile
Toolset of Beansmileleondu
 
10 Things you should know about Ruby
10 Things you should know about Ruby10 Things you should know about Ruby
10 Things you should know about Rubysikachu
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSCaridy Patino
 
MiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatMiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatHyeonSeok Choi
 

Similar to Developers! Y U No Open Source Ur Code? (20)

Are Your Tests Really Helping You?
Are Your Tests Really Helping You?Are Your Tests Really Helping You?
Are Your Tests Really Helping You?
 
Phorum - PHP Community Conference
Phorum - PHP Community ConferencePhorum - PHP Community Conference
Phorum - PHP Community Conference
 
Power tips to get your app discovered and not forgotten
Power tips to get your app discovered and not forgottenPower tips to get your app discovered and not forgotten
Power tips to get your app discovered and not forgotten
 
Nuxeo Iks 2009 11 13
Nuxeo Iks 2009 11 13Nuxeo Iks 2009 11 13
Nuxeo Iks 2009 11 13
 
Continuous Deployment at Disqus (Pylons Minicon)
Continuous Deployment at Disqus (Pylons Minicon)Continuous Deployment at Disqus (Pylons Minicon)
Continuous Deployment at Disqus (Pylons Minicon)
 
Apcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schulerApcug 2011 07-17-intro_to_drupal_jeff_schuler
Apcug 2011 07-17-intro_to_drupal_jeff_schuler
 
O365Con19 - Sharing Code Efficiently in your Organisation - Elio Struyf
O365Con19 - Sharing Code Efficiently in your Organisation - Elio StruyfO365Con19 - Sharing Code Efficiently in your Organisation - Elio Struyf
O365Con19 - Sharing Code Efficiently in your Organisation - Elio Struyf
 
Interop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServiceInterop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A Service
 
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJava EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
 
Free Your Mind and Your Data Will Follow: Open Source for Libraries
Free Your Mind and Your Data Will Follow: Open Source for LibrariesFree Your Mind and Your Data Will Follow: Open Source for Libraries
Free Your Mind and Your Data Will Follow: Open Source for Libraries
 
Fred Spencer: Designing a Great UI
Fred Spencer: Designing a Great UIFred Spencer: Designing a Great UI
Fred Spencer: Designing a Great UI
 
Jeff mc cune sf 2010
Jeff mc cune sf 2010Jeff mc cune sf 2010
Jeff mc cune sf 2010
 
Toolset of Beansmile
Toolset of BeansmileToolset of Beansmile
Toolset of Beansmile
 
Chandler, Carmody, Dixon, Orrell, Norris, and Ward "Single Sign-On Authentica...
Chandler, Carmody, Dixon, Orrell, Norris, and Ward "Single Sign-On Authentica...Chandler, Carmody, Dixon, Orrell, Norris, and Ward "Single Sign-On Authentica...
Chandler, Carmody, Dixon, Orrell, Norris, and Ward "Single Sign-On Authentica...
 
10 Things you should know about Ruby
10 Things you should know about Ruby10 Things you should know about Ruby
10 Things you should know about Ruby
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
 
JRubyConf 2009
JRubyConf 2009JRubyConf 2009
JRubyConf 2009
 
Composer
ComposerComposer
Composer
 
MiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatMiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.Microformat
 

Recently uploaded

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfROWELL MARQUINA
 
Arti Languages Pre Seed Pitchdeck 2024.pdf
Arti Languages Pre Seed Pitchdeck 2024.pdfArti Languages Pre Seed Pitchdeck 2024.pdf
Arti Languages Pre Seed Pitchdeck 2024.pdfwill854175
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
full stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdffull stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdfHulkTheDevil
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Dynamical Context introduction word sensibility orientation
Dynamical Context introduction word sensibility orientationDynamical Context introduction word sensibility orientation
Dynamical Context introduction word sensibility orientationBuild Intuit
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
THE STATE OF STARTUP ECOSYSTEM - INDIA x JAPAN 2023
THE STATE OF STARTUP ECOSYSTEM - INDIA x JAPAN 2023THE STATE OF STARTUP ECOSYSTEM - INDIA x JAPAN 2023
THE STATE OF STARTUP ECOSYSTEM - INDIA x JAPAN 2023Joshua Flannery
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Green paths: Learning from publishers’ sustainability journeys - Tech Forum 2024
Green paths: Learning from publishers’ sustainability journeys - Tech Forum 2024Green paths: Learning from publishers’ sustainability journeys - Tech Forum 2024
Green paths: Learning from publishers’ sustainability journeys - Tech Forum 2024BookNet Canada
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Bitdefender-CSG-Report-creat7534-interactive
Bitdefender-CSG-Report-creat7534-interactiveBitdefender-CSG-Report-creat7534-interactive
Bitdefender-CSG-Report-creat7534-interactivestartupro
 
Women in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationWomen in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationDianaGray10
 

Recently uploaded (20)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdf
 
Arti Languages Pre Seed Pitchdeck 2024.pdf
Arti Languages Pre Seed Pitchdeck 2024.pdfArti Languages Pre Seed Pitchdeck 2024.pdf
Arti Languages Pre Seed Pitchdeck 2024.pdf
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
full stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdffull stack practical assignment msc cs.pdf
full stack practical assignment msc cs.pdf
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Dynamical Context introduction word sensibility orientation
Dynamical Context introduction word sensibility orientationDynamical Context introduction word sensibility orientation
Dynamical Context introduction word sensibility orientation
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
THE STATE OF STARTUP ECOSYSTEM - INDIA x JAPAN 2023
THE STATE OF STARTUP ECOSYSTEM - INDIA x JAPAN 2023THE STATE OF STARTUP ECOSYSTEM - INDIA x JAPAN 2023
THE STATE OF STARTUP ECOSYSTEM - INDIA x JAPAN 2023
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Green paths: Learning from publishers’ sustainability journeys - Tech Forum 2024
Green paths: Learning from publishers’ sustainability journeys - Tech Forum 2024Green paths: Learning from publishers’ sustainability journeys - Tech Forum 2024
Green paths: Learning from publishers’ sustainability journeys - Tech Forum 2024
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Bitdefender-CSG-Report-creat7534-interactive
Bitdefender-CSG-Report-creat7534-interactiveBitdefender-CSG-Report-creat7534-interactive
Bitdefender-CSG-Report-creat7534-interactive
 
Women in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automationWomen in Automation 2024: Career session - explore career paths in automation
Women in Automation 2024: Career session - explore career paths in automation
 

Developers! Y U No Open Source Ur Code?

  • 1. DEVELOPERS! Y U No Open Source Ur Code? http://ragecomics.memebase.com/ Tuesday, 1 November 11
  • 2. SOMETHING ABOUT ME Craig Marvelley Developer @ Box UK @craigmarvelley boxuk.com http://www.flickr.com/photos/jimmiehomeschoolmom/ http://www.flickr.com/photos/catatronic/ Tuesday, 1 November 11
  • 3. What is open source software? http://ragecomics.memebase.com/ Tuesday, 1 November 11
  • 4. Hands up if you use open source software http://www.flickr.com/photos/cheesy42/ Tuesday, 1 November 11
  • 5. Hands up if your company uses open source software http://www.flickr.com/photos/cheesy42/ Tuesday, 1 November 11
  • 6. Hands up if you release open source software http://www.flickr.com/photos/cheesy42/ Tuesday, 1 November 11
  • 7. Hands up if your company releases open source software http://www.flickr.com/photos/cheesy42/ Tuesday, 1 November 11
  • 8. A recent survey of 300 companies found: Using Open Source Software Don’t intend to use it Experimenting with it 28% 50% 22% Source: Accenture (2010): http://newsroom.accenture.com/article_display.cfm?article_id=5045 Tuesday, 1 November 11
  • 9. A recent survey of 300 companies found: Willing to contribute software back to the community Unwilling to contribute 29% 71% Source: Accenture (2010): http://newsroom.accenture.com/article_display.cfm?article_id=5045 Tuesday, 1 November 11
  • 10. OPEN SOURCE AT BOX UK • Utilised in many of our products • Particularly the Amaxus ® Content Management System • Amaxus is mainly written in PHP • Version 3 (2002): ~1,439,295 lines of PHP, 3% open source • Version 4 (2008): ~1,474,994 lines of PHP. ~81% open source Tuesday, 1 November 11
  • 11. Avoid reinventing the wheel http://www.flickr.com/photos/rvignes/ Tuesday, 1 November 11
  • 12. Quality is paramount http://www.flickr.com/photos/zigdon/ Tuesday, 1 November 11
  • 13. Make sure it’s accessible http://www.flickr.com/photos/potatojunkie/ Tuesday, 1 November 11
  • 14. Check the license suits the usage http://www.flickr.com/photos/ecastro/ Tuesday, 1 November 11
  • 15. THE TURNING POINT Tuesday, 1 November 11
  • 17. OBSCURA • PHP component to perform thumbnailing • Written for PHP 5.3 - namespaces, autoloading, fully unit tested • Integrated back into Amaxus • Could we do another one? Tuesday, 1 November 11
  • 18. BOXUK-DI • Amaxus has an annotation-based dependency injection container • Uses the Addendum library to parse doc-blocks • We refactored Amaxus to extract the DI code • Existing unit tests made sure we didn’t break anything • We now had two libraries on our hands Tuesday, 1 November 11
  • 19. “What if we open sourced them?” http://ragecomics.memebase.com/ Tuesday, 1 November 11
  • 20. PRECEDENT • Zend • Gradwell • Sensio Labs • openSky • Liip AG • knpLabs Tuesday, 1 November 11
  • 21. GOING OPEN-SOURCE • Hosted the libraries on a company github account • Redesigned our ‘labs’ page on boxuk.com • Authored content for the website to announce and document the libraries • Tweeted about it from the company account Tuesday, 1 November 11
  • 25. “Lets do some more!” http://ragecomics.memebase.com/ Tuesday, 1 November 11
  • 26. BOXUK-ROUTING • Refactored and extracted the routing system from Amaxus • Slightly different to other routing components • Decreased coupling • Improved code quality • Improved test coverage Tuesday, 1 November 11
  • 27. DESCRIBR • Component to extract metadata from any file • Wraps php-reader, adding a plugin architecture • Encourages others to contribute plugins and functionality • First library to be used outside Amaxus Tuesday, 1 November 11
  • 28. Bringing it all together http://www.flickr.com/photos/pinksherbet/ Tuesday, 1 November 11
  • 29. CODING STANDARDS • We had a defined coding standard • It was only written down; no way to enforce it • Enter PHPCodesniffer • We wrote a set of sniffs to check code conformed to our standard • Integrated it into our Continuous Integration process • Open sourced the sniffs on Github Tuesday, 1 November 11
  • 30. DEPLOYMENT • We started using the libraries in live projects • Git isn’t ideal at dependency management • Looked into using PEAR as a deployment mechanism • Wasn’t straightforward to begin with - documentation lacking • Eventually successful - and it was worth it Tuesday, 1 November 11
  • 31. The Future http://www.flickr.com/photos/alejandroamador/ Tuesday, 1 November 11
  • 32. MORE OPEN SOURCE SOFTWARE • Continue to release PHP components • Perhaps contribute to the Symfony CMF project • Release code for other languages? Tuesday, 1 November 11
  • 33. SUMMING UP Thanks to our open source experiment: • We have improved our code quality • Our website has more content • We have an enforced coding • The company has increased standard visibility • We have a PEAR channel • Our developers can work on diverse, contained projects that • We have experience using Git make a difference and Github Tuesday, 1 November 11
  • 34. LESSONS LEARNED • Remember YAGNI - You Ain’t Gonna Need It • If refactoring existing code for release, choose wisely • Use the right tools for the job Tuesday, 1 November 11
  • 35. THANKS FOR LISTENING! @craigmarvelley http://github.com/boxuk http://joind.in/talk/view/3810 Tuesday, 1 November 11