Five Years of Beta

Five Years of Beta

Presented July 23, 2016 at Symfony Catalunya: https://joind.in/talk/081df

F23700b51dc0c196c1dc02f84aeeecdf?s=128

Jeremy Mikola

July 23, 2016
Tweet

Transcript

  1. Five Years of Beta Jeremy Mikola @jmikola

  2. A little about myself

  3. Some time ago, I talked about this…

  4. tl;dr

  5. This is a story about Doctrine MongoDB ODM

  6. From the other side

  7. • Object Relational Mapper (ORM) • Database Abstraction Layer (DBAL)

    • Object Document Mappers (ODMs) ◦ MongoDB ◦ PHPCR ◦ CouchDB ◦ OrientDB • MongoDB Abstraction Layer • Common ◦ Annotations ◦ Collections ◦ Lexer • Cache • Migrations • Framework integrations ◦ Symfony bridge and bundles ◦ Zend Framework modules What (and who) is Doctrine?
  8. What is MongoDB? • Open-source document database ◦ Replication and

    sharding ◦ Web scale™ • Cloud services ◦ Monitoring and backup ◦ Operations management ◦ Database as a Service (DBaaS) • Integrations ◦ Hadoop ◦ Spark ◦ BI Connector (SQL) • Drivers ◦ PHP, HHVM, and many other languages
  9. Let’s go back in time…

  10. None
  11. Who was using Symfony back then?

  12. OpenSky faced an architectural challenge • Encountered difficulty scaling Magento

    ◦ Multi-tenant deployment with hundreds of stores • Realized the need for a bespoke application ◦ Move Magento behind a service layer during transition ◦ Slowly migrate away from its EAV database model • Considered the very latest technologies ◦ PHP 5.3 ◦ Lithium ◦ Symfony 2 ◦ Zend Framework 2 ◦ MongoDB
  13. Symfony Live Paris 2011

  14. Symfony Live Paris 2011

  15. Long before Composer

  16. install_vendors.sh

  17. update_vendors.sh

  18. Active Record

  19. Data Mapper

  20. None
  21. These guys had an idea

  22. Why don’t we create an ODM for MongoDB? • Port

    essential ORM functionality ◦ Class metadata ◦ Unit of work ◦ Lifecycle events ◦ Persistence ◦ Repositories • Limit the feature scope ◦ Database abstraction layer ◦ Sharding support ◦ Migrations ◦ Caching
  23. None
  24. 2010 – 2011

  25. 2012 – 2014

  26. 2015 – present

  27. Why did this take five years?

  28. Keeping up with the flow

  29. • Maintaining compatibility ◦ MongoDB server ◦ Doctrine Common ◦

    Framework integrations ◦ “Gedmo” Doctrine extensions • Community support ◦ Usage questions ◦ Pull requests ◦ Bug reports • Security vulnerabilities Never-ending todo list
  30. None
  31. None
  32. Watch out for feature creep

  33. Ever-growing wish list • Requested ORM features ◦ Repository factories

    ◦ Query filters ◦ Criteria API ◦ Result caching • New ODM features ◦ Sharding ◦ Geo-spatial queries ◦ Aggregation builder • Refactoring • PHP 7 support
  34. None
  35. None
  36. None
  37. Waiting to merge pull requests

  38. Perfectionism vs. pragmatism

  39. Milestones should not have an open door policy

  40. None
  41. Poppin’ tags

  42. None
  43. Semantic versioning Major: BC breaks Minor: New features Patch: Bug

    fixes
  44. Semantic versioning Major: BC breaks Minor: New features Patch: Bug

    fixes Pre-release: Loophole!
  45. None
  46. None
  47. Find a balance

  48. Open-source can be a full-time job

  49. None
  50. None
  51. None
  52. None
  53. Becoming overwhelmed

  54. Abandoned projects

  55. How did I end up here?

  56. /ping @jwage /ping @jwage /ping @jwage ...

  57. None
  58. None
  59. If you look around and can’t find the leader of

    your local user group… guess what? You are it. ― Cal Evans “
  60. Open-source should be a team effort

  61. ORM development over time

  62. None
  63. None
  64. None
  65. None
  66. None
  67. None
  68. Cultivate and encourage your volunteers

  69. Fast forward a few months...

  70. None
  71. None
  72. None
  73. None
  74. These guys closed the gap

  75. None
  76. Where do we go from here?

  77. None
  78. None
  79. None
  80. None
  81. None
  82. On the road to 2.0.0 • Remove deprecated or problematic

    APIs ◦ YAML driver ◦ requireIndexes • Behavioral changes ◦ Collection strategies ◦ Embedded documents • Internal refactoring ◦ Change set calculation ◦ Class metadata • Direct PHP 7 support ◦ Build upon the new MongoDB driver (ext-mongodb)
  83. 2015 – present

  84. See you in another five years…

  85. Photo Credits • http://octodex.github.com • http://www.mongodb-is-web-scale.com/ • http://shirt.woot.com/offers/it-came-out-of-nowhere • http://phicenter.org/wp-content/uploads/2012/08/stork_baby_delivery_720x540.jpg

    • https://livingstills.tumblr.com/post/113724523047 • http://www.donatoart.com/portraits/cartographer.html • http://logisticalfictions.tumblr.com/post/86099686495/before-a-later-film-revealed-its-boring-mundanity • http://www.reinventioninc.com/wp-content/uploads/2013/09/iStock_000008468780Small-e1380565027473.jpg • http://giphy.com/gifs/thegoodfilms-cinemagraph-thegoodfilms-forrest-gump-JjLylCKqqQs5q • http://giphy.com/gifs/cinemagraph-max-fury-xme2XN3AzQOEU • http://dream-recover-live.blogspot.com.es/2013/05/just-keep-swimming.html • http://i.huffpost.com/gen/1729387/images/o-SHARK-ATTACK-facebook.jpg • https://twitter.com/kizmarh/status/553141889541877760 • http://www.cartoonistgroup.com/properties/lester/art_images/cg56ea24513d0c7.jpg • http://cdn.shopify.com/s/files/1/1067/0834/products/velvet_rope_dude_1024x1024.jpg • https://speaktoall.files.wordpress.com/2013/03/macklemore-thrift-shop-artwork.jpg • http://tkirda.github.io/slides-modern-web-tools/resources/images/semver.png • http://static.neatorama.com/images/2014-04/The-Legend-of-Hodor-l.jpg • https://angeliquepanagos.com/wp-content/uploads/2015/08/balance.jpg • http://latestcalendar.weebly.com/uploads/4/2/7/1/42714133/8676421_orig.jpg