PHP-1701-A

A presentation at ZendCon 2018 in October 2018 in Las Vegas, NV, USA by Adam Culp

Slide 1

Slide 1

PHP-1701-A By: Adam Culp Twitter: @adamculp

Slide 2

Slide 2

PHP-1701-A About me ● – OSS Contributor – PHP Certified – Zend Certification Advisory Board – PHP-Fig voting member (IBM i Toolkit) – Consultant at Zend Technologies – Organizer SoFloPHP (South Florida) – Organizer SunshinePHP (Miami) – Long distance (ultra) runner – Photography Enthusiast – 2 Judo Black Belt Instructor

Slide 3

Slide 3

PHP-1701-A About me ● – OSS Contributor – PHP Certified – Zend Certification Advisory Board – PHP-Fig voting member (IBM i Toolkit) – Consultant at Zend Technologies – Organizer SoFloPHP (South Florida) – Organizer SunshinePHP (Miami) – Long distance (ultra) runner – – 3 I am the Photography Enthusiast PHP Ninja!!! Judo Black Belt Instructor

Slide 4

Slide 4

PHP-1701-A ● Fan of iteration – 4 Pretty much everything requires iteration to do well: ● Long distance running ● Judo ● Development ● Evading project managers ● Enterprise Software!

Slide 5

Slide 5

PHP-1701-A ● What is Enterprise Software? – 5 No, not the starship!

Slide 6

Slide 6

PHP-1701-A ● What is Enterprise Software? – 6 PHP vs Java vs Python vs Go?

Slide 7

Slide 7

PHP-1701-A ● What is Enterprise Software? – 7 Active Record versus Data Mapper?

Slide 8

Slide 8

PHP-1701-A ● What is Enterprise Software? – 8 Symfony vs Zend vs Laravel?

Slide 9

Slide 9

PHP-1701-A ● What is Enterprise Software? – 9 “…is computer software used to satisfy the needs of an organization rather than individual users.” - wikipedia

Slide 10

Slide 10

PHP-1701-A ● What is Enterprise Software? – 10 “…describes a collection of computer programs with common business applications, tools for modeling how the entire organization works, and development tools for building applications unique to the organization…” - also wikipedia

Slide 11

Slide 11

PHP-1701-A ● What is Enterprise Software? – 11 “Enterprise applications are about the display, manipulation, and storage of large amounts of often complex data and the support or automation of business processes with that data.” - Martin Fowler

Slide 12

Slide 12

PHP-1701-A ● 12 Really? – Organization vs User – Large Companies – Corporate Patterns – Data or Complex Data

Slide 13

Slide 13

PHP-1701-A ● 13 In Other Words: – No small companies – No individual users – No simple/small data

Slide 14

Slide 14

PHP-1701-A ● 14 Really? – Organizations versus users – Large companies – Patterns – Data or Complex Data

Slide 15

Slide 15

PHP-1701-A ● What is Enterprise Software? – 15 License

Slide 16

Slide 16

PHP-1701-A ● 16 License – OSS vs Proprietary (many for each) – No license == no sharing – License == Responsibility

Slide 17

Slide 17

PHP-1701-A ● 17 What is Enterprise Software? – License – Interoperability

Slide 18

Slide 18

PHP-1701-A ● Interoperability – 18 Composer ● 433+ million package downloads…in July 2018 ● 10.25 billion total since 2012 ● More than just left-pad – Play nice with others – Easily add functionality – Caring users/community – PHP-FIG ● (politics aside) ● Passions == arguing

Slide 19

Slide 19

PHP-1701-A ● 19 What is Enterprise Software? – License – Interoperability – Lock-in

Slide 20

Slide 20

PHP-1701-A ● 20 Lock-in – Less lock-in is preferred – What if I want Ginger Ale instead of Koolaid? – Can seem innocent ● “We’re trying to help our users.” ● “Oops, sorry, must continue using this to use that.”

Slide 21

Slide 21

PHP-1701-A ● 21 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors

Slide 22

Slide 22

PHP-1701-A ● 22 Contributors – More eyeballs – More brains – More ideas – More updated – More faster – Role of Git

Slide 23

Slide 23

PHP-1701-A ● 23 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor

Slide 24

Slide 24

PHP-1701-A ● Bus Factor – 24 Will it die without {{so-and-so}}? ● Visionary ● Energy ● Glue

Slide 25

Slide 25

PHP-1701-A ● 25 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation

Slide 26

Slide 26

PHP-1701-A ● 26 Documentation – App is not complete without it – Entry level to advanced – Searchable – Complete – Books, Blogs, Podcasts – Videos

Slide 27

Slide 27

PHP-1701-A ● 27 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support

Slide 28

Slide 28

PHP-1701-A ● Support – Throat to choke ● 28 Who’s to blame – Community – Corporate – More than one

Slide 29

Slide 29

PHP-1701-A ● 29 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support – Compliance/Security

Slide 30

Slide 30

PHP-1701-A ● 30 Compliance/Security – SOC, OCI, SAS70, PCI, Sarbanes Oxley (SOX), Oh my! – Richardson Maturity Model (REST) – RFCs – CVE issues ● Friends of PHP: https://github.com/FriendsOfPHP/security-advisories ● https://cve.mitre.org/

Slide 31

Slide 31

PHP-1701-A ● 31 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support – Compliance/Security – Longevity

Slide 32

Slide 32

PHP-1701-A ● 32 Longevity – Experience level – Older == stability … usually ;-) – Waiting for version n.01 – Version 8 being defined

Slide 33

Slide 33

PHP-1701-A ● 33 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support – Compliance/Security – Longevity – Upgradeable

Slide 34

Slide 34

PHP-1701-A ● 34 Upgradeable – Wizards – Documentation – BC (backward compatible) – Composer

Slide 35

Slide 35

PHP-1701-A ● 35 What is Enterprise Software? – License – Interoperability – Lock-in – Contributors – Bus Factor – Documentation – Support – Compliance/Security – Longevity – Upgradeable – Roadmap

Slide 36

Slide 36

PHP-1701-A ● 36 Roadmap – Plans for next version – Vision or ideas – Stagnant – Openness

Slide 37

Slide 37

PHP-1701-A ● Other Considerations – 37 Performance

Slide 38

Slide 38

PHP-1701-A ● 38 Other Considerations – Performance – Code Quality

Slide 39

Slide 39

PHP-1701-A ● 39 Other Considerations – Performance – Code Quality – Coding Standards

Slide 40

Slide 40

PHP-1701-A ● 40 Other Considerations – Performance – Code Quality – Coding Standards – IDE Friendly

Slide 41

Slide 41

PHP-1701-A ● 41 Other Considerations – Performance – Code Quality – Coding Standards – IDE Friendly – Tested/Testable

Slide 42

Slide 42

PHP-1701-A ● Future – 42 Remote working

Slide 43

Slide 43

PHP-1701-A ● 43 Future – Remote working – Microservices

Slide 44

Slide 44

PHP-1701-A ● 44 Future – Remote working – Microservices – Containers

Slide 45

Slide 45

PHP-1701-A ● 45 Future – Remote working – Microservices – Containers – Async PHP (Swoole, ReactPHP, PHP v.8)

Slide 46

Slide 46

PHP-1701-A ● 46 Future – Remote working – Microservices – Containers – Async PHP (Swoole, ReactPHP, PHP v.8) – Middleware (SlimPHP, Expressive, etc.)

Slide 47

Slide 47

PHP-1701-A ● 47 Future – Remote working – Microservices – Containers – Async PHP (Swoole, ReactPHP, PHP v.8) – Middleware (SlimPHP, Expressive, etc.) – Serverless

Slide 48

Slide 48

PHP-1701-A ● 48 Future – Remote working – Microservices – Containers – Async PHP (Swoole, ReactPHP, PHP v.8) – Middleware (SlimPHP, Expressive, etc.) – Serverless – Function as a Service (FaaS)

Slide 49

Slide 49

PHP-1701-A ● 49 Summary… “Enterprise” is: – Stability – Dependability – Security – Business Continuity

Slide 50

Slide 50

● Thank you! – Code: https://github.com/adamculp/ Adam Culp http://www.geekyboy.com http://RunGeekRadio.com Twitter @adamculp Questions?