Where do I start, it's love hate.
* it's slow. Yes you can cache, what about a Drupal site where the majority of users have to authenticate? People these days seem to throw a load of servers at the problem to scale horizontally, this expensive due to the poor performance. It's in the cloud, it's easy no It's expensive and far from easy to do it properly! its complex and that fluffy cloud sits on servers sipping power that shouldn't be needed.
* The api, it's great fairly well documented and can get hooks into virtually anything. The implementation, nested multiple dimensional array after array. It's horrible to code form arrays, overriding things in php template as an example where you have $array[...][...][...][...]="blah" and on and on. The modulisation is great, keeps a good structure, allows for feature toggles. Unfortunately due to how php works every enabled module is loaded into memory for every request. Average at a minimum I've seen is 60mb of memory used per user to display the most basic of pages. Rubbish!!! Yes you can wire modules up so only certain parts of a module are loaded at specific parts of the bootstrap phase to keep memory down, how many use it?
* off the top of my head I think the file is common.php in the includes folder, ever opened it? Ever tried to figure out what it does? Ever tried to step through it with xdebug? That's a good few days of my life I'll never get back 7k of loc is it?
*It's abused, Drupal is a web based content management system, it's not a cms in the sense content can be anything such as documents, files, xml, etc etc in a similar sense to alfresco. Drupal is primarily for spitting out HTML pages. I've seen people use Drupal for alsorts, one site which was quite substantial and was a repair/mop up job had 1 node! 1 node in the entire database but had a very large code base doing complex things. It was like trying to fit a square peg in a round hole. There loads of evangelists, Drupal can do this, it can do that, and they do make it do it, just because you can shouldn't mean you should.
* modules, loads of them. Some maintainers can be asses. Download a module, doesn't do something you want, add said functionality commit back, rejected, doesn't fit there roadmap, think it belongs elsewhere etc etc, I've also gone to the issue of fixing bugs only for it to be sat debated out etc etc with the issue being fixed for months but lost in a queue for ever. On the other hand they have been some very good maintainers who pull stuff in with no hassle. Problem is the awkward ones, you are stuck with no upgrade path and essentially forked the module into your own repo to maintain. Great, until you hand over to a client and 12 months down the line they come back for help as Drupal shows a big red warning saying your site is out of date with security updates.
* we make simple things complicated. Views, Panels etc etc. A few lines of optimised code, implement hook_menu with a few lines, point it to a single template file, nice clean, optimised sql query, markup etc. No, the preferred way is views, you click through endless menu systems and end up with half a dozen different template files. It's great at a pitch, you just click here, here, here etc etc you now got this entire page and filters with no code. Yes you do, it's rubbish, slow and convoluted. How many views do you create once a site is live? they are not dynamic content in the sense of nodes, how many times do you edit a view when a site is live? Not many, bug fixes mainly. it's a create once forget thing why do I want a silly GUI builder which creates a tangled slow mess?
On the plus side even though it can be better, if you want a reasonable turn around on a HTML based website that has dynamic content etc with lots of resources for help, reasonable availability to developers and easy to get to market/host by just dumping on a lamp server it's one of the better options and does what it does reasonably well. As I said at the start, Drupal for me is love hate. This is based on working on Drupal from fairly early on, introducing it into a company of 4/5 staff being responsible for the development of the Drupal team, infrastructure, code etc etc and when i left we had around 20 staff with Drupal being a large proportion of work and reason of growth at the time I left.
Sent from ipad