Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@johannesnagl
Created August 11, 2014 19:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johannesnagl/057c8bfb6a1486b132aa to your computer and use it in GitHub Desktop.
Save johannesnagl/057c8bfb6a1486b132aa to your computer and use it in GitHub Desktop.
ViennaPHP August 2014 Gathering: CakePHP point of view
ViennaPHP August Gathering: http://www.meetup.com/viennaphp/events/195495012/
hi guys,
sorry for not being able to join you last week for the August gathering! Sebastian asked me to say some words about our CakePHP development point of view, but it was not possible for me to join in time (because we're running late on a quite big relaunch).
Sebastian sent my some questions, I now want to answer directly here. If there are questions left, please contact me directly and/or comment here!
* Ecosystem (Plugins, Community/Help available): How is the overall ecosystem? Are there many plugins for the framework to integrate the work of others? Is there a community which enables to build better software? Is there a good help and other resources?
As far as I can say, there's not that huge CakePHP-based ecosystem. There are some core devs (which are really friendly and fast in answering questions on twitter/stackoverflow) and more or less a handful of "quite well" plugin developers out there. every year there's a cakefest (next one is in a couple of weeks - have a look at cakefest.org), but as a quite experienced CakePHP-dev, the given talks are oftentimes too basic. The documentation itself is ok and covers allmost the entire framework. so it's always a good start to search there for some help.
* "One size fits all" vs. Component based: Is the framework losely based on components one can tear appart? Can specific parts be replaced by others (ORM, Templating engine)? Is the framework highly coupled so you need to use everything?
you don't need to use all the components/helpers, but you're highly encouraged to do so. the main components can't be easily replaced by others, but I have to say, that this narrow corset is something I like about frameworks. the more standards you have, the more easier it gets to read code from your teammates/code examples from other devs out there.
* Amount of work: How long does it take to set up the framework? How long does it take to implement a feature? What about Rapid Application Development? Are there many repetitive steps?
the setup of a basic CakePHP app is very easy. download the code (via composer with upcoming CakePHP3), configure your db-settings and open up your browser. voila! basic MVC stuff is pretty forward, so you can earn quick wins very fast. to understand a sustainable app design, you have to do lot's of iterations in the beginning. Of course, there's quite some features for the RAD guys of you, but to be honest, I don't have looked into it so far. if you're interested in it, have a look at the docs/scaffoling sections.
* Project structure: Is there a convention over configuration approach? Does knowing the framework enables you to learn an existing project fast because everything is at the same place? Do you need to implement basic features (like different configuration for dev/prod) yourself?
CakePHP is all about "convention over configuration". I love it. As I said earlier, the chance to have everything in it's same place is quite high and there are some basic components for repetitive stuff like authorization, authentication, i18n, l10n, caching, … built into it.
* Testing: Does the framework enable testing? Does it support testing in it's workflows?
Yes, CakePHP supports testing with PHPUnit out of the box.
* Business Perspective:
* Stability: How stable/well tested is the framework? How are bugs handled? Are there frequent updates?
I'm now using CakePHP for 3,5 years. Since then, there was a major version bump from 1 to 2 and some minor bumps to, currently, 2.5. Regression errors are very rare, but for my point of view, there could be more speed in shipping new versions. CakePHP itself is covered with a lot of Unit tests.
* Roadmap: Is there a roadmap? Does it give a clear perspective on how long a certain version of the framework is maintained and what happens afterwards?
There's a roadmap for the upcoming 3.0 release, but it's out there for quite some time and I'm really disappointed about it. 3.0 looked like a vapor ware to me for 1,5 years - until it was alpha-launched a couple of weeks ago. The mentioned features/changes where somewhat vague and I'm really interested what 3.0 is going to look like. The transition from 2.5 to 3.0 is going to introduce many breaking changes (ORM-mapper is completely new (finally no more arrays returned from the mapper!), many many renamings, …), so updating the whole user/dev-base will be a long-lasting undertaking. the devs and their speed of adopting the new 3.0 release will decide CakePHP's future (many are currently switching over to laravel).
* Hiring/Consulting: Are there many developers knowing the framework? How about consulting companies which can help resolve issues fast?
No, I don't have the feeling that there's a huge developer-base in Austria/Vienna at the moment. I know some devs in Germany, but I would not know any consulting company which would be able to help us with any issues (although it's quite complicated to get help for big SAAS-apps in any language)
* Complex applications: Can the framework handle very big / complex business applications? Does it impact performance or maintainablity?
We have all kind of different apps, from simple 1-2 page apps to our biggest apps like swat.io / walls.io. the code bases are getting quite complex over time, but all in all, one is able to find stuff quickly. as in every other language: start soon to refactor, start soon to test. the better you code, the bigger the chance to have a maintainable code base.
We're not having that much performance impact due to the framework. but you REALLY need to understand how the framework is built. if you don't know how the underlying SQL-queries are built, you have no chance to scale :)
Guys, again sorry for not taking part in your conversation last week. hope to be with you next time. now back to work. the big release is happening very soon :)
Disclaimer: I'm not the biggest fan boy of CakePHP out there (especially when returning to PHP after 2 years of coding ruby on rails) but it's quite ok and stable. it's not as hip as laravel, but who needs hip code, when you can have good cake!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment