Coming right up: a great way to start getting familiar with Drupal 8.
It's the annual Drupal Global Sprint Weekend, happening all over the world on the last weekend in January, the 30th and 31st.
Acquia, along with Genuine Interactive and OwnSourcing, will be sponsoring the Boston location, so if you live in the general area, please stop by.
Genuine's office, in Boston's South End, is spacious and inviting. And there will be a free lunch and plenty of beer.Tags: acquia drupal planetdrupal global sprint 2016
I am confident that adopting a client-side framework through progressive decoupling will give us the best of both worlds. Of course, this does not mean I oppose fully decoupling through any other framework; in fact, I believe we should redouble our efforts toward a first-class API-first Drupal. But progressive decoupling means that we will be able to work toward a next-generation user experience without abandoning much of the work we've done so far.
Special thanks to all of the following experts who provided review and input: Miško Hevery (creator of Angular; Google) and Igor Minar (technical lead for Angular; Google); Ed Faulkner (core maintainer for Ember); Amitai Burstein (Drupal and Elm contributor; Gizra); Sebastian Siemssen (Drupal contributor, Elm and React developer; Zensations); and John Albin Wilkins (Drupal 8 mobile initiative lead), Alex Bronstein (Drupal core maintainer; Acquia), Wim Leers (Drupal core contributor; Acquia), and Preston So (Drupal contributor, Acquia).
First, have we decided on the right criteria regardless of the frameworks themselves? This is probably the most important at this stage. While many organizations choose to adopt client-side frameworks for fully decoupled implementations, Drupal is the first to consider layering a framework on top to allow both richly dynamic and more traditional modules to coexist gracefully through progressive decoupling. What issues around templates, rendering, and client-side caching should we incorporate into these criteria? Is there anything missing or overemphasized?
Finally, have we drawn the right conclusions against these criteria? In other words, did we fill out the cells correctly? While they have been reviewed by some of the frameworks' experts, there might be unexpected gotchas or caveats.
At the moment, the most promising candidates in the comparison matrix appear to be Angular 2, Ember, and React, given their technical robustness, relative suitability for progressively decoupled Drupal, and their strong levels of community support and broader adoption. Given that Backbone is already in core and several modules already rely on it, we have included it too.
What we've learned from talking to the different projects is that they are often converging on similar techniques and best practices; they are by and large adding support for Virtual DOM implementations or rehydration (seamless state transfer), and they are all obsessing over small payload size and performance, better testability, etc. Therefore it is important to focus on the fundamental, often philosophical, differences between the projects that will likely be unchanged in time; key architectural differences, their release cadence and stance on backward compatibility, their license, their governance model, their flexibility and learning curve, etc.
From a quick glance at the criteria and our needs, it seems that Ember is currently our best candidate, as it appears to have a slight technical edge overall. Ember 2.0 has an all-new rendering engine named Glimmer, and it has server-side rendering through FastBoot. On the other hand, however, Ember is quite bulky and opinionated (enforcing patterns for code structure) compared to other candidate frameworks. A more fundamental difference is that unlike Angular and React, which have corporate governance and funding, Ember is a community-driven project like Drupal.
While React is lightweight, it needs integration with a variety of other libraries in the React ecosystem to work as a full-fledged implementation, which gives it a steep learning curve from an implementation standpoint. Because React is a relatively young project, best practices are shifting quickly and making it less attractive. The Virtual DOM, among React's most compelling features, has also seen its core ideas filter into other framework projects. But more importantly, React is licensed with what I believe to be a potentially unacceptable patent clause, which states that an organization can no longer use React once it sues Facebook for any (unrelated) patent infringement. This has already generated some concerted pushback from both WordPress's Calypso and React contributors.
Whatever the result of the debate around which client-side framework to adopt, I believe that Drupal needs to move quickly to embrace a framework that will aid development of a progressively decoupled architecture and corresponding user experience improvements. By providing some baseline criteria and including our accomplished community, I have no doubt we can reach this decision quickly but also intelligently.
Special thanks to Preston So for contributions to this blog post.
Throughout the years, I’ve organized many Drupal sprints. These brief but focused meetings encourage collaboration, involve many different kinds of contributions, and can vary in duration and size. I’ve organized massive sprints at DrupalCons, focused sprints, and smaller local sprints ranging from four to twenty participants.Drupal Global Sprint Weekend
I have also helped other people to organize small sprints during the Drupal Global Sprint Weekend. It started in 2013 when I asked Angie Byron (webchick) if she would retweet something about a Chicago sprint I was planning. Angie suggested that if it were something in multiple cities, and not just Chicago, that she would. So I found two other organizers, made a wiki page, called it Drupal Global Sprint Weekend, and Angie shared information about it with the world! In 2013 we grew from those first three locations to 33 locations. In 2014 we had 40 locations, and in 2015 we had 48 locations. Right now for 2016, we have 17 locations, and there is plenty of time for you to organize one in your local community.Why?
Drupal Global Sprint Weekend is a supportive environment for people to host their first sprints. Since so many sprints will be at the same time, organizers can ask questions of each other. Having them at the same time also means more publicity for all the locations than any one sprint could generate on their own.Is there any work to do?
Not all locations need to sprint on the same topic. I recommend working on whichever project your most experienced contributor prefers. Sprinting on 7.x issues for contrib projects is a good idea. Porting a contrib project to 8.x is also a priority. You may have a maintainer of a contrib project local that can attend your sprint, or reach out to a maintainer and let them know you plan on sprinting on their project. For Drupal Core, there is lots to do on Drupal 8 still: reviewing, testing, and fixing bugs, especially bugs blocking porting contrib projects, and API documentation.Small local sprints are easy to organize
Do I really think you can? Yes. Small local sprints are the easiest ones to organize. And I'm going to describe the minimum requirements so you can see exactly how easy it is (and a few optional enhancements).Pick the date and time
Since you are the organizer, you get to pick the day (or days) and times that work for you. Sprint Weekend is January 30-31, 2016. You can just do one day, or both, whatever you want. Want to start at 10am and be done at 4pm? You pick!Pick a location
If this will be the first sprint you organize, you can expect 4-10 people. Maybe more depending on how much you publicize or how active the local community is. But with a small number of people expected on the weekend, you will find it easier to get a location for your sprint than say … organize a Drupal Camp!
Any free or reasonably-priced place that you can afford will work. This often means hosting at your employer, a company you have a relationship with, co-working space, library … Any place with *excellent* internet and tables and chairs will do. Pick something that is convenient for you, since you will be the organizer.
If you have choices, pick the one with better accessibility (ramps, elevators, accessible bathrooms). And, consider picking the one that has better parking or public transportation options.Tell people Make a public place for attendees to sign up.
Now that you have the dates, times, and location, it’s time to tell people. Make an event on meetup.com, or eventbrite, your favorite event signup tool, or wherever your local community usually has people sign up for events. (Or, if you use g.d.o only, skip this.)Make an event of type sprint on groups.drupal.org in your regional group.
When you make a g.d.o sprint event, druplical.com will read the event feed and put a pin on its map. Druplical is a super cool way to browse Drupal events.
If you make another sign up page (meetup, etc.) link to that sign up page from the g.d.o event.Add your sprint to the global list.
Edit the wiki page for the 2016 Drupal Global Sprint Weekend adding your location (and a link to your signup page).Done!
That's it! Your local sprint is officially part of Drupal Global Sprint Weekend 2016.What extras can you do? Sponsors?
Optionally, find a sponsor for food and drink. Consider coffee, water, juice, soda, breakfast snacks, and lunch.Tell people more details
Add some more information to your event announcements and sign up page:
Explain who should attend the sprint. I suggest some wording like "Everyone who has built a site with Drupal is welcome at the sprint. We will work together to contribute." People who have never contributed before will think they can't possibly help, but be sure to tell them they can.
Let people know what to bring. Tell them to bring their laptop. Let them know whether food will be provided or if they should bring their own. Will you need people to bring outlet strips? Mention anything the sprint will need.What next?
As we get closer to the event, I'll share some tips for how to prepare for what will happen on the sprint day. For now, go make your g.d.o event and let's cover the map with sprint locations. :)DrupalSprints
Was there a friend or family member who you could only communicate with using a proprietary, privacy-eroding solution like Skype or Facebook this Christmas?
Would you like to be only using completely free and open solutions to communicate with those people next Christmas?Developers
Even if you are not developing communications software, could the software you maintain make it easier for people to use "sip:" and "xmpp:" links to launch other applications? Would this approach make your own software more convenient at the same time? If your software already processes email addresses or telephone numbers in any way, you could do this.
If you are a web developer, could you make WebRTC part of your product? If you already have some kind of messaging or chat facility in your website, WebRTC is the next logical step.
If you are involved with other free software communities, please come to the Free-RTC mailing list and ask how you can run something similar.Everybody can help
Do you know any students who could work on RTC under Google Summer of Code, Outreachy or any other student projects? We are particularly keen on students with previous experience of Git and at least one of Java, C++ or Python. If you have contacts in any universities who can refer talented students, that can also help a lot. Please encourage them to contact me directly.
In your workplace or any other organization where you participate, ask your system administrator or developers if they are planning to support SIP, XMPP and WebRTC. Refer them to the RTC Quick Start Guide. If your company web site is built with the Drupal CMS, refer them to the DruCall module, it can be installed by most webmasters without any coding.
If you are using Debian or Ubuntu in your personal computer or office and trying to get best results with the RTC and VoIP packages on those platforms, please feel free to join the new debian-rtc mailing list to discuss your experiences and get advice on which packages to use.
Everybody is welcome to ask questions and share their experiences on the Free-RTC mailing list.
Please also come and talk to us at FOSDEM 2016, where RTC is in the main track again. FOSDEM is on 30-31 January 2016 in Brussels, attendance is free and no registration is necessary.
This mission can be achieved with lots of people making small contributions along the way.
It’s really early into the New Year, but there are plenty of events in the Drupal Community that have already been scheduled for 2016. If you are new to Drupal, these camps are a great way to engage with the community and learn more.
Drupal is an open-source content management system that powers more and more of the web every year. The White House, Stanford, Yale, House of Representatives, Weather.com and many other high-performing traffic heavy websites are delivered through Drupal.Don’t miss...Read more
One of the common requests in our support chat and forum involves adding custom CSS to a site.
Normally the solution is to add the CSS to theme, but many environments are locked down and the site owners don't have access to the files.
In this post, I'm going to show you how to use the CSS Injector module to add custom CSS to your Drupal 7 site.
Drupal 8 is still a very new system and many contributed modules are just starting to catch up.
However, there some features already available in Drupal 8. The Calendar module is not bug-free and doesn't have all the features it did on Drupal 7, but it is working on Drupal 8.
Here's a guide to building your first Drupal 8 calendar.
Migrate module makes the assumption that for each item in your source, you're importing one item into Drupal, and that's baked in pretty deep.
So how do you handle source items where there is body text containing multiple inline images, which should be imported to file entities? For each single source item, ultimately imported as a node, you also have a variable number of images: a one-to-many source to destination relationship.
One way is to simply import the image files at the same time as the nodes whose body text they are in. In the prepareRow() method of your migration class, you effectively do a mini-import, analysing the text, fetching the file data, saving the file locally, and then getting a file ID that you can use to replace into the body text. But doing that, you don't benefit from any of Migrate's helper classes for importing files, nor can you roll these back without writing further code: this isn't a Migration, capital M, it's just an import.
The better way is to write a second migration, to run before your node migration. It may seem like extra work to have to write a second migration class, but it pays off, and besides, since they both draw from the same source data, a lot of your code is already written. Copy-paste the class definition and the constructor as far as the field mappings. The code you would have put in prepareRow() to analyse the text goes somewhere else, but we're getting ahead of ourselves.
And it turns out that Migrate does allow for your single source items to yield multiple destination items: tucked away in the module's source classes and not mentioned in the examples (which do cover a great deal, are probably the most extensive examples of any contrib module all the same, it must be said) there are at least two (that I've found) places where the one-to-one correspondence can be skirted around.
The one that I used is only available when you use the MigrateSourceList source type, and furthermore when your list source is a set of files. As it happened, the source data I was working with on my project came in JSON files, one file per node to import, and with a body text field which contained references to image files which also needed to be imported.
MigrateSourceList is a source type that separates out the two concepts of listing your source items and processing each one. So unlike, say, the CSV source where the list and the item processing are both provided by the one class, with MigrateSourceList, you can say something like 'my list source is a directory listing, and each item is a JSON file', or 'my list source is a JSON file, and each item is an HTML file'. The MigrateSourceList class delegates the two jobs to further classes, which allows you to mix and match them. Your migration specifies them in the constructor:
$this->source = new MigrateSourceList(new MigrateListFiles($list_dirs, $base_dir), new MigrateItemFile($base_dir), $fields);
There's one more component in the system, and this is the crucial piece that allows us to have more than one destination item per source item: it's the MigrateContentParser class. This allows the files that MigrateListFiles to each return multiple items to MigrateSourceList.
The only implementation of this in Migrate is MigrateSimpleContentParser, which doesn't do much, so you'll want to subclass this for your particular case. It's fairly simple:
- setContent() — perform any processing on the content of the file. In my case, I needed to run it through drupal_json_decode() and grab the body text field, since the whole file was JSON representing a node.
- getChunkCount() — process the file content to return a count of how many items for migration are contained in it.
- getChunkIDs() — similar to getChunkCount(), but return IDs. You will probably end up using a common helper method for this and getChunkCount(), as they do the same sort of work. The IDs you return can be anything you like; in my case they were GUIDs. They are appended to the ID for the file to form the overall source ID.
- getChunk() — given a chunk ID (one of the ones you provided in getChunkIDs()), return the actual data for that item. Again, you may want to use a common helper. In my case, here I merely returned the ID itself, since the images to migrate were on a remote server and accessed by their GUID.
I submitted a patch to make it a bit easier to deal with the case where files might contain either one or many chunks (or even none): by default, a file providing only one chunk doesn't get to return a chunk ID, which wasn't working for my case. The patch (committed but not yet in a release) adds an option to override this so you always know the ID of the chunk: in my case, the GUID for the image found inside the body text, which was always needed by the image migration code.
At the other end, I needed a custom subclass of MigrateItem to deal with the data returned by getChunk(). This just needs to implement getItem(), and it can pretty much return anything you like: this is the same source data item that your migration class gets to work with.
So to recap, as there's quite a few classes flying around helping one another here, we have MigrateListFiles which uses a custom MigrateContentParser implementation to extract items from the source data files, with possibly more than one item from a single file, and then MigrateSourceList uses MigrateListFiles along with a custom MigrateItem implementation.
The setup code in my migration's constructor then looks like this:
$parser = new CustomJSONBodyImagesParser(); $list = new MigrateListFiles( // $list_dirs array($source_folder), // $base_dir $source_folder, // $file_mask '//', // $options array(), // MigrateContentParser $parser $parser ); $item = new CustomImageGUIDItem(); $this->source = new MigrateSourceList($list, $item, $fields);
The end result worked great, and the ability to rollback turned out to be very useful, when there turned out to be bad data here and there that needed to be cleaned up or skipped. But that's what always happens with migrations in my experience!
Sooper Drupal Themes: SNEAK PREVIEW: Glazed 2.4 and Carbide Builder 1.0 – Biggest SooperThemes Update Ever
Later this week I will write a full blog post, with an overview of new features, new options and entirely new capabilities in the SooperThemes product line. For now: just a sneak preview. During the last 2 month fo 2015 we made a huge effort to produce the biggest update ever for our premium Drupal themes. As with any big software adventure, we had a quick and productive start, then some setbacks on difficult components, and then some setbacks on small details that turned out to be –not so small–
Over the coming 2 weeks we will publish more content, covering the new capabilities in detail and with illustration. For now just a sneak preview and a list of changes that I will scrape from the commit log. Happy 2016 from sooperthemes!
Our free open source variant also got a huge upgrade and a new free version of the premium theme: https://www.drupal.org/project/cmsIntroducing Carbide Builder 1.0
The success of glazed theme was as much in its design components as in the integration with our partner's drag and drop builder: Azexo Composer. Unfortunately this project is not maintained anymore and the owner is now fully focussed on developing wordpress themes. This basically us to further its development internally. The result is Carbide Builder 1.0: A page builder that looks like it's predeccessor but is different mostly in that it's not buggy and has been streamlined and refactored for greater usability and performance.
We’ve been thinking about code reviews lately here at Advomatic. Fellow Advo-teammate Oliver’s previous post covered the whys of our code review process, and Sarah covered the hows when she did a overview of some tools we use regularly. This post focuses on the front-end side, and deals more with the whats of front-end code... Read more »
As many of my loyal blog readers know, I sit down to write a retrospective at the end of each year. It's helpful from the perspective of seeing how far Acquia has come in a single year, but it should also give you a glimpse of what is in store for Acquia in 2016 and beyond. If you find it interesting to take a look back at previous retrospectives, here they are: 2014, 2013, 2012, 2011, 2010 and 2009. These posts provide a pretty detailed overview of Acquia's trajectory as a company.Market trends
Since Acquia started eight years ago, we've believed that open source offers significant advantages over proprietary software because of its faster innovation, higher quality, freedom from vendor lock-in, greater security, and lower total cost of ownership. Early in our life as a company, we made a big bet that open source combined with the cloud, offered through a subscription model rather than perpetual license, would be a very compelling solution for the market. Few people believed us at the time, but now it is clear that our early vision is starting to pay off; perpetual software licenses are on the decline and Deutsche Bank analyst Karl Keirstead recently called cloud and open source the two leading themes in Silicon Valley.
The market demand for Acquia's digital business platform continues to grow; three of the top analyst firms, IDC, Gartner and Forrester have all named digital business transformation a top strategic imperative for the C-suite in 2016 and beyond. Open source, cloud computing, big data, the Internet of Things (IoT), and artificial intelligence are all catalysts for the expansion of digital transformation into all corners of the organization.
Organizations are rapidly expanding the range of digital interactions with their customers and partners, moving Drupal and Acquia to the core of their business. There is a growing focus on personalization and data-driven automation, which bodes well for products like Acquia Lift. In general, I believe that the growing reliance on digital provides Drupal and Acquia with a multi-decade opportunity.Open source
Within the last 12 months, some of the largest technology companies including Apple, Google, Microsoft and Facebook have open-sourced key components of their business. There are many motivations for this shift. According to Apple, the company open-sourced its Swift programming language to extend it to new platforms. Google open-sourced TensorFlow, its artificial intelligence platform to make an even bigger impact outside Google, even though the company employs 2,000 engineers working on artificial intelligence alone. Microsoft open-sourced .NET to increase its relevance with developers and play nicely with other operating systems. In Deutsche Bank's 2016 predictions, Keirstead says "open source keeps eating the world", causing major price deflation for the traditional enterprise software industry. Whether the motive is faster innovation or increased adoption, companies are relying less and less on proprietary software and embracing open source.Cloud adoption
Amazon's SVP of Web Services Andy Jassy explained in his 2015 AWS re:Invent presentation that websites have been a "critical gateway" to AWS' wider cloud adoption in the enterprise. His rationale: nearly every organization has one or more websites, and many aren't considered "mission-critical applications". Therefore, most organizations feel comfortable moving some or all of their websites to the cloud. Websites are an important stepping stone for organizations to build up the knowledge and confidence to migrate their entire businesses to the cloud.
As cloud adoption grows, we're seeing our customers use a mixture of SaaS, PaaS and IaaS. In particular the Platform-as-a-Service (PaaS) model continues to grow fast, which is great news for Acquia Cloud. A growing number of enterprises are choosing PaaS ahead of Infrastructure-as-a-Service (IaaS) to save time and money on building, scaling and maintaining infrastructure so they can focus on building websites. Gartner sizes the PaaS market at $4.1B in 2015, attaining a compound annual growth rate (CAGR) of 65%+ through 2018. We are a few years ahead of our competitors (Adobe, Sitecore, IBM, Oracle) when it comes to PaaS, and I don't see that changing in 2016.
The migration to the cloud is only getting started. When I met with Eric Schmidt this year, he told me that he believes Google's cloud business could outpace its advertising business in five years. To put that in context, Google made more than $65 billion in advertising in 2015, roughly 90% of its total revenue. Amazon's cloud business, bigger than its four closest competitors combined (including Google's cloud business), generated roughly $7 billion in revenues in 2015 and is expected to grow 80% year-over-year. Needless to say, it is exciting for Acquia be a "critical gateway" in such a massive movement to the cloud.
A photo of Andy Jassy's keynote at AWS re:Invent 2015.Digital experiences
As the web evolves, the idea of a "digital business" takes on an entirely new meaning. I've said this before but digital is not just about building websites anymore; many of our customers are using digital to change the way their business operates, automate manual processes, and save millions of dollars in the process. Digital strategies are no longer confined to the marketing department; they're quickly becoming a boardroom priority.
Digital experiences are also getting more sophisticated. What used to be as simple as building a website now involves getting the right information, to the right user, at the right time, in the right context -- an idea I call B2One and talked about as part of my Big Reverse of the Web thesis. It's all about understanding the user's context and preferences to deliver the best next experience. We started investing in this area in late 2013, acquired a personalization company in 2014, and expect this trend to grow really big, especially as big data, the Internet of Things (IoT) and artificial intelligence mature.
Beyond personalization and contextualization, companies have a greater need for flexibility and freedom to integrate a variety of external services, ranging from commerce to marketing automation solutions. While there are plenty of point solutions on the market that achieve pieces of this puzzle, Acquia and Drupal uniquely provide a platform to do it all.Acquia continues its growth
Acquia's growth is an indicator that businesses are already betting big on open source, cloud, personalization, and digital transformation. Looking at our numbers for 2015, it is hard to believe that last year was only our seventh full year as a revenue-generating business. Our new logo subscriptions -- the business that we get from companies new to Acquia -- continued its fast growth, while our renewal rates are among the best around.
To support our growth, we added $55 million in new venture capital funding in 2015, bringing Acquia's total raised to $188.6 million.
We dramatically increased headcount last year. In May, we moved into a beautiful new corporate headquarters in Boston, where we hosted a launch party with mayor Martin J. Walsh that established us as an anchor growth company for the city. Globally, we added 150 more employees in 2015, bringing us to 720 people. The executive team changed substantially in 2015, with the addition of Al Nugent as CISO, Preston Bradford as COO, Heather Hartford as Chief People Officer, and most recently Loren Jarrett as CMO. We also announced the appointment of Christine Komola, CFO of Staples, to Acquia's board of directors. We expanded European operations with the opening of a new office in Munich. Acquia now operates out of 10 global offices on three continents!
A photo of Acquia's headquarters in downtown Boston.
We made key investments in talent for our partner team, grew the number of Drupal certifications achieved globally, and strengthened our relationship with agency partners. We were proud to announce our WPP Global Alliance partnership this year, which brings Acquia closer to the organizations building the world's most amazing digital experiences.
Top industry analysts continued to recognize Acquia as a leading provider of digital experience software and services. In October 2015, we were named a "Strong Performer" in The Forrester Wave: Digital Experience Platforms Q4 2015. In August, Gartner named us a "Leader" in the 2015 Magic Quadrant for Web Content Management. This type of external validation supports Acquia as a viable alternative to proprietary solutions provided by companies like Adobe, IBM, Sitecore or Oracle.
Acquia Cloud continues to enable organizations to run their websites securely and reliably, while providing them with the tools to accelerate web development and shorten time to market. We manage over 13,000 AWS instances (virtual servers) powering approximately 197,000 websites. In December 2015, Acquia Cloud served 10.8 billion Apache hits and 6.2 billion Drupal bootstraps (requests handled by Drupal instead of one of different caching layers or the web server directly), with billions more served from our caching layers and Acquia Cloud Edge.
Last year, we launched Acquia Cloud support for the São Paulo, Brazil and Frankfurt, Germany regions. With our German expansion we became the first Drupal PaaS to offer pan-European high availability to accommodate EU data sovereignty requirements.Drupal 8
With the launch of Drupal 8 in late 2015, the Drupal community achieved our most significant release in the history of the platform. We implemented a more modern development framework, reimagined the usability and authoring experience, and made improvements that will help everyone build the multilingual, mobile and highly personalized digital experiences of the future. From how we model content and get content in and out the system, to how we assemble experiences on various devices, to how we scale that to millions of pageviews — it all got much better with Drupal 8.
Now that Drupal 8 is released, I'm convinced that it will attract new developers and site-builders to the platform. Nonetheless, the wait for Drupal 8 has been long and painful, temporarily slowing down much of the commercial Drupal ecosystem. Despite some turbulence, I'm proud that the Acquia team was a force in helping to push Drupal 8 over the finish line.
Acquia employs more than 150 Drupal experts, and has fixed upwards of 1,200 issues in Drupal 8. I reassigned our Drupal team from feature development (i.e. Spark) to working on criticals. This team was a major force in bringing the total number of criticals down from a high of 90 at the beginning of the year to zero in early October, through development, performance work, patch reviews, sprint coordination, and in helping to manage the Drupal 8 Accelerate program. To help jumpstart faster Drupal 8 adoption, Acquia is investing significantly in porting the top 50+ contributed modules. We have always believed in giving back more as a core part of our company's DNA. Our entire team is ready to enable and support companies working with Drupal 8.Acquia products
Last year was an exciting one when it came to new products. We announced Content Hub, a cloud-based content distribution and discovery service. As more of our customers scale with Acquia across hundreds of sites, Content Hub lets authors and site owners reuse content from internal and external sites. And we added a critical commerce integration through a partnership with Hybris, which provides even more options for enterprises to drive commerce experiences.
We announced a variety of important security and compliance milestones that will be crucial to protecting our customers. First, we introduced Acquia Cloud Edge, a new DDoS security product developed in partnership with CloudFlare to keep our customers safer from external threats. Soon after, Acquia achieved HIPAA compliance upon passing an independent audit of Acquia Cloud Site Factory and Acquia Cloud. HIPAA compliance is significant because of Acquia's roster of healthcare customers, who require certain safeguards for data security and look to scale Acquia Cloud across their portfolio of sites.
In addition to this compliance milestone, our spam-blocking software, Mollom, has blocked over 10 billion spam comments.
Acquia Lift customers challenged some of our original assumptions about personalization. We worked to improve our Acquia Lift personalization product with the help of our customers, creating a new workflow and UX that supported more flexibility and freedom depending on the individual organization. In 2015, we learned a lot about the challenges organizations face when starting out with personalization and doubled down to help our customers become successful. Personalization will continue to be a huge focus of ours in 2016.Looking ahead
This year, we will be rolling out many new products and enhancing existing ones. Acquia Cloud will get a brand-new, responsive, card-based UX in early 2016, and we'll give development teams the ability to create on-demand environments. We will continue to focus on security enhancements from audits like SOC and ISO, as well as key control planes including FedRAMP, Single Sign-On, and much more. Our team was challenged to get the first cloud service running on our new grid architecture by the end of 2015. With a few hours to spare on the 31st, the "Uptime" service is now running on our grid architecture, a major milestone. A continued focus on developer tools, more microservices, personalization and a "jumpstart" Drupal 8 distribution are just some of the technology we will be rolling out in 2016. Overall, you'll see us getting faster, more secure and more efficient, and providing even more options for our customers to create highly personalized digital experiences.
Longer term, I'm very excited about Acquia's opportunity. I believe we've steered the company to be positioned at the right place at the right time. Time will tell, but 2016 promises to be another big year for Acquia.
road.cc is the UK’s number one road cycling website, with over 4 million monthly pageviews and 1 million unique users per month. It has been voted the best cycling website in four of the last five years.
The site covers all aspects of road cycling and provides news, reviews, buyers guides and features as well as blogs, videos, classified ads, events and forums.
Microserve worked with road.cc to completely redesign the existing Drupal 6 site whilst also migrating over 200,000 nodes and users in the process.Key modules/theme/distribution used: MigrateMigrate ExtrasDrupal-to-Drupal data migrationFeaturesMasterRESTful Web ServicesBootstrapOrganizations involved: Microserve
With the release of Drupal 8 a lot has changed. Drupal 7 primarily relies on procedural PHP code whereas Drupal 8 is mostly object oriented. To get to grips with some of the fundamentals of Drupal 8 we’re going to create a custom module, register a menu router item within said module and finally output some rendered markup on the page.
Creating our module folder
In Drupal 7 sites core modules are located in the root directory of your site in a sub-folder called “modules”. In Drupal 8 these core modules have now moved to “core/modules”. What this means to us the developer is that the “modules” that was once out of bounds can be used freely.
Navigate to the “modules” directory from the root of your site and create a folder called “custom” Navigate into the newly created “custom” directory and create another folder called “hello_world” (this will be the name of our module).
Registering our module
Unlike previous iterations of Drupal with version 8 we don’t need to include a *.module file in our module structure - we do however need an info file, which is now a YAML file (the information stored in the file is however very similar).
Within your module directory, create a file named hello_world.info.yml and add the following:
For anyone comfortable creating Drupal 7 modules most of the information contained within the info.yml file will be familiar.
-Name simply put is the name of our module
-Type is a new component that defines the type of extension (another “type” being theme)
-Description is a way of letting users know what our module actually does
-Package is used to group modules together on the module overview page (all core modules have a “package” of “Core” for example)
-Core is the version of Drupal the module is intended for (this does not increment with each minor release of Drupal)
Enabling our module
Navigate to “admin/modules”, filter the list of modules by typing “Hello” and you should see our newly created module listed.
Select the checkbox next to our module and click “Install”.
Extending our module structure
We’re going to crete a controller class for use with our module, so we need to extend the module structure by adding a “src” directory. The “src” directory stores controllers, plugins, forms, templates and tests used with the associated module.
Within our module create a folder called “src”. Navigate into the “src” directory and create a new folder called “Controller”.
Creating our controller
Navigate into the “Controller” directory and create a file called “HelloWorldController.php”. Open up the file and add the following:
Here we’re declaring a namespace (Drupal\hello_world\Controller) and creating a class (called HelloWorldController), which extends the ControllerBase class. The extended class “ControllerBase” is available to us due to the “use” clause including the namespace.
Our class “HelloWorldController” contains a very simple public method called “content” and all this does is return a simple render array.
Tying it all together
We now have a module defined along with a controller class that returns markup in a render array, but the user can’t see this, so let’s register a menu router item, which will define a URL accessible to end-users.
Unlike Drupal 7 we don’t need to invoke “hook_menu()” to create menu router item - this can simply be achieved using another YAML file.
In the root directory of our module crete a new file called “hello_world.routing.yml” and add the following:
Here we’re defining the following attributes:
-Path: The path the end-user will navigate to to access the page
-Controller: The namespace, class name, and method of the controller we’re invoking
-Title: The title of the page
-Permissions: Any permissions that are required for the user to access the page
Providing everything went according to plan you should now be able to navigate to the URL “/hello-world” and see something similar to the following:
Congratulations, you’ve just created your first Drupal 8 module!
At the end of this tutorial, the folder structure of your module should be as follows:
The source files for this project are available at the following Git repository: https://github.com/craigweb/first-drupal-8-module
Find me on Twitter: @craigperks
Part 1 of 2 - Getting beyond the talent war. I was thrilled to have the chance to sit down and have a conversation with Ambrosia Vertesti, Global VP Human Resources at Hootsuite. It's part of my exploration of how open source thinking and practices are spreading beyond the world of code to influence and improve the businesses and cultures around them; in this case, to HR practice and what has become #HROS.
"I am fiercely competitive, but I am collaborative before I am competitive." - Ambrosia Vertesi
Over the past five years running HR for Hootsuite--and growing it from 20 to 1000+ employees!--Ambrosia has had to figure out how to keep up with Hootsuite's enormous growth. Dealing with the challenging realities that many of us face at startups, like limited resources, budgets, and (perceived) talent shortages, forced her to get creative. Along the way, she and a group of her peers noticed that software professionals had institutionalized the way they benefitted from swapping favors, and connections to get things done: Open Source HR (#HROS) was born!
Apart from being fascinated to learn more about Ambrosia's world, I was exploring, peeling back the layers and trying to understand her terminology and perspective--and what drew her to open source. When I get there, I see how and why she and her peers are so keen to apply open source thought and practices to their work. It is for all the same reasons we do it in code and technology: taking advantage of commodity functionality and specializing in what differentiates you saves time, effort, and money. Giving your best back to a community of the like-minded--and admitting what you don't know--will reward you with receiving the best back from your community in return.Interview video - 21 min.
The Talent War
I heard the term "The Talent War" watching Ambrosia and Lars Schmidt co-present the keynote address at LinkedIn's 2015 Talent Connect conference.
I asked Ambrosia about it. "For a long time, the conversation around recruitment was about this 'war' for talent," she explained, "People started thinking about it as a very combative, carnivorous environment. You had to step on each other to survive. I think this idea was very destructive to HR. People are not resources, they are human beings. A rising tide floats all boats and we should be building ecosystems and we should be collaborating on what's happening in the workforce. I am fiercely competitive, but I am collaborative before I am competitive." Ambrosia points out the importance of creating more talent rather than simply trying to buy everyone on the market. "This idea of the 'War for Talent' ... talent won a long time ago. They decide what they want their education to be; they decide what companies they want to work for and what problems they want to solve. I should be supporting and enabling them in that. And supporting and enabling other practitioners about how we get better about being employers that people want to work for."No more rock stars, ninjas, and gurus
I brought up Drupal's decade-long challenging hiring situation. Ambrosia suggests that if HR professionals thought "about how you see yourselves ... 'There's a lot of work, we want to build all these amazing things and there's not enough of us!' If we thought the same way, we'd look to partnerships with universities, resourcing the next generation of talent, you'd look at mentorship programs (and reverse mentorship programs!). Why are we not telling the story about the core competencies that are needed? Why are we not showing the data about what's being educated and what's being hired?"
"I think people are doing that now, I think there is a narrative there. But for a long time it was more like, 'There's not enough of you!' You're so precious!' And these words 'rock stars', and 'ninjas' and 'gurus' and all these horrible things. I think it is in mentorship, education and awareness," where you find the real, sustainable solutions to this problem. "I think you have to get to people really early--elementary school, even--to get people interested. As a business, creating an environment that's not a brogrammer culture, that's not based around ping pong tables, and focusing on things like diversity. I want to focus on building those environments so that it becomes more approachable for people who are interested in getting involved."
Based on my experience, I point out that the more different people--from different backgrounds, genders, geographies, and so on--you have helping to solve a problem, the better the solution will be. One thing that truly surprises me in the tech world is how little focus has been placed on diversity, especially since every other conceivable aspect of efficiency, improvement, and practice has been explored and refined to produce the best possible results. Ambrosia agrees, "We all know that. Especially if you are trying to solve a universal problem. Good luck building a technology if you're all just people in Silicon Valley, solving your own problems and drinking your own Kool Aid. You need to have everybody represented."Fix it with data, mentorship, education, and awareness
"I think technology gets that, but it will be solved through education, accessibility, and exposure. I think a lot of people like the idea of innovation and the democratization that is happening, but if you make it not inclusive, but you make it about the cool kids, or the early adopters, or only Silicon Valley ... the decentralization of the Silicon Valley is a good thing because then people feel like it is something they could do. I hope that this is where the continued investment goes in order for people to feel like this is something as normal as becoming a nurse or a doctor."
Technology is actually approachable and learnable. Not everyone wants to be a ninja or a rock star and you don't need to be one to be in tech. "What I see, having worked in technology for ten years, the people who are creating [technologies] have to have a humility and egolessness--especially if they are working in an open source environment--because people are punching their ideas apart and they want to be collaborative. And those things are required. You see them a lot in technology teams, but as businesses evolve, you don't see the same level of vulnerability and the same level of humility. I hope in my practice, if we can go, 'Hey, we're all trying to solve these problems. No one's perfect. Stop talking about rock stars and how amazing you all are.' And lead with a little bit of, 'Here's the problem we're trying to solve ... This is what we know. This is what we don't know. Can you help us?' ... And build more partnerships, that it'll become a workplace that has a lot more talent at top of funnel."More from Ambrosia Vertesti and #HROS on the web
- #HROS: Open-Source Comes To HR Ambrosia Vertesi & Lars Schmidt, Talent Connect Anaheim Keynote
- Open Source HR - #HROS - hros.co
- When Open Source And HR Collide - Glassdoor
- Insight on Culture, Brand, and Ego from Hootsuite's Ambrosia Vertesi - Techvibes.com
- Name: Ambrosia Vertesi
- Work affiliation: Global VP, Human Resources, Hootsuite
- Twitter: @hambrody
- LinkedIn: Ambrosia Vertesi
- Current projects: #singitfwd "Music changes lives. Pass it on."
- About (Hootsuite): "Ambrosia has built and developed top talent and employers for over a decade. At Hootsuite, her team drives our employee-centric culture and Social HR frontiers. She's also the co-founder of the music initiative #singitfwd."