Sep 23 2015
Sep 23
[embedded content]

At DrupalCon Barcelona this year I presented with Dick Olsson outlining a plan for CRAP (Create Read Archive Purge) and revisions (on all content entities) in core.

Phase 0

For Drupal 8.0.0
Enable revisions by default (https://www.drupal.org/node/2490136) on content types in the standard install profile and when creating new content types.

Phase 1

For Drupal 8.1.0

  • Improve the Revisions API performance, some of this will come from moving elements from the multiversion module into the entity API.
  • Enable revisions by default for all content entity types. So not just nodes anymore but blocks, comments, taxonomy terms etc.
  • Introduce a revision hash, parents and tree. Each revision needs to have a parent so you know where it’s come from, each parent can have multiple child revisions.
  • Data migration - Moving all 8.0.0 sites to 8.1.0 will mean moving their data to the new revision system.

Phase 2

For Drupal 8.2.0

  • Remove the ability to not have revisions. To simplify the API and the data stored it makes sense to remove the ability to disable revisions. This will allow us to remove all the conditional code around if an entity has a revision or not.
  • Delete is a new flagged revision. When deleting an entity a new revision will be created and this revision will be flagged as deleted. This is the archive element of the CRAP workflow.
  • Introduce purge functionality. There may be times when an entity needs to be completely deleted.
  • Commit trash module to core. Trash is just a UI for the delete flag. It displays all entities marked as deleted. It then allows these to be restored by creating a new revision not flagged deleted, or purged by removing the entity.

Simple right?

Please enable JavaScript to view the comments powered by Disqus.

blog comments powered by
May 14 2015
May 14

My colleague Adam Juran and I just finished with our session, Zero to MVP in 40 minutes: Coder and Themer Get Rich Quick in Silicon Valley, at DrupalCon LA. This one was a real journey to prepare, and through it we learned a lot of dirty truths about Drupal 8, Javascript frameworks, and the use cases where the two make sense together.

The live coding challenge in our session proposal seemed simple: create a web application that ingests content from an external API, performs content management tasks (data modelling, relationships, etc.) through the Drupal 8 interface, and deliver it all to an AngularJS front-end. This is exactly the “headless Drupal” stuff that everyone has been so excited about for the last year, so doing it in a 40 minute head-to-head code battle seemed like an entertaining session.

Ingesting content from an external API

The first hard truth we discovered was the limitations of the still-nascent Drupal 8. Every monthly release of a new Drupal 8 beta includes a series of “change records,” defining all the system-wide changes that will have to be accounted for everywhere else. For example, one change record notes that a variable we often use in Drupal forms is now a different kind of object. This change breaks every single form, everywhere in Drupal.

The frequency of this kind of change record is a problem for anyone who tries to maintain a contributed module. No one can keep up with their code breaking every month, so most don’t. The module works when they publish it as “stable”, but two or three months later, it’s fundamentally broken. changes like this currently happen 10-15 times every month. Any module we were hoping to use as a part of this requirement – Twitter, Oauth, Facebook – were broken when we started testing.

We finally settled on using Drupal’s robust Migrate module to bring in external content. After all, Drupal 7 Migrate can import content from almost any format! Turns out that this isn’t the case with Drupal 8 core’s Migrate module. It’s limited to the basic framework you need for all migrations. Importers for various file types and sources simply haven’t been written yet.

No matter which direction we turned, we were faced with the fact that Drupal 8 needed work to perform the first requirement in our challenge. We chose to create a CSV Source plugin ourselves (with much help from mikeryan and chx) just to be able to meet this requirement. This was not something we could show in the presentation; it was only a prerequisite. Phew!

Displaying it All in Angular

Building an AngularJS based front end for this presentation involved making decisions about architecture, which ended up as the critical focus of our talk. AngularJS is a complete framework, which normally handles the entire application: data ingestion, manipulation, and display. Why would you stick Drupal in there? And what would an Angular application look like architecturally, with Drupal 8 inside?

You always have a choice of what to do and where to do it. Either system can ingest data, and either system can do data manipulation. Your decision should be based on which tool does each job the best, in your particular use case: a catch-all phrase that includes factors like scalability and depth of functionality, but also subtler elements like the expertise of your team. If you have a shop full of AngularJS people and a simple use case, you should probably build the entire app in Angular!

Given that perspective, Drupal really stands out as a data ingestion and processing engine. Even when you have to write a new Migration source plugin, the Entity model, Drupal’s “plug-ability”, and Views make data crunching extremely easy. This is a strong contrast to data work in Angular, where you have to write everything from scratch.

We feel that the best combination of Drupal and Angular is with Drupal ingesting content, manipulating it, and spitting it out in a ready-to-go format for AngularJS to consume. This limits the Angular application to its strengths: layout, with data from a REST back-end, and only simple logic.

The Session

[embedded content]

In the session, we talked a bit about the larger concepts involved, and moved fairly quickly into the technical demonstration. First, Adam demonstrated the flexibility of the decoupled front-end, using bower libraries to build an attractive layout without writing a single line of custom CSS.  Then I demonstrated importing data from CSV sources into Drupal 8, along with the simplicity of configuring Drupal Views to output JSON. Taken together, the videos are 37 minutes long – not bad for a totally custom RESTful endpoint and a nice looking front-end!

Here is Adam’s screencast, showing off the power of the bootstrap-material-design library to build a good looking site without any custom CSS at all:

Here is my screencast, demonstrating how easy it is to create Migrate module importers and REST exports in Drupal 8.

And here is the final screencast, quickly showing the changes we made in AngularJS to have it call the two Drupal Services.

Want to learn of Forum One’s Drupal development secrets? Check out our other Drupalcon blog posts, or visit our booth (#107) and talk with our tech wizards in person!

Previous Post

DrupalCon LA Day 1!

Next Post

Hacking the Feds: Forum One Among the Winners at GSA Hack-a-Thon

Oct 21 2014
Oct 21
img_20141001_152214-smile_0.jpg

Some weeks ago (29th Sept - 3rd Oct) Cocomore attended the European DrupalCon in Amsterdam with five colleagues: penyaskito (Christian López), kfritsche (Karl Fritsche), jsbalsera (Jesús Sánchez), LoMo (Lowell Montgomery) and Carsten Müller where there, and we also attended to the extended sprints before and after the Con. The numbers of this Drupalcon are impressive: more than 2300 attendees from over 64 countries. There were more than 100 sessions so, either if you came or not, you will find the link to all the DrupalCon Amsterdam sessions handful!

Diary

Saturday - Getting there

On Saturday we travelled to Amsterdam. It’s like always an exciting day, looking forward to see again not only friends from the community and new people to know, but also being able to reunite again coworkers who live almost 2000 kms away. And when you get into the airport you start recognizing people from other events, or only because we all wear Drupal t-shirts!

Sunday - Extended Sprints

The extended Sprints were hosted at Berlage Meet & Workspace, an amazing place just near to the Centre Station. There was plenty of space there to sit and help working in Drupal 8 core. As always is great to work with all the people from the community.

Monday - Sprints and Community Summit

On Monday the Sprints moved to the conference venue, Amsterdam RAI. The place there was even bigger for all the sprinting people (around 180 sprinters) and you could see people working not only in Drupal Core but also in important projects like Drupal Commerce or Drush. Karl joined the Community Summit and participate in the group about training experiences.

Tuesday - Start of Sessions

There were 120 sessions this year. so it was a really hard decision to choose between them. You can access to the complete program including links to the recorded videos at the DrupalCon Amsterdam website. The Opening Session, or prenote, was mostly a history of DrupalCon told by people which lives were changed there. Some histories were fun and some others were beautiful, but there were time to include some jokes and fun parts with a curious recreation of some events. Then came the Keynote by Dries Buytaert, and the Drupal 8 Beta One was announced! The keynote was a discussion about how to make the Drupal project development sustainable, by making the contribution more attractive to people and organizations. After that the traditional Group Photo was taken.

As you can see, tons of people :-)

15399906982_2ee1d506c1_o_0.jpg

Wednesday

On Wednesday the beta was finally released, so everyone could just download and install it, and make all the needed testing. This day’s Keynote was delivered by Cory Doctorow, science fiction writer and the co-editor of Boing Boing, among other achievements. You can access to the Wednesday schedule and access to all the sessions descriptions and videos. But this day was also strange, because all the Spanish community, with ours Christian and Jesús among them, looked really agitated. As we knew the day after they were invited to assist to a secret meeting by the Drupal Association, because the city selected to held the next DrupalCon was Barcelona, and they should know in advance.

Thursday

On Thursday there wasn’t a Keynote, but instead a number of small but interesting Drupal Lightning Talks. We want to remark the Console module, based in the Symfony Console Component: a CLI tool that helps creating new modules, controllers, etc automatically. And the #D8in8 initiative looks like a great way to involve a company into learning and contributing in Drupal 8. Lowell made a awesome job summarizing the Q&A with Dries that we can only recommend you to read, although you can also hear the audio. Again, the schedule is available online with links to the sessions descriptions and videos. At the end there was the Closing session, where they talked about future events like DrupalCon Bogotá and DrupalCon Barcelona was unveiled. That same night we assisted to the Trivia Night, hosted by the Irish group. It was tons of fun, but really hard. Our team was named 1396891800, because the timestamp when Heartbleed was announced, and thanks to Christian we won the prize to the best handwriting!

Friday - Mentored Core Sprints

Fridays was all about sprinting. Karl and Christian worked as mentors helping people, and Carsten, Jesús and Lowell were sprinting.

Saturday - Extended Sprints

On Saturday we went back to Berlage Meet & Workspace, so we were sprinting again.

Sunday - Goodbye Amsterdam

At the end all the good things have to end, and we had to get into the airport and travel back to our respective cities, Christian and Jesús travelling to Sevilla and Carsten, Karl and Lowell to Frankfurt. It was a really great DrupalCon, but we expect Barcelona to be even better!

Sessions

We attended to a bunch of a great collection of sessions, so we want to recommend some of them that we found really interesting:

What's next?

DrupalCamp Berlin

There is the DrupalCamp Berlin happening at the 15th and 16th of November in our capital. We are looking forward to meet you there again.

DrupalCon in Barcelona!

The next european DrupalCon will happen in Barcelona. We are happy about the decision made by the Drupal Association and we are looking forward to see you all again next year in the sunny city of Barcelona!

Thanks!

So it was a great DrupalCon. We can only say thank you to the organizers, the mentors, the local group and all the outstanding people that are part of this amazing community. We are proud to be part of it. img-20140928-wa0001_0.jpg
Jun 01 2014
Jun 01

The community in the North… is quite hospitable and the Camp in the North was fantastic :)

:)


Drupal Camp Yorkshire 2014

Drupal Camp Yorkshire 2014

Back at Drupal Camp London Paul Driver invited me to Drupal Camp Yorkshire to deliver a session at the Camp. Drupal Camp Yorkshire 2014 was the 2nd Camp up in Leeds I am told, but from the experience I had for the short while I was there it could have been the 10th… it was  very well organised camp no doubt and next time round I will have to make sure I juggle my diary to be able to stay for the entire weekend.

Its been 6 or 7 years since I have been up to Leeds, driven past many a times but did not have an excuse to stop over, Drupal Camp is probably up there in the top 5 excuses to stop over or visit… but before I jump into the details I must mention another community who like myself had taken the Saturday off to take part in a very different but essential sort of activism.

2014-05-31 13.46.51

2014-05-31 13.46.51

On the train up to Leeds I met with a couple of ladies heading up from London, volunteers who were much like our own community giving up their Saturdays to give back.

Did’nt quite catch their names but they were activists heading up to Newark to give them folks from UKIP a hard time and to help the community there see UKIP  true ‘far right’  colours. I would like to thank folks like them who keep Britain grounded and heading in the right direction, giving geeks like me and others the ‘space’ to build, focus on and be part of other communities that rely on a certain kind of society to keep looking ahead and progressing in the right direction… probably not as eloquently put as I could.. but I am going to blame the beautiful sunny Sunday that it is right now!

Ok, back on topic, My session was on ‘Practical’ Agile product development and you can watch the video below to understand what I mean by that.

[embedded content] You can view/download the slides from Slideshare.com.

Lastly I must mention the venue, Electric Press at the Carriageworks Theatre in Leeds was by far the most picturesque of Drupal Camp venues I have have been to so far, over looking the Millenium square which given the weather was bursting with life and an open air concert set the scene up for a community event quite well.

Excellent job done by the organisers, a huge thank you to everyone who attended my session and apologies to a few friends I could not see or spend time with… for I dashed in and dashed out but will make it up to them at the next Camp or at the Con in Dam.

“Communication leads to community, that is, to understanding, intimacy and mutual valuing.”
Rollo May

Sep 30 2013
Sep 30
We were at DrupalCon Prague 2013.

Last week (23.-27.09.) Cocomore attended the European DrupalCon in Prague with three colleagues penyaskito (Christian López Espínola), jsbalsera (Jesús Sánchez Balsera) and kfritsche (Karl Fritsche). We also attended the extended sprints before and after the Con to contribute to Drupal 8 Core.

Like on all the other Cons there were a lot of interesting sessions, BoFs and discussions with other Drupalists. If you couldn't make it to the DrupalCon you can watch most of the session records at the YouTube channel from the Drupal Association.

group picture by @schnitzel

Extended Sprints

The extended sprints were at the Hub Praha the weekend before and after the Con, which was located some tram stops away from the conference center. Everybody had enough space here to help working on Drupal 8 core. The hub had three conference rooms for the "Hard Problems" discussions. We used our experience with Drupal to help the Drupal 8 Multilingual Initiatives (D8MI) to make Drupal 8 the best multilingual CMS! Also all the other core initiatives and core committers attended these sprints, so patches could be committed fast. It is always a pleasure and a good experience to work with all the people from the community.

Sprinting in the Hub Praha - Karl, Jesús, Christian

Sessions

The Con was located in the conference center in Prague next to the Vyšehrad. From here you had a good view over Prague, while contributing to Drupal 8 in the Coder Lounge. So at least everybody had something from the beautiful town of Prague.

Coder Lounge.jpg

It was hard to pick a sessions with nine parallel tracks (115 all in all). You can read the complete program including links to the recorded videos at the DrupalCon Prague website. I strongly recommend the keynotes from Dries about "State of Drupal" and Aral Balkan about "Experience Driven OpenSource". In advance I recommend the following sessions:

  • From Not-Invented-Here to Proudly-Found-Elsewhere: A Drupal 8 Story from Alex Pott (D8 Core Committer) about the possibilities and advantages from moving to already existing frameworks.
  • Standardization, the Symfony way from Fabien Potencier (Project-Lead Symfony) about the philosophy and concepts of Symfony.
  • Translation Management from Michael Schmid and Christophe Galli (Maintainer TMGMT) about the Translation Management Module. It was amazing to see what they did in the last two years and that they are already working on a Drupal 8 version. A must see if you have to translate a lot of nodes.
  • There were more good sessions but I tried to keep this short.

Outside the sessions

In the Coder Lounge next to the session rooms you had the time to contribute and test on Drupal 8. There were always a lot of people there so you could get help quickly. I think some of them have never seen a single session. Also the hard problems discussions were continued there.

by Gábor Hojtsy - "Busy in field translation/language discussion to make field DX better than D7. Fields/entity and multilingual! #d8mi"

In the day you had the sessions and at the night we went to the 24th floor of the Corinthia Hotel to continue sprinting with others all night, which led to a high shortfall of sleep but was really funny. For the dinner there was a nice social event "Cheap Frosty Beverages & A Killer View" in a beer garden in Prague, for all who found it. On Thursday the last day of the all the sessions the Drupal Trivia took place in the Hilton Hotel. It was a big fun and the team "Create Table" (Nathan Haug, Jen Lampton, Florian Weber, Vijaya Chandran Mani, Tobias Stöckler, Karl Fritsche) won in a three team tie against "Breaking Head" with Gabor Hojtsy and Cathy Theys and Acon Armada.

For everybody who wanted to contribute on Core but never did, there was an introduction to all community tools on Friday and 50 volunteer mentors (amongst others Karl Fritsche) to help everybody to get more contributors. This is a good example to see how helpful and welcoming the Drupal community is. A big thanks to Cathy Theys (YesCT) to organize this event in Prague.

Another good example how amazing the Drupal community is happened this week too. In under 24 hours yched's project on DrupalFund.us reached its goal. Now he can contribute to Fields API more powerful. Congratulations!

Next Drupal Events

It was a nice DrupalCon. Thanks to all organizers, sponsors and volunteers who made this happen. I'm excited about the next events, even if I now have to make up a lot of sleep.

next_0.jpg
Sep 07 2012
Sep 07

Drupal 8 Multilingual Initiative Code Sprint weekend

I took a train from Frankfurt (Germany) down to Munich the Saturday before the DrupalCon. When I joined the Multilingual Sprint on Sunday morning, many of them had already been sprinting for a full day and a number of issues were ready for review, so I dived in, observing the behavior of Drupal 8 before and after applying patches, proof-reading the patches for anything odd (e.g. typos in the documentation), discussing the issues in comments and in IRC with people who were sitting just across the room (other times actually speaking in person). By the end of the day, instead of the dozen or so people that Gábor Hojtsy, the Multilingual Initiative team lead, had expected, there were close to 50 people at the location, some joining us in the work on Multilingual issues, some working on other Drupal 8 tasks, and some who were just arriving in Munich and followed the Tweets to where we were. Luckily, the location rented for the Saturdays and Sundays before and after the DrupalCon week was big enough to accommodate all the extra arrivals.

While on the topic of the venue we used for those weekends, I’d like to personally thank Stephan Luckow and Florian (“Floh”) Klare of the Drupal-Initiative e.V. for all that they did to find a nice place that would still leave us with a budget for food and for their valiant work on stretching the food budget while still serving up excellent fare, in keeping with the fantastic meals we enjoyed the rest of the week. Instead of ordering delivery, they prepared almost everything themselves, including beautiful open-face sandwiches, fruit platters, and lovely grilled specialties at a club we went to where you can barbecue in the Biergarten.

…thanks for the huge help to the local organizers, especially Florian Klare and Stephan Luckow. They helped us manage collecting and spending sponsor money wisely with the Drupal Initiative e.V, prepared great sandwiches and fruit plates for us and even organized a sprinter party night with grill food. It was amazing to work with such helpful and flexible local organizers.
Gábor Hojtsy, September 5, 2012

Luckow and SirFiChi of the Drupal Initiative, organized the location and made us great food!

Since people were “fresh”, I think a lot of work got done on the first weekend and the Monday before the conference (more than 50 people joined us and worked on various core initiatives on Monday in the room we later used for core most conversations at the Sheraton), which also meant that issues were still fresh in our minds while we had days of sessions and conversations, so when we started sprinting again on Friday we had lots of new ideas for the tasks we were still working on. Friday’s sprints were at the Westin Grand, where there was great attendance both upstairs in the main room as well as a large room downstairs from it, where Drupalize.me hosted a core contribution workshop to ease people into the process of contributing to core. I decided to go to that workshop since I’m still pretty new to it all and found a few people sitting nearby who were I was also able to interest in some Multilingual tasks, so while the main group sprinted upstairs, we also worked downstairs. Later on, I came upstairs, and since there were not a lot of simpler tasks for “core newbies”, like myself, I took some time to sprint on a module I contributed some time back, before there was much of anything for Drupal 7 in the area of “multilingual”… and tried to make my module more multilingual-friendly. I got a few good commits and a new release out for Internal Links and also recruited a colleague to look at the code with me, provide some ideas, and become another maintainer. So I personally found Friday quite productive.

*/ First off, a sprint on this scale would not be possible without sponsors and significant on-site help. DrupalCon provided us with space on Monday and Friday, and some great food on Friday. The rest of the days would not have been doable without comm-press, dotProjects.be, Open8.se, OSINet and Acquia. The [ … ] financial sponsorships they provided paid for our weekend venue [ … ].

I continued sprinting with the Multilingual initiative at the Film Coop Saturday and Sunday, leaving mid-afternoon on Sunday to get back to the train station. When I left the other sprinters, Webchick was only finally getting some rest after her trip home and we had about 20 issues that were marked “RTBC”. In all, there were dozens of issues tackled over the weekend. For a complete overview of all the issues we made progress on, see Gábor’s post about the sprints, where you can also check out his excellent DrupalCon core conversation presentation, “Drupal 8’s Multilingual Wonderland”. There is still a lot to do in the time between now and the “feature freeze” deadline, but we made good progress in the DrupalCon sprints, so hopefully we can push on and get the rest of the critical tasks done in the time remaining.

One of the less trivial tasks I took on during the final sprint weekend was documenting the new language_select field type, which involved checking out the Drupal API (documentation) project, updating the Form API table to include a new Element column (language_select) and Property row (#languages), as well as information about these (below the table) and linking them in all the appropriate places. Currently, updating this page is a bit of a pain, but hopefully we will move to a better system for maintaining this information, perhaps even automated generation. While I’d worked on other Drupal documentation pages before, this was the first time I’d actually contributed patches to update the API, so it was a good learning experience.

If you’d like to help out with the Multilingual initiative or other core contribution, you might first want to take a look at the Drupal 8 Initiatives page, where announcements about coming IRC meeting can be seen. This page also has links to the news, roadmaps, filtered issues, and other pertinent information. Drupalladder.org is also a great place to go for lessons to help you work through the steps of being ready to contribute to Drupal core.

I look forward to seeing you all in IRC and in coming code sprints.

Sep 07 2012
Sep 07

I started writing this post at the DrupalCon and then continued work on it on the train back home after a long week, last Sunday after the code sprints—even now, more than a week later (after being ill for a week—I think I was burning the candle at both ends for a bit too long), it’s hard to believe that it’s finally over. I arrived the weekend before to participate in the pre-con code sprints and stayed for the Friday–Sunday after the conference to continue that effort. I’ll write about the sprints in another post. This one will cover the highlights of the actual DrupalCon, what I think worked well, and recommendations for those attending their first DrupalCon; with two new continents getting a ’con this year, I think there will be more than a few at their first.

The food at DrupalCon Munich was great

For me, one of the major highlights of this conference was the outstanding food quality. It was so good I was distracted enough I never pulled out my camera to take photos of i, but it was attractive, gourmet, and delicious and there was something for everyone, even a fantastic salad buffet as well as more desserts than anyone could try… and hot dishes with plenty of options for both vegetarians and omnivores, alike. In the closing plenary, it was revealed that the catering costs for the event were about €352,000 for the 1800+ of us in attendance; not surprising for the quality and abundant variety of fare they served us. Food service tables were put in place in all areas of the conference so that there was no crowding into one area and the same dishes were provided at both the Sheraton and the Westin Grand, which were a few minutes’ walk away from each other. The conference occupied the three conference center floors of the Westin Grand and a few smaller rooms in the Sheraton, which were primarily “core conversations”. One might think I would gorge myself, but most days I had simple salad items, walnuts, and seeds… and gave myself a break before finishing with some fresh fruit and a light mousse from the dessert buffet. Despite the fact that the days were hot and many of the rooms weren’t well conditioned, people were alert and in good spirits and I think the food had more than a bit to do with that.

To continue a moment in the vein of “food”, since I really do think it was notable at this DrupalCon, I hope this reflects some new recognition of the importance of good sustenance when organizing a successful event like this. And I hope that future Drupal events will also place emphasis on food quality. That said, I also think that the community would pull together if we had commercial kitchen space and quality ingredients—we could prepare similar gourmet meals without quite the budget we used for catering at this conference; on the other hand, such a model might work better at one of the large DrupalCamps (a few hundred attendees) than at a huge (North American or European) DrupalCon. Of course preparing our own food would provide another place for people to connect (food preparation and more volunteer service), which I think would offset the downsides (not being able to be someplace else whenever you have “kitchen duty”).

The Venue

munich_olympic-park.jpg

Munich is a beautiful city I’d never really visited before the DrupalCon. Public transportation was not too expensive, but I got to see a bit more of Munich by walking almost everywhere, so my walks back from the pre-conference sprints and out to dinner (beer) in the evening were mostly through parks where I got to see the huge Olympics installation and unusual sights like Munich’s famous river surfing.

Surfers have a man-made wave on the Eichbach

Sessions and participation

Choosing sessions

This was my second time attending a DrupalCon and I decided I wanted to primarily attend the “core conversations” track (with a few exceptions). For those who don’t know, the “core conversations” sessions are where plans for the future of Drupal are presented, discussed, and refined. It’s truly an amazing experience to sit in a room with dozens of top-notch developers as they hash out the architecture for new Drupal features or present the innovations they have already completed. Of course participating in the Drupal 8 (Multilingual initiative) sprints in Barcelona (a couple months ago) and before and after the DrupalCon session days probably also spurred my interest in the areas being covered by other initiatives, but it is definitely an interesting track if you are not sure what to attend. In the past, core conversations were often not fully recorded, another reason I chose to attend this track, but it looks like you can view most core conversations pretty well now, online. If you missed them and are interested in the future of Drupal (i.e. Drupal 8), there are many that you might want to watch.

Volunteering

Another first for me was helping the DrupalCon staff as a volunteer, mostly monitoring the rooms I was in and taking a head-count in mid-session. Other activities of a room monitor included being a bit early and making sure the speakers had everything they needed; I got to loan out a display adapter for one session and was prepared with multiple power adapters if anyone happened to be missing a way to plug in—we also tried to make sure that questions were recorded in session audio (either by having those with questions come to a microphone or the speaker repeating the question). I found volunteering rewarding and I thank Adam Hill, the DrupalCon Munich volunteer coordinator, for being a great guy to work with.

DrupalCon Munich Volunteers

Drupal 8 will be great!

Angie Byron’s current overview of Drupal 8 (aka “”) had not changed a lot since I last saw her similar presentation at the “Developer Days” in Barcelona a couple of months earlier, but it filled the largest session room, so there may have been close to 1,000 in attendance. Some features are more polished, some of the features are not yet written, but are better conceptualized than they were a couple of months ago, but the general ideas are mostly the same so in a presentation providing an overview of Drupal 8, while much has changed, it wasn’t much that affected the presentation. I’ve take the liberty to add a few specifics which were actually covered in separate sessions (sessions which covered each core initiative, for example), just for the sake of brevity and consolidation of information.

Webchick presents an overview of Drupal 8 features and initiatives

One key point that was made by all Drupal 8 core initiative leads is that we are only 3 months away from “Feature freeze” for Drupal 8 (December 1st, 2012), so it’s time to pitch in and try to help get all the great planned features into Drupal 8. All of the major initiatives need help and have areas where they are behind schedule as far as being ready for the freeze deadline with all the features the community would like to have in core.

Key Drupal 8 initiatives and components

- This finally ends the problem of having an evolving set of configuration on the development/staging sites which needs to be moved to production… but can’t be since the configuration (in Drupal 6 and 7) tends to be all over the place. Having a set of YAML documents stored in your sites “files” directory is a good way to manage and deploy common patterns to multiple sites, update configuration on production sites, etc. And it gets around the issue that pushing a database update from a development/staging server to production might overwrite actual content. So we now have a working configuration management system based on YAML files and a developers’ API, but no user interface for adjusting configurations; the UI still needs to be written. We also need ways to determine if configuration has been changed on the production server, have a range of multilingual configuration issues to still resolve, and performance issues, among other outstanding tasks. Join the #drupal-cmi IRC channel during the CMI meeting times and work on the issue queue if you want to help get the CMI full-featured for Drupal 8. Most active work is in the CMI sandbox repository.

deals with helping sort out inconsistencies and inflexibility in the core blocks functionality. It’s been described as, “Like panels in core, only better”… well at least that’s the goal. Everything on a page has context and is a block or layout/nested layout. Since blocks are rendered independently, caching is well-supported. A responsive layout designer from Spark can allow you to figure out your layouts for different screen sizes without a ton of divs complicating their HTML. If you would like to help with improving Drupal 8 layouts, there are office hours every Friday in Drupal IRC in the #drupal-scotch channel and you can read more about their current issues by looking at the “sandbox” project for the Drupal 8 Blocks and Layouts Everywhere initiative (it is not yet in the 8.x master branch of Drupal).

features will be in core and better than ever before. Interface translation, content translation, base language functionality and language configuration are all being greatly simplified so that it can all be in core with a nice, normal workflow. A lot of the real “pain points” with multilingual sites (or even simply non-English ones) have already been addressed and there is a ton that’s been done, but there is still a lot more to complete in the next three months if we want to really consider this a success. A lot of great progress was made during the code sprints before and after the conference. If you would like to help improve the Multilingual workflow in Drupal 8, there are lots of ways for anyone new to Drupal core development to still pitch in. There many open issues and many ways to move them forward without even writing a single patch. The best place to find active issues is probably to look at Gábor Hojtsy’s “focus issues” list. You can join the Drupal Multilingual initiative meetings in IRC (#drupal-i18n). See the meeting schedule on the main Drupal 8 initiatives’ help page.

is one of the biggest initiatives in terms of importance to Drupal 8’s success… ensuring that a site is responsive to the display size and has toolbars which nicely resize for device type is one of the major aspects of this work. We need good front-end performance for running on smaller, lower-powered devices; we need good, solid, clean, uncomplicated HTML5 code, and we need to be able to support easily using Drupal as a back-end for native mobile apps, purely responsive web design, web apps, or anything in between. There are some big parts of this which are not far along yet, so this is a great place for front-end developers and others interested in Drupal 8 mobile experience to get involved. One current obstacle to the Mobile initiative achieving its goals is greater completion of the Web Services initiative (WSCCI) also achieving its goals. Otherwise, John Albin Wilkins, the Mobile initiative project lead indicated two other areas which need a lot of work: front-end performance and the Drupal 8 mobile admin interface, likely designed with Spark’s Responsive Layout Builder. There are regular meetings on IRC (see meeting schedule on the mobile initiative’s official Drupal Groups page) and the Drupal 8 issue queue has a tag for "mobile" so it’s easy to jump in and help make mobile support rock in Drupal 8. You don’t need to be a rocket scientist to help move the issue queue along. As Dries and others have indicated, this might be the primary initiative for determining Drupal’s future success, given current trends.

: One of the highlights of DrupalCon Munich sessions certainly had to be Angie Byron and the Spark team’s presentation of all the awesomeness that comes from the Spark-distribution modules. Spark is only still in “alpha”, but you can already tell how amazing the features are. The idea is that while they design the perfect authoring experience for Drupal 8, the community can use, test, and help to refine the new functionality (in Drupal 7 via the Spark distribution) so that the feature-set will be well-tested and as awesome as possible when Drupal 8 is launched. Spark allows you to simply edit content, in-place (via the Aloha editor used by the Edit module) and also has a number of nice tools for designing responsive layouts, and has a tool palette which pulls out from the side and responsively adapts to the device. The goal is for the editor system to output only clean code without a mess of ugly divs and inline styling… and the editor is already living up to most of that promise. Words don’t really do Spark justice, so rather than take my word, you can try the demo. Note: Since anyone can make changes to the demo site that might be a bit weird, if things are really messed up, you can check back later. And of course reviewing patches in the Spark issue queue and creating new issues, where applicable, can help smooth the way to getting the envisioned “perfect” content authoring experience into Drupal 8.x core.

The Aquia Spark team prepare their presentation at DrupalCon Munich.

: Theming/Templating improvements in Drupal 8 include the use of Twig, a templating system also designed by Fabien Potencier of Symfony. It eliminates PHP from the theming layer for simpler code and removal of many security threats. The work on Twig does figure heavily into some of the initiatives, but is not an official core initiative on its own. Work is being done in a Twig sandbox led by Andreas Sahle of Wunderkraut. If you are interested in helping build this up, you can check out this sandbox and assist with the issues.

: Drupal 7 was released in January 2011, but it took over a year before there were enough of the important contrib modules ready enough for it that Drupal 6 was finally surpassed (in terms of numbers of Drupal 7 installations). Getting Views into core will hopefully help boost the uptake of Drupal 8 use as soon as it’s released. This will be a lot of work and there is a fund to help pay for development time. A lot of Drupal 8 Views features actually already work. Major parts of cTools are now in core. There is a funding request for getting Views into core (I threw 10 € into the donation box at the DrupalCamp in Barcelona), and the more we can donate, the more the Views team can allocate paid developer time to ensure that Drupal has a nice version of Views available when it ships. Of course you can also help with the Views for Drupal 8.x issues.

in core (only better). There is still a lot to do, but the idea is that the site can take any kind of request and send appropriate responses without a lot of headache. A lot of Symfony components being brought into Drupal are especially important here. Symfony integration helps bridge a gap between ours and the also-dynamic PHP-based developer community around Symfony, so should help provide a lot more experienced developers for Drupal. There is still a lot to do here; you can check out the current status via the WSCCI sandbox and help with the issue queue. See the core initiatives overview page for IRC meeting times and details. If you weren’t there for Larry Garfield’s Munich presentation, Web Services and Symfony Core Initiative, you can still watch it to get a good overview.

Automated testing in Drupal 8 is much faster and the Symfony components also help allow us to have more modular modules… ones which can more easily be unit-tested. In Drupal 8, PHPUnit will replace Simpletest although the latter may remain in core for a transition period.

The social side of the DrupalCon

What happens between sessions is the real reason that most of us go to DrupalCons. There is nothing quite like participating in code sprints with Webchick sitting across the room, committing the patches you’ve just been helping with. And of course you can take your favorite Drupal developer out for a beer or something. It’s great to be in an atmosphere where there are thousands of people who actually have an idea what you are talking about when you tell them your occupation—and of course it’s nice, for a change, to be able to leave out any explanation of Drupal. If you go to a DrupalCon, it’s a given that you will leave having made new friends—new friends who will feel a bit more like “old friends” the next time you see them.

More DrupalCons in the coming year than ever before

If you have never been to a DrupalCon, there are more DrupalCons coming in the next year than we’ve ever had in a year period, before. Granted, the two new (Australia / South America) cons are planned as smaller events that would actually be dwarfed by some of the larger DrupalCamps, but this is all a sign that Drupal is growing, world-wide. Note that the U.S. and European DrupalCons are both being held a bit later than in previous years. I look forward to seeing you all at a coming DrupalCon.

Jun 19 2012
Jun 19

It’s been a busy past several days in Barcelona (for the Drupal Developer Days) and most of us who’d been sprinting during the week before seemed to be in the same condition by Sunday—rapidly running out of energy from progressive sleep deprivation from an increasingly later return to our hotels. But it’s been an exciting week for Drupal core (and contrib) development and significant work has been completed on the Drupal core (mostly building up Drupal 8, but also some for added features in Drupal 7) while a lot of important decisions have been made which will likely shape development in a number of initiatives for the coming months until the sprints at DrupalCon Munich.

In addition to the Sprint I was primarily involved in (I was just trying to get my feet wet with assisting the Drupal 8 core development process by joining the multilingual sprint, but I did write my first committed core patch—admittedly this was a very basic patch), there were also sprints running for “Views in core”, Entity API, Media initiative, Mapping in Drupal 7, configuration management, abstracting social networking, search-related sprints, the Drupal.org upgrade… and possibly more still. I’ll cover some of the highlights of the week that I’m most knowledgeable about.

Multilingual Initiative

The multilingual initiative sprinted all week before the Developer Days sessions, and even continued through the weekend. And a lot of key decisions were made and important code changes committed and pushed to the central Drupal 8.x repository.

New user interface translation improvements in Drupal 8

This is something I got to do a bit with, but Swiss developer, Michael Schmid (Schnitzel on d.o), of Amazee Labs, was the primary developer working on this task during the Sprint. He and his colleague, Vasi Chindris, were among the stars of the week. It was a real privilege to get to look over their shoulders and to get Michael’s support when it came to using Git to manage code in the sandbox we were using for the issue. (Thank you, once again, Michael!) Once everyone was happy with the work, it got committed to core. This new sandbox workflow, used for larger issues, helps avoid a lot of bugs creeping into the main branch, as has happened during previous periods of intense core development. Of course the tests and test bots catch a lot of issues which could otherwise be major headaches for all concerned (automated testing was also a part of Drupal 7 development). If you recall, the long wait for Drupal 7’s release was due to hundreds of critical bugs. Now this should be a thing of the past since we have an established threshold for critical issues; and the core team only commit new patches to the central repository when we are below that threshold (15 “critical” bugs, 100 “major” bugs… among other thresholds specified).

New system for translating Drupal’s user interface

The new user interface translation system allows you to keep imported (community contributed) translations separate from customized translations and search for a particular translation within either or both categories as well as filter by translated strings, untranslated strings, or both. If you have any unsaved translations, they are highlighted to help remind you not to leave the page without saving them and there discussion about providing a dialogue to prevent a site admin from accidentally leaving the page with unsaved changes, too. There is also an issue to allow the string search to be non-case-sensitive (checkbox) to find more strings that contain a particular word or phrase, regardless of text case. Since this feature came up in discussion after the rest of the user-interface changes had already been made, we elected to put the discussion about adding this feature in a separate issue. If you have ideas for what might further improve the Drupal 8 user-interface translation workflow, your input is valued.Customized and imported (community) translations are stored separately

*/

New content language options

Drupal 8 has new language settings per content typeYou can enable translation for a particular content type and also choose to hide the language selector (automatically selecting the language for a new piece of content by any of a number of contextual rules). The automatically selected language for a new piece of content can be any particular language enabled on your site, “not specified”, “not applicable”, “multiple”, the “site’s default language”, the “current interface language”, or the “author’s preferred language”. While all these settings might arguably be a bit confusing for new users, they should help smooth the content creation and translation workflow for most sites. Of course the option to “enable translation” is hidden if the default language for the content type cannot be resolved to a single language (i.e. for “not specified”, “not applicable”, or “multiple”), since translation does not make sense here.

Translate the English UI to… English!

Drupal 8 — Enable English UI translationIn the edit preferences for the English language, you can enable translation to English and then it’s easy to change, for instance, the “Log out” link to “Sign out” (or “Disembark”, “Abandon ship”, “Terminate session” or anything else you might want on a particular site). Of course this could also be useful for fixing any oddities you find in the UI strings provided by contributed modules if you find a mistake in a field description, for instance, you don’t need to wait for a module developer to commit your patch or add a “site English” custom language just to modify a few strings.

Configuration Management related to Multilingual sites

Drupal core team leads and other sprinters discussed multilanguage configuration

One of the biggest issues of the week was determining how multilingual configuration would be handled in Drupal 8. The core team knew that they wanted to store language configuration in files rather than in the database, so that it’s easy to “push” new language configurations to an established site that already has content, among other benefits of this approach. But this brought with it a number of challenges which the Multilingual Initiative team, Configuration Management Initiative team, and other interested parties discussed in several sprint discussions through the week. Many of the standard configurations for a site might also differ, depending on the language: you might, for example, want a different site name or site slogan or logo for each language. There were three different proposals for how to handle multilingual configuration, and to keep a long story short, the final decision was to go with “Plan B” (or a minor variant, thereof). You can still lend your voice to the “review” process in the main issue for the language configuration system in Drupal 8. If you would like an overview of the plans, there is a nice graphic by Gábor Hojtsy (the Multilingual Team lead) which outlines the differences between the three proposals and some variants.

Drupal 8 Configuration Management

Greg Dunlap (“heyrocker” on drupal.org) presented the new configuration management

Angie Byron, aka “webchick” gave a quick overview of the configuration management initiatives goals, tooOne great session from the weekend was the Introduction to the Drupal 8 Configuration Managment System by Greg Dunlap (“heyrocker” on Drupal.org), the Configuration Management Initiative team lead. There has been some good progress in determining what this is going to look like, some of which took place during the sprints in Barcelona. Basically, this will be a bunch of smaller files stored within a logical directory structure in the sites/[…]/files directory. The new configuration system is currently planned to be YAML-based (rather than PHP or XML, which were used in earlier visualizations of the system). And the goal, as described by a slide in Angie Byron’s Sunday-morning keynote, “Drupal 8: What you need to know” is to be like “Features in core, only better”. The aim is to help us remove the complications involved in pushing configuration changes, modified in a development or staging environment, to a site that already has user-created content that we don’t want to lose. The main problem with the current system is that there is no consistent system: configuration settings are scattered across multiple tables, variables, files, and other locations and there is no consistent structure in any case. The idea is now to have a contexts, which Drupal responds to, when determining which configurations files to use.

Angela Byron (“webchick”) talks about the problems the new configuration management system aims to solve

What it should look like when loading a configuration from module code, is something like this:

  $config = config('image.style.large.yml';
  $config->get('effects.image_scale_480_480_1.data');

And when setting and saving configuration data:

  $config = config('system.performance');
  $config->set('cache', $form_state['values']['cache']);
  $config->save();

The YAML code for the image example, which saves configuration for the “large” image style would look something like this:

  name: large
  effects:
    image_scale_480_480_1:
      name: image_scale
      data:
          width: '480'
          height: '480'
          upscale: '1'
      weight: '0'
      ieid: image_scale_480_480_1

This should be pretty easy for developers and site builders to learn to work with and of course an interface is planned which should automatically build the configuration files, when edited by site builders. Configurations will be loaded into the “active store”. Changes are saved back to the active store and back to the YAML files so they can easily be moved between sites (staging and production sites, or completely different sites if they should have some settings in common). Building up an ideal import/export system for configurations is one of the major remaining hurdles. Update: heyrocker’s presentation slides are now available for download, so you can see other examples of Drupal 8 configuration.

Other Drupal 8 news

Twig library committed to core!

Drupal 8 now has Twig in the core/vendor directoryOne of the new developments which has received some press is that Twig, the templating system designed by Fabien Potencier, the innovator behind Symfony, which also bundles Twig, has now been added to the Drupal core repository.

However, the fact that the Twig library is in the repository does not mean that it’s ready for any kind of use yet, except for those who are working to build a new templating engine for Drupal, which uses it. How this works is still open to discussion; according to webchick, it may be that we keep both PHP-based and Twig-based templating engines to ease the pain of this change. On the other hand, while there is a learning curve involved, there are many advantages to Twig, especially in terms of security (removing PHP vulnerabilities from themes, altogether), and the saying that “the drop is always moving” applies here. It may be that Twig is the only templating engine which will be supported by Drupal 8, but if you feel strongly about this or have ideas for how to do this “right”, it’s a good time to get involved.Twig vs PHP template syntax

Context-based layout and blocks

Angela Byron lays out the plan for Drupal 8 layout with contexts

Everything in Drupal 8 will be a block or a layout area and blocks can have multiple contexts which determine their behavior (and whether or not they are displayed). This is going to be a major change which should produce much more flexible layouts and site designs. Of course this will touch on every major Drupal initiative: configuration, HTML5, mobile, multilingual… all are involved.

Drupal 8 will have clean, semantic HTML5 (and will abandon IE)!

Say goodbye to the messy nested div hell! Drupal 8 code is going to be much smaller and cleaner which will make designer/themer types love Drupal and make it possible to produce code that renders nicely, regardless of display size. Oh, and don’t worry about trying to support older versions of Internet Explorer; the community has decided it’s time to put that tiresome task to rest. Yay!

Drupal 8 development needs you!

Webchick, heyrocker, Gábor Hojtsy… all made the same point: As a community effort that’s still underway, the Drupal 8 effort needs more of the community at large to get involved and find ways to help out. There is a lot of complexity, but there will be smaller tasks that anyone could work on, so there’s going to be something for everyone. Even non-coders can help by testing, filing bug reports, helping manage the issue queues, making suggestions, documenting finished features and APIs. There are several places where you can get involved:

  • The core initiatives overview page provides information about when the different teams meet in IRC and in which channels among other information which can help people who want to find ways to get involved.
  • Drupal Ladder is a project aimed at helping more people learn how to contribute to Drupal
  • [ … ] (Comment below if you have other tips for where to get involved)

Big thanks to the organizers, sprint leads, and session speakers

The Drupal Developer Days in Barcelona were a big success because of all of you pulling together to make things happen. The local organizers made us all feel welcome and provided a lovely venue and took us out on the town just about every night. The sprint leaders helped find ways for everyone to play a part in building Drupal 8 or contributing in other ways, and the sessions were awesome.

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web