SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a 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
 

Semelhante a 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
 

Último

Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Último (20)

Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

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