58
Herman Peeren 30 mei 2014, J & Beyond Joomla? The Next Generation

Next Generation Joomla!

Embed Size (px)

DESCRIPTION

Presentation at J & Beyond conference, May 30 2014. Looking outside the Joomlasphere to get some inspiration about techniques to build better software, including Agile, DDD, TDD, BDD, Behat, Doctrine ORM, DCI, CQRS, Client-side MVC etc. Video of presentation on https://www.youtube.com/watch?v=-6u4aUvCTx4

Citation preview

Page 1: Next Generation Joomla!

Herman Peeren30 mei 2014, J & Beyond

Joomla?The Next Generation

Page 2: Next Generation Joomla!

Let’s move to outer space,

beyond

Joomla!

Page 3: Next Generation Joomla!

Developing software not easy

Page 4: Next Generation Joomla!

improved a bit over the years:

Page 5: Next Generation Joomla!

Waterfall

Page 6: Next Generation Joomla!

Waterfall vs Agile

iterations (sprints)

Page 7: Next Generation Joomla!

Waterfall vs Agile

Page 8: Next Generation Joomla!
Page 9: Next Generation Joomla!
Page 10: Next Generation Joomla!
Page 11: Next Generation Joomla!
Page 12: Next Generation Joomla!
Page 13: Next Generation Joomla!

DDDTDDBDD

Page 14: Next Generation Joomla!

Sapir–Whorf hypothesis

Linguistic relativity:

Structure of a language affects the ways in which its respective speakers conceptualize their world.

голубой

Wilhelm von Humboldt Franz Boas Edward Sapir

Page 15: Next Generation Joomla!

Nelleke Verhoeff, Red Cheeks Factory,

Page 16: Next Generation Joomla!

Nelleke Verhoeff, Red Cheeks Factory,

Page 17: Next Generation Joomla!

DDD

ubiquitous language:

using the language of the domain you are modeling

Page 18: Next Generation Joomla!

TDDTests afterwards are boring, I like to create new things!

Page 19: Next Generation Joomla!

TDDTests first!

Page 20: Next Generation Joomla!
Page 21: Next Generation Joomla!

Some recent TDD critics

•architecture destroyed by unit-level-tests•easy to measure doesn’t mean it’s important

David Heinemeier Hansson (‘DHH’)http://www.confreaks.com/videos/3315-railsconf-keynote

James Coplien (‘Cope’)www.rbcs-us.com/documents/Why-Most-Unit-Testing-is-Waste.pdf

“Is TDD dead?”. Four discussions on video with Martin Fowler Kent Beck and DHHhttp://martinfowler.com/articles/is-tdd-dead/

Page 22: Next Generation Joomla!

BDD

Dan Northhttp://dannorth.net/introducing-bdd/

Functional testing

Page 23: Next Generation Joomla!
Page 24: Next Generation Joomla!

Seleniumhttp://docs.seleniumhq.org/

Page 25: Next Generation Joomla!

Selenium in PHPUnithttp://phpunit.de/manual/current/en/selenium.html

Acceptence testing

Page 26: Next Generation Joomla!

Behathttp://behat.org/

Page 27: Next Generation Joomla!

Behat

•based on Cucumber (Gherkin language)•given - when - then

Page 28: Next Generation Joomla!

Behat: define features

steps suggestions

Page 29: Next Generation Joomla!

define steps

Page 30: Next Generation Joomla!

Minkhttp://mink.behat.org/

Page 31: Next Generation Joomla!

Codeceptionhttp://codeception.com/

No Gherkin-language, but PHP (new WebGuy)

Page 32: Next Generation Joomla!
Page 33: Next Generation Joomla!
Page 34: Next Generation Joomla!
Page 35: Next Generation Joomla!
Page 36: Next Generation Joomla!
Page 37: Next Generation Joomla!
Page 38: Next Generation Joomla!

CreateReadUpdateDelete

Page 39: Next Generation Joomla!

Let’s Create, Read,

Update and Delete

...an employee

Page 40: Next Generation Joomla!

Create, Read,

Update and Delete

...an employee

Page 41: Next Generation Joomla!

Create, Read,

Update and Delete

...an employee

Page 42: Next Generation Joomla!

Create, Read,

Update and Delete

...an employee

Page 43: Next Generation Joomla!

Create, Read,

Update and Delete

...an employee

???

Page 44: Next Generation Joomla!

I’d rather Hire

or Fire

an employee ...

Page 45: Next Generation Joomla!
Page 46: Next Generation Joomla!

Mapping some knight-objects ...

... to their proper tables

Page 47: Next Generation Joomla!
Page 48: Next Generation Joomla!
Page 49: Next Generation Joomla!
Page 50: Next Generation Joomla!
Page 51: Next Generation Joomla!

Interfaces to build a CMS

JCR & JackRabbithttp://en.wikipedia.org/wiki/Content_repository_API_for_Java http://jackrabbit.apache.org/

PHPCR, Jackalope & Midgard2https://github.com/phpcr/phpcr http://jackalope.github.io/ https://github.com/jackalope/jackalope-doctrine-dbal http://bergie.iki.fi/blog/midgard2_phpcr_provider_hits_1-0/

Symfony CMF http://cmf.symfony.com/ http://docs.doctrine-project.org/projects/doctrine-phpcr-odm/en/latest/

Page 52: Next Generation Joomla!

Some NoSQL

Document-db: MongoDB http://www.mongodb.org/ https://doctrine-mongodb-odm.readthedocs.org/en/latest/

Graph-db: Neo4jhttp://www.neo4j.org/develop/php https://github.com/lphuberdeau/Neo4j-PHP-OGM

Hybrid graph-document-db: OrientDB http://www.orientechnologies.com/orientdb/ http://www.doctrine-project.org/projects/orientdb-odm.html

Page 53: Next Generation Joomla!

CQRSCommand Query Responsibility Segregation http://martinfowler.com/bliki/CQRS.html https://github.com/beberlei/litecqrs-php

Page 54: Next Generation Joomla!

DCIData-Context-Interaction

To support an object style of thinking that is close to peoples’ mental models,

rather than the class style of thinking that overshadowed object thinking early in the history

of object-oriented programming languages.

http://fulloo.info/Documents/ mailinglist: https://groups.google.com/forum/#!forum/object-composition

Page 55: Next Generation Joomla!
Page 56: Next Generation Joomla!

for instance:

•backbone.js•ember.js•angular.js

(not for SEO)

Client-side MVC

Page 57: Next Generation Joomla!