So it's been a week since DrupalCon, which means I'm kinda sorta caught up enough to write about it. Hooray!
As with DrupalCon Sunnyvale, I came away with one conclusion fixed in my mind: The Community is Drupal's greatest strength. Virtually everyone upholds a strong community and open source spirit, and will gladly talk to you for hours about subjects both on topic and off, with or without beer (free or otherwise).
But enough about how cool we are. On with the rundown.
The main problem of the day was that I really couldn't get any decent Internet connection. The Citilab convention center has an open access point, but for some reason I could never get more than a few seconds of connection before it crapped out on me. It was also slow and/or unreliable for some other people, but just fine for others. I don't understand why, but it really cramped my style. In fact, that problem persisted, mostly just for me, for the entire conference. :-(
After the welcome message (430 people!), I started DrupalCon at James Walker's OpenID talk. I'd missed it in Sunnyvale so decided to pick it up in Spain, especially since it was in core now. He explained it well, and I'm looking forward to being able to run OpenID on this blog. (Coming soon!) I don't know if it will be useful for any of my client sites, but it should be good for the blogosphere.
I was a bit disappointed with Ken Rickard's talk on Drupal in the Enterprise. I'd been hoping for something about how to scale Drupal to enterprise-levels, but it was more on how slow and conservative large businesses are to do anything.
After lunch, though, I got my turn. chx and I were presenting on PHP 5, which thanks to the GoPHP5 Project will be the minimum version for Drupal 7. The first half of the session was mostly me talking about how cool PHP 5 is, and chx talking about how dangerous it is. I thought it went well, although I was a bit disappointed in the turnout. We had been scheduled opposite Jeff Eaton's FAPI 3 talk, and there was just no way we could compete with lolcats. We seemed to get a good response, though. The high point was chx saying he was "mortally terrified" of objects, because of what a huge shift it would be for Drupal and how easy it would be to wreck Drupal completely if we did it wrong.
The second half of the two-part session was mostly discussion about how we need to be careful with objects. I had hoped to touch on questions like whether or not we want to use Exceptions, but without any core committers around that was difficult. Instead, we talked mostly about objects, and whether or not to use them and how to use them well. We ended without any firm ideas, other than the suggestion to try a limited implementation of objects in Drupal 7 and then, maybe, a wider implementation in Drupal 8. But where?
The final talk of the day for me was James again, this time talking about image handling in Drupal and how it still sucks. After a brief survey of the myriad ways that Drupal can handle images and files, and how none of them work together, he opened it up for discussion. I opened with the suggestion that files are not and should never be themselves nodes, but did need to be a similar first-class object along with nodes and users and such. A few others agreed, but several other people pointed out that first we needed some better use-cases and user stories to see what people actually wanted to do with files before we tried to come up with an implementation.
Victor Kane then mentioned that in the same room only an hour before, we'd been talking about objects and how we should try to implement them in one place first to get some experience. What about files? At that point Jeff Eaton and I just looked at each other with shared evil grins, because that made perfect sense. File handling is already lame and inflexible in Drupal; if we try to re-implement it using objects and do a crappy job of it, then they'll it will be no more lame and inflexible than it is now.
After the talks ended everyone mingled outside the conference center for a while trying to figure out where to have dinner. (Tip: Never ask a bunch of geeks where to go for food. In a group of 5 people you will get 7 suggestions, none of them strongly supported, and you'll eventually starve.) Eventually Wim Leers (my roommate) and I ended up going with chx to locate a bar with WiFi to do some bug fixing. Where we ended up was a small bar that served the usual bar food, had WiFi, and had tables large enough for about half a laptop. So instead we had 8 of us huddled around 3 tables with laptops in our laps, hacking away when the WiFi actually worked. The food was OK, if a bit pricey and not particularly Spanish (at least what I ordered), and pineapple juice makes a decent beverage when the waiter isn't spilling it on you. (Fortunately it wasn't on my laptop.)
Of note, we consisted of 6 MacBooks, 2 Kubuntu systems (chx and myself), and not a single Windows system. MacBooks made up the vast majority of the conference, I think, with ThinkPads of some sort a distant but clear second.
I also spent some of the night sketching out ideas for an object-based Data API for Files...
Day 2 was my day off, as I wasn't giving any presentations myself. The first talk of the day was Jeff Eaton talking about the Future of Nodes; that is, asking for input about the Future of Nodes. Early on Jeff asked if anyone was taking notes and I foolishly said I was, so of course he declared me the Official Keeper of the Notes(tm). Note to self: Keep mouth shut. Building on the image handling talk from the day before, I opened by suggesting that we need a definition of "node", so that we know what it is we're building. The somewhat-accepted definition that got used was that a node is "a collection of fields with properties". Whatever that means. As Jeff pointed out we currently have 3 mechanisms for constructing nodes (define your own, nodeapi, and CCK), all of which have different pros and cons.
Of course, the discussion also quickly veered into the mythical Data API again, with most agreeing that it would be better to have a unified first class data object Thingie (that was the accepted technical term) of which Node, User, etc. are cases-in-point than to make everything under the sun a node. I also suggested that CCK widgets needed to move out of CCK and become just generic form components, at which point CCK Team Karen Stevenson and Yves Chedmois noted that was already done for Drupal 6. And there was much rejoicing (yay!). Not surprisingly nothing was decided, but much was discussed and pondered.
Victor Kane had a presentation on Agile development that was late in starting due to lengthy technological problems in the main room (which seemed to happen throughout the conference; the smaller rooms worked far more reliably). I keep hearing about Agile and how it's so much better, and on paper it certainly sounds like it, but in my experience I always run into the same problem: If the client is allowed to speak after the implementation has started, they will always change some fundamental underlying assumption at least once a week up to and including on the day of launch. It's happened in every project I've worked on. There needs to be some middle ground where you design iteratively but still lock the client down to something that they're not allowed to change after a while; those building the site need ownership of the site while it's being built.
I also got my first real look at Panels 2, the latest brainchild of Earl Miles. Wim had shown me the stuff he's been doing with Panels 2 plugins earlier, but Earl's demo was just amazing. I wasn't a huge fan of Panels 1, I will confess, but Panels 2 looks like it will shake up the theming and layout world the same way Views redefined the logic and listing world. I sometimes wonder how someone as smart as Earl ended up with Drupal, but then remember just how strong the community is.
After lunch I skipped a few talks (sorry, folks) to talk to Jeff about the Files As Objects (FAO) concept. We tossed ideas back and forth for a while, when we weren't taking breaks to fawn over Earl's frighteningly cute baby, and fleshed out a few concepts. We finally stopped for the last talk to go see James Walker (again!) talking about SimpleXML. It was a good talk, and I think it got across to most people just how insanely bad XML handling is < PHP 5 and how nice it is >= PHP 5, although I'd have preferred more technical detail such as array vs. object properties in SimpleXML (which are a great demonstration of the ArrayAccess Interface of SPL).
After the usual milling about and debating about food, we finally hooked up with Earl for dinner. I have owed Earl Miles dinner since last year when he talked me through setting up a calendaring system using Views. I missed him in Sunnyvale, but finally managed to end up at a Tapas bar in the Gothic Quarter with the ofchaos family and numerous others, some of whom came by later. The food was good, as was the company, even when we weren't talking about Drupal. The prices were also good, which was nice since I was paying for three. :-)
Actually, it was rather dangerous after the show that day, as everyone with commit access to Drupal core was on the same tram at the same time. I shudder to think what would have happened if the tram had derailed...
Day three opened with my second talk, this time covering PDO and the new database abstraction system I'm building for Drupal 7. The moral of the story: There is no such thing as standard SQL. Sure there are published standards, but they don't exist in practice. Also of note, in a room of about 40 or so Drupal people specifically interested in database abstraction, not a single one used PostgreSQL primarily. They were, one and all, MySQL folks. Do non-MySQL databases even matter anymore, except to big and lazy corporations? Not really, it seems.
I wasn't quite sure how well it had gone until I was walking to Earl's Panels 2 API talk and someone commented to me that they were really excited about the new database API. I figure if I can get people excited about something as mundane as a database abstraction layer, I must be doing something right.
The Drupal Association Panel went over what the DA has been up to for the past year, as well as what its members want to do in the coming year. That included comments from several people that amounted to "get me off this board", as soon as others could be found to take over. This was another session that was mostly discussion/Q&A, and I found myself somewhat drafted to do general Open Source coordination stuff for the Association, time permitting. Angie seems to think that after GoPHP5 I would somehow be good at it. Silly person. :-)
The afternoon began with Barry Jaspan talking about the Schema API in Drupal 6. Long story short, so far it just makes installation simpler and easier, and benefits mostly non-MySQL users that rarely had proper install queries setup by module developers. In Drupal 7, with some more features added, it should make dynamic queries a lot more possible and eliminate sizeable chunks of the Views API. Spiffy.
Originally I was going to go to the session on building a booking system using Drupal, since I've had to build several calendaring systems recently, but unfortunately it was canceled due to the speaker being ill. Instead, I arranged a BoF session with Jeff Eaton, Karen Stevenson, Yves Chedmois, Barry Jaspan, and chx to talk about the FAO (Files As Objects) API and how it could dovetail into a universal Data API. We didn't solve many problems but we did find more to solve, which at this stage is what we should be doing. I also went to a BoF with Barry on site staging and replication. Various ideas were tossed about. Whether or not any of them will result in code remains to be seen.
Given that it was the last big night out we'd be able to have, Wim and I decided to hook up with party animal Morten.dk and his crowd. This turned out to be a particularly, er, interesting idea; the night began at, of all places, an Irish Pub. In Barcelona. Across the street from the Sagrada Familia cathedral. No, I don't get it either. From there we split up with plans to meet later at a restaurant that Morten recommended. Of course, upon arrival we discovered that the restaurant was, in fact, a furniture store.
After nearly giving up and finding somewhere else, we ran into Morten and another large crowd he'd dragged along. We wandered around a bit more until we found a tapas restaurant that didn't have English on its menu and therefore must be good. It also turned out to be rather expensive, but we fortunately had someone with us who spoke fairly good Spanish (from Kentucky) and was able to arrange a multi-course house-special that was quite good. From there Morten took us on a quest for a new bar to hang out in. Of course, his sense of direction was less than perfect so we ended up going in circles in the Gothic Quarter for a while. I think we qualified as "steps from Las Ramblas", but you wouldn't know it if you weren't a local. Finally we ended up at a small bar that quickly cleared out when we arrived (not what it sounds; the local gaggle of girls left and their hangers on went with them). After some quick wall climbing (don't ask) and a walk down to the pier, Wim and I split off and headed home.
The Bonus Day began with a happy birthday sing-along for Earl (Happy Birthday, merlin!), followed by a nice speech by the Mayor of Cornella, the town where the actual conference center was. Dries' State of the CMS talk started with a summary of his survey from the past month (I'm still waiting for a posting of the full results!), but turned into a gauntlet thrown down for what still needs to be done before Drupal can achieve total world domination. Dries, we're working on it!
What was particularly interesting to me was that "support for more database backends" came way down on the list of requested features in the survey, yet Dries still felt it was important. To be fair, the survey respondents were a rather self-selecting group (current Drupal users interested enough in Drupal to answer a survey about it), but it still seems that there are about 10 people who care about PostgreSQL, 5 who care about Oracle, and the rest don't care about anything but MySQL. Just how important is multi-database support anyway, especially when MySQL 5.x already has most of the high-end features (ACID, replication, stored procedures, SQL views, etc.) people were asking for. Besides, it's not like we can use any of them as long as we still support MySQL MyISAM tables, which is the most widely used database configuration in Drupal by, I suspect, an order of magnitude (with MySQL InnoDB tables a distant second).
Because I think XUL would be really cool to get into, I attended the "From HTML to XUL" talk. Unfortunately it was from an ActiveState employee and didn't tell me all that much about XUL that I didn't already know, except that Mozilla itself seems to be against its use for anything other than Firefox. sigh. Later in the day I also went to one of the various presentations on Drupal as an application platform, but it was also a bit disappointing as it was far more high-level than I was hoping for. Give me code!
Ken Rickard had arranged a workgroup session with Earl and I, but unfortunately Earl couldn't make it. In short, all three of us have "chunk of rendered content" modules (Component, Panels, and MySite) and it would really be nice if we didn't have 3 separate workflows and backends for them. The "workgroup" essentially meant we talked for 10 minutes then threw it out for discussion, which quickly veered back to the "render API" topic again. That is the Drupal Way: When in doubt, make an API. :-)
Karen and Yves had a rather informal State of CCK presentation, which boiled down to "half of CCK is gone now because Drupal 6 is so much spiffier, and the other half should be a lot cleaner, or will be once we're done writing it". I think the whole room was drooling.
They were also drooling over Earl's Theming in Drupal 6 talk. He even used slides, which was more impressive than the code. :-) The new API is slick, though, and I'm happy to have helped out with it in even a small way. He also called for someone to try and organize a theming standards group, and Morten made the mistake of volunteering. I also volunteered some of my coworkers, since they weren't there to object. Hopefully something can come of that, too.
After the show was over and the "so, same time next year at your place?" business was taken care of, Wim and I headed down to Las Ramblas one last time for dinner with Konstantin Kaefer. (Fortunately we thought to drop our laptops off at the hotel first for a change.) Once again we took forever deciding on a place to eat, and I learned the hard way that in Spain they don't fully de-bone the salmon. How uncivilized!
They say that "May you live in interesting times" is a curse. If that's true, then the entire Drupal community is doubly cursed because these times are interesting indeed. Expect more on Data API, database APIs, and Drupal World Domination in the next few months. Until then, Happy Coding!