Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Maintaining an Open Source Project

Avatar for Aric Watson Aric Watson
September 22, 2015

Maintaining an Open Source Project

Nexcess_Turpentine is one of the most installed extensions to integrate Varnish and Magento among the community. With more than 190 forks and 390 stars on GitHub, maintaining the extension has been quite a challenge. The objective of the talk is to explain the process of maintaining and developing an opensource extension in comparison to proprietary code.

Avatar for Aric Watson

Aric Watson

September 22, 2015

Other Decks in Programming

Transcript

  1. Who is This? •  Web  developer  at  Nexcess   • 

    Work  on  internal  and  external   projects,  including  Turpen9ne   •  Nexcess  has  been  hos9ng  Magento   since  the  very  beginning    
  2. •  Full-­‐page  caching  via  Varnish  (reverse  caching  proxy)   • 

    Hole-­‐punching  via  ESI  (Edge  Side  Includes)  and  Ajax   •  Extremely  configurable   •  Can  drama9cally  improve  both  TTFB  and   concurrency   •  About  three  years  old,  has  always  been  open  source   on  Github   What is Turpentine?
  3. •  Can  be  used,  wriLen,  modified,  and  distributed  by  anyone

      •  Access  to  source  code   •  Transparency  =  beLer  code  quality   •  Community  is  an  oOen  overlooked  advantage     What is an open source project, and why is better than proprietary code?
  4. l  3  years  old   l  180  forks   l 

    385  stars   l  31  releases   l  760  closed  issues   l  125  closed  pull  requests   l  ~7,000  stores   Nexcess_Turpentine
  5. We Have Issues – and That’s Good! •  Someone’s  using

     your  extension!     •  Find  and  fix  inevitable  bugs   •  Find  out  about  needs  and  features   •  Open-­‐source  means  reporter  is   fixer   •  Interact  with  real  users  of  your   extension   Issues  are  opportuni9es  –  not   problems!  
  6. •  Varnish  configura9on  issues  -­‐  not  directly  related  to  Turpen9ne

      •  Incompa9bili9es  with  third-­‐party  themes/extensions   •  Baseline  goal  –  Turpen9ne  will  work  with  base  Magento  install,  using   the  default  theme.   •  S9ll,  lots  of  combina9ons  of  Magento,  Varnish  and  theme!   Turpentine Issues
  7. Prioritizing Issues “The  needs  of  the  many  outweigh  the  

    needs  of  the  few.”   Factors  to  consider:   •  Scope   •  Security     •  Performance   •  Time   To  determine  priority,  we  need  good   informa9on!  
  8. •  What  version/branch  of  Turpen9ne?   •  What  version  of

     Magento?   •  Helpful  log  entries   •  What  you’ve  tried  so  far   •  How  we  can  replicate  the  issue  on  a  base  installa9on  of  Magento   with  the  default  theme!   Help Us Help You
  9. •  Insight  into  real-­‐world  usage  of  your  extension   • 

    Real-­‐world  tes9ng  by  real  users,  in  a  huge  variety  of  environments   •  Interac9on  with  your  users  and  other  developers   •  Closed  and  resolved  issues  provide  an  amazing  resource  for  other   users  with  similar  problems  –  and  for  you!   Love Your Issues
  10. 1.  Fork  the  repository  in  your  account.   2.  Make

     your  changes  and  push  them  to  GitHub.   3.  Open  a  PR  and  point  it  to  devel.   4.  Check  if  Travis  CI  tests  are  passing.   5.  Core  developers  revise  it  and  merge  it  into  devel   Congrats,  you  are  a  contributor!   Pull requests and how to create them:
  11. Branches Turpen9ne  uses  a  fairly  standard  branch  model  for  development:

      •  Two  primary  branches,  master  and  devel   •  Master  =  most  recent  stable  version   •  Devel    =  development  branch   •  Not  recommended  for  produc9on   •  Feature  branches  for  larger  features   •  i.e.  recent  Varnish  4  compa9bility  –  devel-­‐varnish4    
  12. Documentation – the Wiki •  Centralized   •  Easily  Maintained

      •  Includes  revisions   •  Searchable  
  13. We  love  open  source!   We  love  contributors!   We

     love  developers!   Go  out  and  contribute!