ZendCon Europe

It's a bit late to talk about it now but I finally found time to organize my notes about the first edition of the ZendCon Europe which took place on November 19th-20th.

The conference was an attempt to reproduce in Europe the ZendCon conferences which have been ongoing for more than 10 years in the USA, and are "the place to be" for PHP developers, where you can meet and listen to some of the greatest international experts on PHP.

This first edition of ZendCon Europe was a bit pricey (around 540€ with taxes) for a two days event (3-days if you count the tutorial sessions on the 18th), but you could feel were the money went seeing the amazing venue, all-star line-up of speakers, loot (I love my red elePHPant) and even an awesome after-party.

I'll sum up in this post "my" conference, meaning the sessions and keynotes I saw, chronologically from my notes.

Opening keynote (Andi Gutmans)

The conference started by an opening keynote by Andi Gutmans, who talked of the state of PHP and of Zend, the company, inviting on stage other speakers to detail their work.

The most impressive of what was shown was for me Apigility, a micro-framework made by the Zend Framework team which as for objective to allow the quick design of APIs.

Other notable thing, the focus on continuous deployment and devops. They talked about recent improvements of the Zend Server for continuous deployment, but also, for people who don't have such servers, that they have released their blueprints for continuous delivery on zend.com/blueprints

Simple APIs with ZF2 - Apigility

After the first keynote, I changed my plans: I had initially planned to watch the talk Vagrant, puppet & chef for beginners, but I wanted to know more about Apigility, so I instead went with this talk.

I learned that Apigility was a dev tool, available via composer (zf-apigility-skeleton), and that it was opinionated: Only JSON is supported (too bad, XML), allows to version via URLs or http headers, proposes a way to cleanly handle errors, authentications, to paginate, to restrict the used HTTP methods...

Long story short: it is the tool I wanted to test the most quickly after getting out of the conference, as it seemed like some hard API work I've done before was re-created effortlessly using this.

There's a module for that

I confess, I didn't read correctly the presentation of this talk, and did not understand that it would talk about ZF2 modules. I also thought it would be a presentation of cool modules.

Instead, the talk was basically an introduction to the Zend Framework 2 modules and their website (modules.zendframework.com/).

Keynote - The future of PHP in enterprises

Enter Andi Gutmans, Zeev Suraski and Fabien Potencier. Put them around a table and make them talk about the future of PHP. I wish it'd be longer!

The session started speaking generally about that both Zend Framework and Symfony were frameworks which intended to "push PHP to the next level"

Andi Gutmans talked about the Zend Framework, explaining that it was a collection of best practices for enterprise scale adoption, but that "while it's nice enterprises are using the Zend Framework, it's not needed" for Zend as a company, as they have a whole environment and are interested in PHP beyond their own framework.

Fabien Potencier reacted to this, stating strongly that he does care about people adopting Symfony, and that he wants more and more projects to adopt it, because he thinks more projects working together will lead to better quality (while I think he has a point, isn't having competition always important for innovation?)

Zeev Suraski was the next on to talk, telling that Zend did care about the adoption of their framework, just that it was not necessary for them. He then talked about how applications were going from being "API-enabled" to "API-first", with the rise of single page applications, and that the work on the server wasn't going away. He continued stating that "in some use cases, something like node.js makes sense, but for most use cases, PHP is the best tool"

Fabien Potencier agreed with what Suraski said, noting that Symfony 2 has a big focus on HTTP. He continued saying that the many years of PHP development made it the best for the backend, and that his opinion was that the PHP processes cycle (processes created then dying at the end of their execution) were in his opinion one of the best things about PHP.

Andi Gutmans then called PHP the visual basic of the web, since everyone, from the script kiddie to the computer science graduate, can use it at various levels. Indeed, Fabien Potencier separated the PHP world into 2 communities: The "low-end" community ("guys maintaining a Wordpress"), and the people using it for professional uses, using ZF or Symfony. He continued saying that PHP had small components which allowed people to start small, but at some point people had to choose : creating simple websites, or "grow up" and learn OOP, MVC, etc. In his opinions, learning PHP was simple, and that was something which was unique about it.

The conversation then proceeded about PHP's performance. Fabien Potencier mentioned this article talking about PHP's performance and the use of ReactPHP, stating that "PHP is fast enough", and that the tools weren't as mature as he wanted them to be, but that we were getting there.

Talking about using PHP as a language to be put on other platforms, Andi Gutmans told that it didn't make sense for them to try to make PHP as an universal language (for desktop applications, for example), but Fabien Potencier countered, saying that if they wanted companies to use PHP, and since companies usually settle for a single language, "PHP should be good enough for everything". While I do not believe that PHP will get there (JavaScript's the most likely candidate those days as an universal language), I do think the opinion's interesting.

Next was a reminder that there was an agreement that PHP 5.x from now should not break anything big nor need any big migrations from now on. If something''s broken from a version to another, then it means we'll have a new major PHP version (aka PHP 6), or that they'd have "a damn good reason".

Was also mentioned the fact that those PHP companies sell support for the unsupported versions of PHP, since big companies sometimes do not want / can not migrate to new versions due to too big costs. The current PHP releases cycles states that after release, a version is supported for 2 years for bug & security fixes, then one additional year only for security fixes. Fabien Potencier, as the maker of Symfony, which has longer support cycles, wondered if PHP's cycles weren't a bit too short.

And that was it for this great keynote!

Dependency Injection

After the big keynote, I assisted to a session about dependency injection. It was actually quite nice, and the speaker, Rob Allen, was really a great.

So I learned that "dependency injection enables loose coupling, and loose coupling makes the code more maintainable".

I found myself reminded that dependency injection was a complex named linked to a quite simple design pattern that most probably use naturally. Coincidentally, it was something told in the talk - that design patterns were only shorthands, thought by clever people... which is why they get so complicated names.

So quite a simple concept covered here, but as I wrote in my notes, "Great talk!"

Practical design patterns in PHP

This talk, by Hugo Hamon and Julien Pauli, covered a few design patterns and gave concrete examples of their uses, as the two speakers wrote code for an e-commerce application.

The talk started with an explanation of the SOLID principle, then a few design patterns were covered.

I didn't take many notes during this talk but it was interesting seeing the authors show us how they use some design patterns in real life examples.

The session ended with the recommendation of two books to dig deeper: Martin Fowler's Patterns of Enterprise Application Architecture, and Head first into design patterns.

Building Scalable PHP Applications Using Google’s App Engine

Google has recently added PHP to the list of languages supported by Google App Engine, and they presented their platform.

PHP for App Engine is a PHP fork which is quite opinionated (among other things, "no write on the file system") and doesn't cover all of PHP's features (at the time of the conference, there was no support for curl, and there was no PHP5.5)

Still, the presentation wasn't bad as the advantages of the App Engine were discussed... and it ended with developers being given a huge discount on App Engine credit.

So that session was mostly a commercial stunt... But at least, it was better executed that what Microsoft did the next day when they showcased Windows Azure.

End of the day!

So here ended my first day at the ZendCon Europe, which was quite a good day! And the evening got even better since the after party involved a privatized arcade center. Everyone who played it as a child should get as an adult a chance to finally finish Time Crisis 2!