Planet Drupal

Subscribe to Planet Drupal feed
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 35 min ago

Mediacurrent: Mediacurrent is Gearing Up for NYC Camp

Wed, 15/07/2015 - 15:46

We all know one of the best things about Drupal is the community. If you’re looking to learn more or make connections, there’s almost always a meet-up, camp or other event nearby.  

Categories: Elsewhere

Palantir: Saying No to Say Yes

Wed, 15/07/2015 - 15:20

At DrupalCon Los Angeles I gave a Core Conversation with the unassuming title "No", where I argued that in order for the Drupal project to be successful in the long term, it needs to have a clear and explicit focus. While in part it was an excuse for me to work Grumpy Cat pictures into a DrupalCon presentation, the broader point is one that I believe bears reiterating.

Companies or projects that can't focus tend to have problems. Instead of doing one thing well, they end up doing lots of things poorly. For instance, in an infamous 2006 internal memo that became known as “The Peanut Butter Manifesto”, a senior executive at Yahoo! argued that the company lacked a cohesive vision and was spreading itself too thin trying to be everything to everybody… like peanut butter on bread. In his words, "We lack a focused, cohesive vision for our company. We want to do everything and be everything – to everyone." Sure enough, Yahoo! faltered badly with no killer feature or service and is still struggling to make up lost ground from that era.

Jack Welch, former CEO of General Electric, said it bluntly: "If you don't have a competitive advantage, don't compete." Put another way, if you aren't striving to be the best at something, it's not worth doing. Say "no" to anything where you aren't working to be the best.

What is Drupal's focus?

What do we, as Drupal, want to focus on? And how do we determine if we're doing so successfully? There's no clear, explicit consensus on that within the community. We try to support new contributors and let "rough consensus" decide what we accept or not. That is great for community building, but it doesn't scale to product management at the scale Drupal is now. There’s no way to establish a clear, explicit consensus on what the project wants to focus on (and not focus on), or how to determine if we’re doing so successfully.

Emma Jane Westby called this problem "The Danger of Having No Why" at DrupalCon Austin. Our nominal mission statement roughly boils down to "be a good CMS". What being a good CMS means, and what problems Drupal seeks to solve, is an undefined question. The mission statement doesn't provide any guidance in terms of what functionality to focus on, or what type of user to emphasize. In her words, "We need to stop pretending to be something that everyone will love."

Without a clear and explicit focus, Drupal runs the risk of becoming what Jeff Eaton has called The CMS of the Gaps: a "generic" system that tries to be "good enough" for everyone, but is not great for anyone. That in turn makes Drupal vulnerable to increasingly strong focused tools (Wordpress for blogging, PHPBB for forums, Symfony and Zend Framework and Laravel for custom business logic, etc.) that are not standing still, but getting stronger and more inter-operable every year. We can't "do everything and be everything to everyone" if we want to do that well.

What of Drupal 8?

In the five years since I last talked about its audience priorities, Drupal has made a radical shift. Drupal 8 jettisoned many old assumptions, made significant cultural changes, and reinvented itself as a more modern content management platform.

Drupal 8 shifts the emphasis more heavily toward a certain class of content management that makes a discrete distinction between usage and administration, with a strong emphasis on content strategy and platonic content.

As Drupal has become a stronger CMS, it has become a weaker pure framework. And that's fine, given the shifts in the rest of the PHP market. Tools like Symfony and Zend Framework fill that space better today, while Drupal is a far better content management platform than rolling your own on top of a bare framework. That specialization means end users still have Free Software options for different use cases, and they're better than expecting one generic program to serve every use case.

Looking at what we've accomplished in just a few short years, I am incredibly proud of the work the community has done, both technically and socially. However, the process of getting there was incredibly and unnecessarily painful. Because we didn’t have a well-defined decision-making process, we saw increased conflict and burnout within the Drupal core developer community. Quite simply, the path that we are on will not get us where we want to be.

The new core governance model is a big and positive step forward. Subsystem maintainers and the Product Owners now have greater clarity and autonomy in their roles. But those people need to not only have but communicate, and agree upon, a clear focus for both the project and for their areas of responsibility. If we're all pulling in different directions, or worse no direction, then we're back where we started. If we can all be in explicit alignment in terms of what the goals of the project are, and are not, we can all drive toward that "Why" faster and more effectively, both for the remainder of Drupal 8's development and well into the future.

Deciding Who Drupal Is (And Is Not) For

If we want to improve developer morale and avoid defaulting to the “CMS of the Gaps”, then we need to prioritize certain tasks and use cases at which Drupal needs to excel. And that means saying “no” to other tasks and use cases. That distinction needs to be one that is both explicitly made and communicated, so that we know that at the end of the day everyone is on the same page.

This means that as a project, we need to be thinking about questions such as:

  • What edge cases are just not worth supporting due to the instability they'd cause in the system?
  • What types of applications are we okay with people not building in Drupal?
  • What features are we willing to not accept, because they make the code too brittle or complex for the other use cases we support?
  • What site is just "too simple" for Drupal to be an appropriate tool?
  • What site is just "too complex" for Drupal to be an appropriate tool?
    • There are a couple of ways we can go about answering these questions:

      One would be a revision to Drupal's mission statement to make it more targeted and actionable. The current mission statement doesn't provide any guidance in terms of what functionality to focus on, or what type of user to emphasize. A mission statement should be a statement that you can always refer back to and say "does this thing support that statement? If yes, do it. If not, say no."

      Another useful tool is personas. Personas are an important part of content strategy and user experience for a website, but also an important part of product development. They can help identify the users that are being targeted, and how to serve their needs, but, by extension, those features that are not useful to an identified persona are easy to exclude.

      Take the Content Working Group's personas for Drupal.org users, for instance. They lay out five personas: Newcomer, Learner, Skilled, Expert, and Master. The purpose of Drupal.org's content is to help people move up that scale as smoothly as possible. However, the working group makes this very explicit statement:

      For further clarity and focus primary and secondary personas were determined. Primary personas are who we design for first. Each primary persona requires their own set of features and content, and the needs of a primary persona will not be met if we do not design for them explicitly. The needs of secondary personas can mostly be met by focusing on the primary personas. However, there are a few needs specific to them that we will need to accommodate for.

      Based on user interviews, Learner and Skilled were determined as primary personas. Secondary persona is Expert. Newcomer and Master are tertiary personas.

      That is, Drupal.org is "for", primarily, Learner and Skilled users, and helping those users get to the next higher level. Content decisions should be made, primarily, to support those users. Content that would help an Expert or Master user is fine, but only if it doesn't hinder the primary goal of aiding and training Learner and Skilled users.

      That provides a clear framework for deciding not only what content and information architecture to adopt, but what to not bother spending resources on and, potentially, what content to reject (at least from high-level pages) as it would confuse that primary audience.

      Similarly, we could develop "use case personas" for Drupal. These personas are not archetypical people but archetypical sites or applications. For what type of site or application do we want Drupal to be the world-recognized obvious best choice for? And in order to achieve that, for what type of site or application are we willing to say Drupal just is not going to be the best fit and likely never will be? We need to ask, and answer, both questions.

      At the very least, we need to define some metrics to define our focus. In late 2010, on the eve of Drupal 7's release, I noted that the HTML5 Working Group has a very clear metric by which it guides its focus:

      In case of conflict, consider users over authors over implementers over specifiers over theoretical purity.

      Drupal needs to define its "constituency tie-breaker" metric and apply it consistently. Favoring different users over others in some issues, but the other way around in others, does not help Drupal succeed. It just confuses both contributors and users.

      Getting to “Yes” by Saying “No”

      Focusing on a goal is how one achieves it. Focus is a prerequisite for effectively achieving that goal. And focusing on that goal means not focusing on other potential goals.

      Few people enjoy saying "no" to someone. It's difficult. It should be difficult. But that doesn't mean we can avoid doing it. Sometimes we need to say “no” in order to make an explicit decision, as opposed an implicit amorphous one. Implicit decisions are those that get made for us by us environment, by our process, or by someone else we don't know. Those kinds of decisions are rarely the best ones. To once again quote Jack Welch, "Control your own destiny or someone else will."

      Saying “no” and saying “yes” are complementary tasks. While we can’t say “yes” to every feature, by explicitly eliminating a few, we can focus our efforts, and our decision-making about what to include or not include, on those that remain. And by building a collective priority of audiences and use cases that puts us all on the same page, we can support those users at the top of our list even better than we do today.

      So as we wrap up Drupal 8 and start looking toward 8.1 and eventually Drupal 9, I put the question to everyone: To what shall we focus our efforts on, and to what we say “no”?

      Those questions cannot be separated.

Categories: Elsewhere

tsvenson: Create your own responsibility

Wed, 15/07/2015 - 12:08

It has only gone a few days, but my first Kickstarter campaign is already delivering new learning and understanding. As I looked over what happened during the time I've been sleeping it struck me:

  • I am designing and creating my own responsibility!

 

...and I like it.

 

Digital Identity leads the way

Yes, this is clearest proof so far that my search for developing a better working Digital Identity actually works.

Many of the pieces I have thrown from my mind and out on internet are now coming back. This time with clearer structure and identifiable boundaries and guidelines to help me make the most out of previously unorganized and unstructured thoughts and ideas.

 

To name a few important thought experiments that have been developing over the last few weeks.

Have I been kickstarted already?

...think I have.

Only two nights ago I suddenly remembered that last year, when I heard Kickstarter was coming to Sweden, I started working on the campaign now launched.

That was shortly after I had written the I am a Follower and Thinker post, where I presented the idea of changing "Followers & Leaders" to the more modern and internet-adjusted version "Followers & Thinkers".

At the time I was debating the usefulness of dividing up humans in two such either/or camps as followers and leaders throughout history has made it out to be. Two camps where you can be a member of only one. Where the leader-camp is crowded, vocal and overall a very hostile well gated and guarded community to make yourself a name in.

Open has unfolded new ways

I have spent a considerable time of my years on the internet within various Open Source projects. Over the last 6+ years especially within the Drupal Community where I have met many brilliant minds to follow, think and learn from.

The last one year, or so, I have had to fight a more personal battle, occupied trying to figure out the reasons behind me not fitting into either the analog (my everydays), nor the digital (especially online) worlds.

Wherever I went, tried and started to work on something it always ended up in failures and disappointments. Wherever I poked my mind it felt I was causing more trouble than good. Not just for myself, but for practically everyone that happened to cross my line of actions.

As the number of troubles I caused grew, my health - particularly mental health - got worse. More and more I locked myself into own mind-debates, trying to figure out what the hell I was doing wrong. Nothing made any sense as:

  • All I wanted was to help
  • Make contributions to the common good
  • Collaborate to learn and make progress

 

That was back then, now I have had almost a year to think.

A year decoupled from the societally obligations and other invisible musts that humankind have created, built upon and brought with us through history and until today.

 

Make responsibility your own

No matter if this Kickstarter results in funding, it has already helped me find a better way forward.

 

 

What started out as a tidy-up exercise quickly transformed into something I passionately feel I can take responsibility for.

Something to work from to help make sense out of the world around me.

Something I also feel will work much better than anything I have put my mind to before.

It has freed my mind of many stale musts and obligations that previously drained energy and wasted time.

 

Welcome to respond to this post at www.tsvenson.com
Categories: Elsewhere

Jim Birch: Clean Up Google Docs' HTML Programmatically

Wed, 15/07/2015 - 12:00

We are often tasked with entering content into the CMS' we build for our clients.  Cleaning up the HTML of those documents is always a chore, no matter who puts them together.  I figured out that I spend most of my time stripping out what Microsoft Word, OpenOffice, and Google Docs put in there.  My desire is to have simple HTML, that will pick up the styling of my Drupal or Wordpress theme.

My searching for a better way has led me to a great script called GoogleDoc2Html created by Omar AL Zabir.  Using Google Docs and the Google Docs Script Editor, this script emails a pretty simple HTML file of the document to your Google email account associated with your Google account.

You can upload your document to Google Drive, and open/convert it with Google Docs, or create a new one.  Even with documents created with Google docs, and exported as HTML, I still have to go it and remove things like class="c0 c1" on paragraph and list items, along with a bunch of <span> tags added throughout.

Here's a screenshot of the export of a document created in Google Docs, exported as HTML, and opened in HTMLTidy run in Sublime Text:

Read more

Categories: Elsewhere

Realityloop: 5 Beautiful & Simple jQuery snippets for Drupal

Wed, 15/07/2015 - 06:16
15 Jul Jarkko Oksanen

We all know that there is an abundance of Javascript and jQuery libraries out there that provide all kinds of interesting functionalities for almost every issue you could think of. During the last few years of working on various projects I have gathered snippets, scripts and plugins that I am reusing when the need comes up. This article will demonstrate some of the better and easily re-usable ones.

1. Parallax Scrolling backgrounds

The parallax effect has been a nice thing to have for a while now and is especially useful in brochure sites or one page websites. However it has its uses in other contexts as well. I came across a simple function to apply the effect to css backgrounds awhile back. Notice that it only works on backgrounds, not on other elements.

Snippet:

  1. // Parallax scroll.
  2. $.fn.parallax = function(options) {
  3.  
  4. var windowHeight = $(window).height();
  5.  
  6. // Establish default settings.
  7. var settings = $.extend({
  8. speed : 0.15
  9. }, options);
  10.  
  11. // Iterate over each object in collection.
  12. return this.each( function() {
  13.  
  14. // Save a reference to the element.
  15. var $this = $(this);
  16.  
  17. // Set up Scroll Handler.
  18. $(document).scroll(function(){
  19. var scrollTop = $(window).scrollTop();
  20. var offset = $this.offset().top;
  21. var height = $this.outerHeight();
  22.  
  23. // Check if above or below viewport.
  24. if (offset + height < scrollTop || offset > scrollTop + windowHeight) {
  25. return;
  26. }
  27. var yBgPosition = Math.round((offset - scrollTop) * settings.speed);
  28.  
  29. // Apply the Y Background Position to Set the Parallax Effect.
  30. $this.css('background-position', 'center ' + yBgPosition + 'px');
  31. });
  32. });
  33. };

Use the speed setting to set the speed of the parallax effect.

And to simply use it:

  1. $('.background').parallax({
  2. speed : 0.3
  3. });

This is simple enough to use as a part of your Javascript scripts instead of using a library.

Jsfiddle with a gradiant to display effect. Use with an image for optimal demonstration: http://jsfiddle.net/jOksanen/7ywhcdd2/5

For more complex usage, the library that this work is based on is located at: http://pixelcog.github.io/parallax.js/

2. Floating block

Sometimes you just want to “fix” something on your website after scrolling the page for a bit. This could be a login block, your main menu or anything else.

You can use a plugin https://github.com/somewebmedia/hc-sticky to implement this behavior.

Snippet (only with the plugin installed):

$('#element').hcSticky();

D7 module that implements the behavior: https://www.drupal.org/project/floating_block

3. Smooth Scrolling to anchor links

A smooth scrolling behavior to anchor links on page is an effect that is both nice and simple. Its as simple as it sounds and gives you an animation on anchor link clicks.

Demonstration: https://css-tricks.com/examples/SmoothPageScroll/

Snippet:

  1. $(function() {
  2. $('a[href*=#]:not([href=#])').click(function() {
  3. if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
  4. var target = $(this.hash);
  5. target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
  6. if (target.length) {
  7. $('html,body').animate({
  8. scrollTop: target.offset().top
  9. }, 1000);
  10. return false;
  11. }
  12. }
  13. });
  14. });

D7 modules that implement the behavior: https://www.drupal.org/sandbox/souless/2349477 or https://www.drupal.org/project/scroll_to_destination_anchors

4. Back to top

A small effect that makes blogs and websites more user-friendly. A button that appears and scrolls back to the top of the page that you’re currently on. Especially for mobile devices its a great thing to have. This can be used in conjunction with the last snippet to create a nice smooth scroll back to the top.

Snippet:

  1. function back_to_top(selector){
  2. $(window).scroll(function () {
  3. if ($(this).scrollTop() > 50) {
  4. $(selector).fadeIn();
  5. } else {
  6. $(selector).fadeOut();
  7. }
  8. });
  9.  
  10. $(selector).click(function () {
  11. $(selector).tooltip('hide');
  12. $('body,html').animate({
  13. scrollTop: 0
  14. }, 0);
  15. return false;
  16. });
  17. };
  18.  
  19. // Call this function on your button selector.

And then you only need to create a button on your page somewhere and apply the function with the collect selector.

Back to top

And of course a bit of css to make the button fixed.

  1. .top {
  2. cursor: pointer;
  3. position: fixed;
  4. bottom: 25px;
  5. right: 25px;
  6. display: none;
  7. }

Drupal modules for the behavior: https://www.drupal.org/project/back_to_top and https://www.drupal.org/project/scroll_to_top

Demonstration and original source: http://bootsnipp.com/snippets/featured/link-to-top-page

5. Keep your footer at the bottom of the page

On many sites that I’ve worked with I’ve run to the issue that the page is shorter than the actual page. Keeping the footer at the bottom at all times can be accomplished by using perfect markup and css (https://css-tricks.com/snippets/css/sticky-footer/), but in some cases some javascript is needed due to time or markup limitation concerns.

Snippet:

  1. var footerHeight = 0,
  2. footerTop = 0;
  3.  
  4. function positionFooter(footer) {
  5. footerHeight = footer.height();
  6. footerTop = ($(window).scrollTop()+$(window).height()-footerHeight)+"px";
  7.  
  8. if ( ($(document.body).height()+footerHeight) < $(window).height()) {
  9. footer.css({
  10. position: "absolute"
  11. }).animate({
  12. top: footerTop
  13. })
  14. } else {
  15. footer.css({
  16. position: "static"
  17. })
  18. }
  19. }
  20.  
  21. positionFooter(".your-footer");

This snippet places the footer at the bottom of the page. It should be called on window resize to make the effect perfect. The snippet is a simplified version of what's presented in the link below.

Demonstration and original source: https://css-tricks.com/snippets/jquery/jquery-sticky-footer/

drupal planet
Categories: Elsewhere

DrupalCon News: Training Spotlight: Developing Healthy Web Projects

Wed, 15/07/2015 - 00:34

We are bringing one of our best-rated trainings back! If you missed this popular class at last year’s DrupalCon Amsterdam, here is your second chance to dive into Agile Scrum techniques and improve your project management skills.

Agile methodology has shown it stands a much greater chance of success than traditional project management. More and more organizations, including governments and some of the world’s biggest companies, are moving to adopt it. In this full-day course, we cut past the evangelism that exists around Agile, and instead focus on real-world practical training that you can put into action.

Categories: Elsewhere

Acquia: Start Developing Sites on Drupal 8 with Acquia

Tue, 14/07/2015 - 23:34

This is a part of our Drupal 8 Ready series of blog posts. Read what Dries has to say on buytaert.net. This post will be focused on our push toward Drupal 8 for Drupalists.

If you have been wondering when the right time is to start new projects with Drupal 8, you are not alone. We are approached with this question from partners and clients on a daily basis and have built up a many faceted decision tree for determining which way a project should go. Some of the questions we ask include:

  • When will you start UAT?
  • When do you plan to launch?
  • What authoring and integration functionality will you need at launch?
  • What is the category of the site you will be launching: Campaign, Brand, Intranet, Portal, Community etc.
  • Do you have developers proficient in Drupal 8?
  • Do you have Symfony developers on your team?
  • Do you intend to use modules outside of the top 50?

We have been recommending Drupal 7, but are now at the watershed moment where we can with great certainty recommend that users of our platform start building Drupal 8 sites for launch later this year. There are some projects that won’t be a fit, but if you are still trying to make this decision, it just got a whole lot easier.

Why should we use Drupal 8?
Most reading this post will know the major architectural changes baked into Drupal 8, if not I recomend a visit to this page: https://www.drupal.org/drupal-8.0. These on their own should give you some good reasons to make the move, but digging a little deeper, back-end developers should read about:

According to Morten DK, front-end developers should also be getting very excited about Twig.
In general, Drupal developers are loving Drupal 8, just ask core committer Alex Pott or the teams from Phase2, Amazee Labs and Chapter Three.

The Decision
Acquia has made a company-wide commitment to upgrade Acquia Platform and enable our Customer Success team for Drupal 8. This will ensure our customers can reap the benefits of Drupal 8 while having support to overcome its current challenges.

    Starting your Drupal 8 project now means:
  • Working with a reduced and immature module eco-system
  • Upskilling Drupal developers for object oriented programming
  • Retraining site-builders on the new authoring tools
  • Updating your continual integration scripts

We have a four-pronged approach to supporting our customers in this endeavour:

  1. We have long supported Drupal 8 on our development platform, Acquia Free, but as of this week, customers will be able to develop Drupal 8 sites on Acquia Cloud Enterprise and as of Drupal 8 RC1 we will be offering full production support. This will give customers the ability to leverage the full power of our 50 person, expert-laden, follow-the-sun support team in development, launch and maintenance of Drupal 8 sites.
  2. We have an internal tracking system for active module development among our many projects, allowing our PS, TAM and support teams to give you up-to-date information on the likely release schedule for critical modules.
  3. We have Drupal 8 enablement and migration packages available to speed up your new site development and Drupal 6/7 migration.
  4. Shortly we will be launching our updated Drupal certification programme for developers and site builders for Drupal 8.

The future of Drupal 8 on Acquia
At Acquia we are always thinking about how we can better serve developers. We have put years of research effort into developing better tools Drupal 8 and we have some very exciting releases in our short term pipeline:

  • A new Drupal 8 version of our open source drupal distribution, Lightning. This will be released by the end of the year to give developers a standard architecture and starting point for developing amazing Drupal 8 sites for enterprise (Full Disclosure: This is a shameless plug, as I am the new product manager for Lightning).
  • Upgrades of our existing products Acquia Lift and Acquia Cloud Site Factory to Drupal 8.
  • A completely refreshed automated build system in Acquia Cloud Enterprise with both new APIs and a GUI to enhance your development velocity on Drupal 8.

Thanks @EclipseGc and @webchick for inspiration. I hope this post has helped you make your decision.

Acquia is going all in!

Tags:  drupal drupal 8 developer acquia drupal planet
Categories: Elsewhere

Drupal Watchdog: Five Ways to List Content

Tue, 14/07/2015 - 22:48
Article


Drupal is exceptionally good at creating exactly the right data model for your content. As you begin modeling your content, you should also think about how you will retrieve and display, or list, the content on your site.

This article explores five ways you can list content on your site once it has been created.

  1. Curated lists of content: Menus
  2. Categorization of content: Vocabularies and taxonomies
  3. Discretionary lists of related content: Views
  4. Wayfinders for people: Breadcrumbs
  5. Content maps for search engines: Sitemaps

The experts will already see some flaws with my categories: you can use Draggable views and Nodequeue to manually curate Views, and you can use Menu block to improve the wayfinding experience. Let's stick with the broad strokes for now though.

Curated Lists with Menus

Menus allow you to manually curate a list of content which exists on your site, almost like a Choose Your Own Adventure of links (See Figure A).

Menus are typically used for areas of static navigation. For example, the primary menu of your site, a set of utility links (log in, log out, my account), or the legal section (ToS, privacy policy).

Once a menu has been created, it becomes available as a block, which you can place into any region of your site (See Figure B).

To extend the usability of the core Menu module, you may want to use one of the following contributed modules: Menu block; DHTML menu, Superfish, or Nice menus; Menu position; and Navigation 404.

Categories: Elsewhere

3C Web Services: Tips to minimize Form Spam on your Drupal Website

Tue, 14/07/2015 - 21:06
If you have forms on your website that the public can submit then you will, without a doubt, have to deal with form spam. Fortunately there are some easy steps you can take to greatly minimize spam submissions on your website.
Categories: Elsewhere

Acquia: Sustainable Energy in the Cloud - New AWS Wind Farms

Tue, 14/07/2015 - 20:25

Yesterday Amazon Web Services announced its largest sustainable energy initiative yet, and perhaps the most ambitious in the cloud industry: building a 208 megawatt wind farm called Amazon Wind Farm US East in North Carolina. In conjunction with the already launched Amazon Solar Farm US East this pushes AWS’s largest region towards being entirely powered by sustainable energy, and demonstrates AWS is actively meeting its lofty green goals.

AWS’s 2014 commitment to have 100% of its global infrastructure powered by sustainable energy is exactly the type of “Think Ahead” ambition that solidifies it as a key strategic partner for Acquia. AWS leads the public cloud pack by offering three completely carbon neutral regions including US-West (Oregon), EU (Frankfurt) and AWS GovCloud (US). Since Acquia Cloud runs in 7 AWS regions, and we are extensive users of the US-East region, we are thrilled to see advances in power generation for the region.

In the years since AWS’s original sustainable energy announcement they have been aggressively expanding their use of sustainable energy and pushing the cloud industry towards a brighter future. In May 2015 AWS passed 25% of global infrastructure consumption coming from sustainable energy sources and they are on track for making 40% by the end of 2016. With Gartner reporting that Amazon Web Services is 10x larger than its next 14 competitors combined it is evident that Amazon is pushing the industry in a big way towards sustainability.

Acquia shares AWS’s thinking that “the greenest power is that which is not consumed.” Acquia Cloud’s elastic scaling allows our customers to benefit from efficiently running their workloads in the cloud. According to analysis by AWS and others, cloud customers run 77% fewer servers, consume 84% less power, and reduce carbon emissions by 88%. The promise of the cloud is to efficiently and nimbly move around workloads, so we’re excited to see results such as these.

At Acquia we’re constantly striving to improve our own energy efficiency and sustainability. We’re thrilled that AWS is delivering on its promises. Wind power accelerates the cloud ecosystem and is important for all involved.

Tags:  cloud green sustainable energy aws acquia drupal planet
Categories: Elsewhere

Four Kitchens: Porting Site Audit to Drupal 8

Tue, 14/07/2015 - 20:25

As part of Four Kitchens’ ongoing commitment to Drupal 8, I’ve been collaborating on the next generation version of Site Audit, a project for analyzing Drupal sites for best practices. Earlier this year, Site Audit was selected for inclusion in the Drupal Google Summer of Code 2015.

Drupal
Categories: Elsewhere

OSTraining: Connect Drupal and Views to External Databases

Tue, 14/07/2015 - 20:16
We often get asked whether Drupal can show information from other websites.

In particular, people want to pull information and display it through Views.

The Views Database Connector module makes this relatively easy. Let's show you how it's done.

Categories: Elsewhere

Commercial Progression: Paragraphs are Drupal's answer for structured content

Tue, 14/07/2015 - 19:31

About a year ago, Chris pointed the dev team toward a cool new module called Paragraphs. Since then, we've played with it on test sites, rolled it for use on sites for clients (including some big ones!), and tried combinations of bundles and fields that push the limits.

Here are some of the cool things we've done with Paragraphs:

Made a feature

Part of our slick workflow of near-instant enterprise-grade local dev sites/repos using compro_install_profile and compro_utils is making Features for the functionality we use on multiple client sites. This allows us to develop sites quickly, and gives us standardization.

Installing compro_paragraphs makes sure:

  • Paragraphs, Media, and a few other modules are ready to go
  • Bundles for long text, blockquotes, headings, and image/video get created
  • Templates and styles abide by reasonable defaults

The feature depends on compro_content, which makes available input formats, WYSIWYG settings, image formats, etc.

Integrated it with fanciness

New features, like compro_highlight, include paragraph bundles (albeit without a strict dependency). This gives developers an easy implementation, regardless of whether the site they're working on uses paragraphs.

One thing that's cool about compro_highlight is that the single entity (a hero or call to action) and collection of entities (slideshow, gallery, etc.) are of the same type, so a bundle with an entityreference field (and inline_entity_form) can handle a ton of different configurations; especially when used in conjunction with entity view modes!

If a site needs regular content, along with the ability to insert slideshows and calls to action throughout the body, additional features like compro_highlight and its built-in paragraphs support are a great answer.

Extended the formatter

All the tweaks below are part of paragraphs_formatters module.

Let's say you wanted the teasers in the blog listing to only show text. Or maybe you want blockquotes to appear as "pull quotes" in the sidebar.

Our extended formatter lets you pick which bundles to show, how many, and can start from a delta other than zero. It makes a view-mode-centric dev workflow just that much easier!

Tweaked the widget

One of the reasons Jeff Eaton gave for why Paragraphs isn't his choice for the body field is that the UI is a bit more cumbersome. The field widget we've got isn't a knock-out-of-the-park, but it shows that there's plenty of room to make paragraphs-based content entry more intuitive.

It's mostly CSS, aside from changing the weight of some buttons!

Made them reusable

By default, the title of all paragraphs is "Paragraphs item". We made a little callback that give more information about the paragraph, making it possible to use paragraphs in entityreference fields.

If you wanted to write something once but display it in a bunch of places, this little label callback could be key! You could even do it in a paragraphs bundle.

Oh! And if you find yourself writing tons of label callbacks, give label_maker a shot.

Other stuff!

We've done many variations of paragraph bundles:

  • Block reference bundles
  • Classing link fields for button/CTA bundles
  • Classing text bundles to display all fancy
What's next

There's a lot more cool stuff to do:

  • Start playing with Drupal 8 and paragraphs
  • Refine the field widget
  • Dream up more formatters
  • Enhance token and views support
  • Hotkeys for widget UI?
  • Ability to insert interstitials?

We're looking forward to seeing what the Drupal community does with paragraphs, and are excited to contribute in any way we can.

Categories: Elsewhere

Doug Vann: 5 Things I Have Learned From Delivering Drupal Training [updated]

Tue, 14/07/2015 - 15:11


I have so many amazing adventures as I travel around delivering Drupal Training to Universities, Corporations, Governments, etc. I've always wanted to blog about how it is such a learning opportunity for me. It is an enriching experience to sit in front of a new class and start down the road of transferring knowledge. I hope you enjoy this 1st pass at some of my experiences!

ONE:
Train the trainer!
That's the first thing I’ve GOT to say. The students in my class, no matter how "NEW" they are to Drupal, have invariably encountered something that I have not. Whether it’s a module that filled some very specific need, OR some piece of news in the Drupal ecosystem, or some awesome feature that their vendor built into their site. It never fails! I even learn from their questions. They ask how to do such-n-such or how to make this thing change based on that thing. Together, as a class, we approach questions like that and we architect a solution. I learn something new every day I spend with them! 

What’s fun is…. I take the new discoveries from the last engagement and incorporate them into my next Drupal training! That evolution of content and presentation really snowballs the learning-value as time passes!

TWO:
Show me where it hurts!
We all know that Drupal [as does any solution] has its pain points, counterintuitive elements which work against you rather than with you. Sure… We've addressed many of these over time. Often I'm able to point out a module that solves, or somewhat helps, a UI issue. But there are times when a user will make a mistake and not select what should have been selected or select the wrong option. This is discovered minutes later when their sandbox site is not doing what mine, or their neighbor’s site is doing. In this, I discover yet another GOTCHA in Drupal. As seasoned veterans, many of us wax over the lengthy UI pages of adding fields to content types and configuring Views. But each class I teach reminds me that these powerful configuration pages are a land mine where lesser experienced individuals could potentially cause a detonation!

No one gets hurt in my Drupal training BUT we are very honest about some of the challenges of navigating these very powerful configuration pages. Each time I learn a new GOTCHA, I preeminently strike against it in the next class! :-)

THREE:
You want WHAT?!?!?
OMG! I’ll try to make this brief. Whether it’s 1day or a full week of Drupal training, we wind up spending some amount of time in what I like to call, “Stump the Chump!” The intent is not to trick me, but our QnA sessions very often turn into a “How would you build super-dee-duper complex functionality X & Y & Z?” When this happens, it’s rarely some fanciful what-if scenario. No. It is a sincere question that addresses a real need. Once again we take some class time to architect this solution using what we have learned AND borrowing from my many past experiences. Oh yah… And Google is REAL helpful at these times as well! :-)

FOUR:
The age of discovery!
Many of us know that the “Discovery Phase” is possibly THE MOST important phase of the project. I find organization after organization that wound up getting something from a vendor which they didn’t expect because they never actually told the vendor what they wanted. So many questions were unasked and unanswered that the final delivered product only barely meets the client’s needs. In better circumstances, I see a site that meets way more expectations in functionality BUT the usability is atrocious. What do I learn here? I learn how to ask better questions on my own development projects. In reality only a Vulcan-Mind-Melt would allow the developer to truly know what the client is thinking, BUT short of a sci-fi solution, there is a real solution. We can ask better questions and guard against the client’s assumptions. I train organizations who have worked with some of the best shops in the Drupal industry. It becomes very clear to me that some clients make it very difficult for the shop to do proper discovery. So I do what I can to encourage all of my clients to participate wholeheartedly in that process as it is the best insurance against unsatisfied expectations down the road. I listen to their past experiences and find out why things didn't go well. It’s rather eye-opening what is going on out there!

FIVE:
DevOps FTW!
When delivering Drupal Training, we invariably wander into staging and deployment. Sometimes it is on the list of topics, other times it just forces its way in. What have I learned from this? I have learned that far too many organizations are shooting themselves in the foot by trying to get their IT department to make this work for them. Time and time again, I see Higher-Ed, Governments, and Private Industry hitting their collective heads against the wall trying to work against internal processes and expecting non-web ppl to suddenly be a valuable partner in the publication of important data on the site. This says to me that the need for effective tools to get the job done is greater than anyone truly appreciates. Services like Acquia Cloud & Pantheon & Platform.sh are not just cool toys or fancy tools, but thet are actually essential tools that more ppl need to be using. Seriously... I have seen A LOT of time, energy, and money wasted on trying to get a site launched or updated or major changes instituted. I am truly saddened to watch this happen over and over again. What am I learning here? I'm seeing that DevOps is an afterthought. I'm seeing that there's disconnect between the Marketing/Web ppl and the IT ppl. I'm seeing a reluctance to move these operations off to a third party. I can tell you... When I demonstrate Pantheon to the class I am often told, "We NEED this, but the CTO would NEVER allow it!' So sad...

Alright… There you go! Five things I have learned while delivering Drupal Training. I may have to publish more in the near future!

How about you!?!?!?!?!?

I know I have many friends out there who spend a lot of time spreading the power and knowledge of Drupal.

What are you experiencing? When was the last time you had to say, “Wow! That’s a new one on me!” to a room full of people who collectively have spent less than 1/2 of the time you have in Drupal-Land! :-)

Comment below and share your stories!

Drupal Planet

View the discussion thread.

Categories: Elsewhere

Drupalize.Me: PHP Classes and Objects

Tue, 14/07/2015 - 15:02

Object-oriented programming (OOP) is way of organizing your code to be more efficient, and it takes advantage of some really nice features in modern versions of PHP. One of the basic concepts of OOP is, not surprisingly, an object. Directly related to working with objects is understanding PHP classes. Drupal 8 is taking big steps to move to an OOP architecture, and so you will get very familiar with both of these as you start to jump into Drupal 8 development.

This tutorial, based on the video Create a Basic PHP Class, will explain what a class is, show you how to set up a class, and look at a PHP object. By the end of this tutorial, you will be able to create a class, an object, add a property to your object, and set the value of the property inside the class.

Categories: Elsewhere

Acquia: Drupal Modules Can Improve Site Performance

Tue, 14/07/2015 - 14:54

Drupal has modules for just about everything, including improving site performance. You can use these modules to see what's going on with a site and figure out the changes needed to increase Drupal's speed. As part of an ongoing series about ways to improve Drupal website performance, let’s take a closer look at the modules that can make your life a lot easier.

Find the Bottlenecks: Devel

Before trying to improve a Drupal site's performance, it's important to know where the bottlenecks are in order to avoid making random changes. The Devel module provides sharp insight by showing information such as how many queries ran to build a page, how long execution took, and how much memory was used. This information is especially helpful for assessing the impact of changes such as installing and disabling modules. Even if you don't understand all the detailed information the Devel module provides, seeing trends in the numbers will, over time, be useful.

Improve Caching: Entity Cache, Views Content Cache, Panels Hash Cache, and Panels Content Cache

Changing Drupal caching behavior can have a big impact on performance. When applications have a large amount of entity data (information on things like users and content), using Entity Cache can lead to large performance gains with almost no configuration. It's less useful if there's only a small amount of entity data.

To control other cache settings, Block Cache Alter lets settings for each block be configured individually. This allows for more fine-grained control than the settings on the Performance page.

Another change that can improve performance is using a cache based on content-driven expiration, rather than discarding cached data after a specified amount of time passes. The Views Content Cache, Panels Hash Cache, and Panels Content Cache modules provide this functionality.

Improve Database Usage: Views Litepager and Memcached

For sites that use the recommended InnoDB MySQL storage engine, Views Litepager speeds up the creation of pages for views. Rather than creating links to every single page, it provides just “next” and “previous” links. It's incredibly simple and beneficial. The drawback is that site visitors can move only one page at a time through a long list.

Another great addition is Memcache, which lets you integrate Drupal with Memcached, a free and open source, high-performance, distributed memory object caching system that is available on Acquia Cloud. The combination lets Drupal use the database only for large, heavy content, and caches other information elsewhere. To get the best performance from Drupal, it's really important to move as much work – caching and logging – off the database so it can focus on providing the content.

Standard Tools for Performance

There's so much benefit from some of these modules that they're practically standard at many companies, including here at Acquia. Almost everyone uses Devel. Acquia uses Memcache in its cloud platform.

But every organization is different, so find the tools and configuration settings that work for your needs and make them standard across all your development projects. That'll free up time for developing instead of tuning performance.

Tags:  acquia drupal planet
Categories: Elsewhere

Hook 42: Hook 42 + NYC Camp + The UN = All Multilingual, All The Time

Tue, 14/07/2015 - 10:08
Tuesday, July 14, 2015

We are excited to be headed to NYC Camp this week! We are ready to rock the UN with our sessions and trainings... all capped off with a Drupal 8 Multilingual (D8MI) Sprint.

Multilingual Drupal Sessions

Both Aimee & Kristen will be presenting sessions - one for Drupal 7 & one for Drupal 8:

Multilingual Drupal Trainings

In addition to our sessions, we will be hosting TWO hands-on trainings:

  • Drupal 7: On Friday, July 17th from 9AM to 1PM, we will be running a shorter version of our D7 hands-on multilingual training. This is similar to the one we ran at BADCamp in 2014. Also, if you want even more Drupal 7 multilingual training, check out Lingotek's all day training on Thursday, July 16th as well.
     
  • Drupal 8: We will also do our Hands-On Multilingual Training for Drupal 8 on Friday, July 17th from 2PM to 5PM. If you join us after the Drupal 7 training, you will really see a world of difference between creating multilingual sites and D7 and D8.
Multilingual Drupal Sprinting

At the end of the week, on Sunday July 19th, we are hosting a Drupal 8 Multilingual Initiative (D8MI) Sprint. Sign up here if you want to come sprint with us!

We can’t wait to see you all there!

 

Hook 42 Topics:
Categories: Elsewhere

BlackMesh: Sprint Planning Part 1: Planning and executing a focused sprint that helps move an Open Source Project forward

Tue, 14/07/2015 - 08:52
Intro

This blog is based on a transcript of a talk given by Cathy Theys (YesCT) and Peter Wolanin (pwolanin) at DrupalCon Los Angeles Planning and executing a sprint that actually helps move an Open Source Project forward. There is a video and the slides are also available. This blog has been edited and is not an exact transcript, but it has a conversational tone since that is the origin.

This blog is part 1 of a 3 part series about different types of sprints, with different purposes. Part 1 is about a small focused sprint. Part 2 will be about small local general sprints. Part 3 will be about giant DrupalCon-like sprints with a mentoring focus.

Types of sprints: focused

A sprint is a focused effort for a short period of time.

Generally, Drupal sprints last from two to three days up to a week.
Photo credit: Pedro Lozano

At the end of DrupalCon, usually on Friday, there is a tradition of having a huge sprint. As time has gone on, this large sprint focused more and more on mentoring new contributors, getting people involved in contributing to Drupal, and celebrating people who are making contributions for the first time. Big sprints, like those at DrupalCon, provide a good opportunity for a lot of people to come together. Besides the large sprint, there are also smaller groups doing focused sprinting, but often, they do not have enough time to achieve larger goals.

What we want to talk about is a focused sprint. This is where you have a small group of people (that will fit in one room) who meet for two, three, four, or five days, working together to try to get some things done.

Background: Drupal 8 release plans

A lot of focused sprints have been organized around the Drupal 8 release cycle to try to knock the number of open critical (release blocking) issues down to zero, because we need to get to zero so we can get a release candidate.

What you might see if you look at these images in detail is that when we get to a release candidate, we actually expect to find more criticals to work on.

It is important to not only look at critical issues, but also at the things that people rated “high” as bugs. Oftentimes, if you start digging into a highly-rated bug that is not critical, you will discover it is critical.

Conversely, you might look into a critical and discover that it is not so bad; it is not going to severely impact the release. We could get back to it later, and it could be downgraded and stop blocking the release.

Addressing both of these categories of bugs is important at focused sprints.

Basics

When you organize the event, make sure these are checkboxes that you have in your planning phase.

Venue/Facilities Venue

The most important thing to have is a good venue and everything that goes with it in terms of facilities. During a focused sprint, you want to keep people watered and fed.

Dedicated Space


Photo credit: Phase2 cropped cc

This means having a dedicated space to make this kind of event successful.

Do not try to do it in a coffee shop or any place where there will be distractions, such as people walking through.

If necessary, you might have to pay for the space, which can be a good use of resources for making the event a success.

Electricity


Photo credit: Karl Baron cropped cc

Power strips!

Tables


Photo credit: Kristen Pol cc

Provide tables and chairs so people can be comfortable. They need to be able to face each other, have conversations, and move the chairs around as their needs change during the day. If possible, consider whether the tables and chairs have good ergonomics for computer work, and if there can be some standing desk space.

Drinks


Photo credit: Phase2 cropped cc

Beverages, coffee. A common complaint is coffee service being cut short.

Make sure you have beverage options. Either provide beverages to the sprinters or have someplace available for them to get beverages.

If you are serving beer or wine later in the day, make sure you also get some good quality non-alcoholic beverages so people do not feel excluded if they do not want to drink alcohol.

Natural Light


Photo credit: Tamás Szügyi cropped cc

Natural light. I want natural light! I want to recover from my jet lag because I might have traveled from a distant place. I want to be able to get a sense of how the day is going, and what the weather is like outside. I want to stay awake. Natural light helps. So, instead of a basement cave, pick a space for the sprint that has natural light.

Writing boards


Photo credit: Phase2 cropped cc

You should have writing boards, whiteboards, or something that people can collaboratively scribble on. Collaborative whiteboarding moments can actually be the most productive moments in the entire sprint, so make sure that you have made some facility for that. Do not leave that up to chance.

Climate control


Photo credit: Frédéric Marand cc

As with natural light, natural air can be very useful for keeping people awake. Make sure that the space is going to be comfortable, and people are not going to be sweating or freezing.

Parking


Photo credit: Daniel Oines cc

If you are organizing an event, parking can be important for people coming and going during the day. Do not make them walk a mile if they had to drive there. Make the parking options clear and include information about parking costs.

Internet


Photo credit: Alexander Baxevanis cc

The thing that is obvious - but we will just say it - we need Internet.

Wi-Fi is convenient.

You should also have a wired back up.

Spend time checking out the venue beforehand to make sure that the bandwidth will hold up to even a dozen people doing hard core work.

Contact freenode if you are going to have a fairly large event because freenode will sometimes block people if there are too many connections to IRC from one IP address.

Drupal projects can have automatic tests that run every time a code change is proposed on an issue. The Drupal Core test suite can take 15-45 mintutes to run, and sometimes there can be a queue of issues waiting to have the tests run on a patch.

Make contact with Drupal Association infrastructure team ahead of time so you know who to reach out to in case testbots get backed up, so that sprint participants are not sitting around all day waiting to see if their patch passed the tests.

Food


Photo credit: Mads Danquah cropped cc

Food is important. Bringing food into the venue is convenient for people who want to keep working.

Deconstructed food, or "assemble your own sandwich, salad, or something," is a great option because it lets everyone meet their own needs. Also, you do not have to have separate lines or separate things prepared ahead of time for the vegans, the vegetarians, and the paleos - whoever they are.

It is helpful if the sprint is in a location where people can go out and quickly get dinner and come back, so they do not feel like once they have left the sprint that it is too much trouble to return.

Convenience and quality matters

A lot of the people who are at sprints are there on their own time. We want to respect them as people, and what they are offering, and what they have had to go through to get there. So, it really matters that things like sprint location and food are convenient and high quality.

Community building


Photo credit: xjm cropped

It helps to do some super fun things at events and between events to keep people communicating and working really well together.

Having colorful post-its for issues on poster boards or chalkboards, helps organize things and also is fun.

We have all different fun of ways of identifying people at sprints. We have used T-shirts or leis more mentors, and bunny ears for people working on criticals.

People travel from far away and we have a tradition of bringing chocolates from your home country and sharing them with the other people at the sprint. It reinforces the differences and similarities that we all have. When we come together it is nice and fun.

We do not work all day. Integrating something from the local area into the sprint provides a good break. Being able to go out for dinner and come back, is a nice break, yet keeps everyone together. The conversations that we have when we are not tied to our computer screens can be really brilliant.

Looking back

So far, we covered the basics. A lot of what we are recommending have been things that have worked for us in recent sprints, like Drupal Dev Days, the New Jersey sprint, Drupal Cons, etc.

Next, we are going to talk about things that people might not know. But we hope once you read them you will say, “Oh I didn't know that you did that when you were planning a sprint, but that really makes sense. I'm going to do that too.”

Things you may not know (about sprint scheduling and logistics) Catalysts

How the heck do sprints come about? Is it just a calendar thing and a meet-up and then people show up? No!

A person + burning interest

Somebody has to have the idea to have a sprint and the catalysts are usually that someone has this overwhelming burning desire to get a particular thing done that is bothering them. They are thinking of it all the time, and they are thinking, "We really need to address this."

Maintainer aware of gaps

Maintainers or release managers will be aware of gaps in the current work that is being done. They may say, “We are doing really well on some issues, but nobody is looking at this other set of issues.”

The topic of the sprint could be something that you want to use the "getting together in the same physical space" to accomplish. It might be a problem that is really vaguely defined, or super scary, and is not moving forward organically on its own.

Funding

Another trigger for holding a sprint can be that funding is available, either through local companies, sponsors, or through D8 Accelerate. Sprint organizers will often use that funding for plane tickets to bring people in, provide them a convenient place to stay, and pay for food at the sprint.

Planning and Preparation is Key

The more planning we do, the better the event is going to come off.

Identify a broad topic and specific goals

Identify a topic area before the sprint. Saying, “Hey let's work on Drupal 8,” is not clear enough. It is important to focus on a specific area and identify distinct goals within that area.

Triage issues ahead of time

Look at the issues and triage them. Make sure that the issue summaries are up-to-date. Relate issues together to provide context. Identify which issues are blocking other issues. Doing this work ahead of time within that special focus is going to make the sprint much more effective when people arrive to do work.

Committer communication helps

It helps during the planning to have contact with a committer to your project. You can get advance buy in from a committer like, “Hey, we were thinking of having a sprint on ‘special focus.’ Do you think that is a good idea?”

The committer can provide guidance to make sure you are going in the right direction.

When you talk to the committer during the planning process ask them if they are available to attend, and which days. Or, if they might be available to attend remotely. When you are working really fast (because you have all these people gathered together) and you have issues that are blocking other issues, having responsive committers is amazing and allows you to keep up the momentum at the sprint.

With Drupal 8, we are really lucky because we have committers that are responsive. Our RTBC queue (list of issues that are "reviewed and tested by the community") is under control most of the time, but all the committers are paying attention to it.

Committers can make a powerful difference at a focused sprint, so touch base with them and let them know what is happening in advance. Having a committer's participation can be a big advantage, but is not a requirement, and the importance depends on the nature of the sprint.

Example timeline Six weeks out

Far in advance we can do things like: advance planning, defining focus, and identifying and inviting attendees.

Three weeks out

Closer to the sprint, doing hangouts with the technical lead and maybe a maintainer or somebody else who is project managing the sprint to make sure things are going well.

One week out

Do another check in. Have some initial debates about the issues like, “Is this really blocking this? What is this really about? I do not understand this thing.” Get that done ahead of time before you have all these people arrive.

Get one or two domain experts involved. If they can work a few days in advance, especially when there is a blocking issue that will unblock all these other things, that can really help out a sprint.

Hours of planning

Planning takes time. The sprint organizers are going to be doing much of the volunteering and logistical planning. If it's four people getting together and talking over the course of several meetings ... adds up a lot of hours!

Doing some of the initial work on the blocking issues could be another four people working 10 hours in advance of the sprint.

Funding

While planning, work on your funding. Check on grant applications. If your sprint is happening at a Drupal camp you might be using some of the camp money.

Providing scholarships to key attendees can be a valuable use of resources. Help make arrangements, like hotels and airplane tickets, for people who are going to fly in.

At the sprint

Here are five things you can do at the sprint to make it effective.

Communicate: Track key issues

Keep track of the issues that are within the scope of the project and their status in a way where everybody can see it. Boards on the wall work really well for that. Keep track of which is blocking which. Keep track of who is working on them. You can have more than one person working on the same issue. Keep track of what still remains on the issue that needs to be done.

Communicate: Make sure updates get posted on the issue

Any work that gets done at the sprint also needs to be posted back up on the issue. This is good for documenting how the issue evolves over the days, and useful for communicating with people who are remote. Even though your sprint is local, there are people all over the world paying attention to the issues you are working on. We do not want to keep the developments on an issue secret from them.

We want to have good communication with everyone because when we go to sleep, another part of the world wakes up, and they can work on things. Later, when we wake up, we can make more progress. This will not happen if we do not post updates in public on the issues. A good time to do this is right before you break for a meal. Right before lunch, upload your broken things and make a comment like, “I wasn't sure about this and maybe this… Coming back to this later.” Do this whenever you are just stopping work for a while. Your future self will thank you because you will have forgotten what you were thinking then. Overall, this is good for communicating with the world, and also yourself.

Communicate: Check-ins during the day

Even during a small sprint, there is going to be a lot of different things happening. We want to be communicating really well throughout the day and checking in with the different people, working on different issues, asking them what is blocking them, what do they need and then trying to get them their help.

Sometimes people who are working get a little too "heads down" trying to solve things themselves. A little bit of help from outside can help speed up what they are doing.

We also want to check on the testbots and make sure that the tests are running okay.

Communicate: Take pictures

Documenting the sprint is great because usually sprints are energizing, fun, and productive. People who are there want to look back on that and say, “Yes, that was awesome when we did that. I remember when we did that. That was so great!”

Not everyone will want their picture taken. Be respectful of their wishes. Announce when you are taking pictures and let people know you intend to share them online.

Pictures are also good for communicating with other people outside the sprint because somebody could be listening to the chatter about the sprint. When they see pictures, they will know what a sprint is like. That makes them less afraid to attend one in the future. You are not taking pictures to get people to come to your current event. You are taking pictures so that you might get people coming to your next sprint.

Communicate: Daily update

At the end of each day, it is helpful to have one person write a summary of the day. “This is all the stuff we got done,” “These things still need to be done,” and “We are really unsure about this.” Post the summary online for everyone to reference. This makes compiling a final report of activities at the end of the sprint much easier. It also keeps attendees up to speed, because if I am working on one thing, I may not know what other people are doing.

When we write things down like that, it allows us to celebrate the successes that we have had. We tend to focus on is what is broken and what we need to do next, so it is really good for us to see all of our accomplishments.

Follow-up, after the sprint Publish a summary

After the event, we want to communicate what happened. This is sometimes required depending upon your funding. It might be required by a grant, or if a company gave you money, they may have done so in exchange for you writing a blog about the event.

A couple examples of recap posts are the Portsmouth NH theme system critical sprint recap and the Princeton Critical Sprint Recap.

Write-ups like these enrich the community's knowledge and help transfer your experience to future sprints. Summary write-ups are really good investment. Be sure to take notes!

Check on issues that got close but not committed

After the sprint, there is still more work to be done. This work can be really effective and a significant part of what happens to move issues forward.

Check on issues that got really close but are not yet committed. See what is blocking them and just nudge them along and finish that off. Because you invested so much work at the sprint, you want it to pay off.

D8 Accelerate

The D8 Accelerate program is a great example of how the Drupal Association is trying to push Drupal 8 forward. The last few months of development before a release candidate are the hardest because the problems are no longer fun. The problems are difficult. D8 Accelerate provides the sort of impetus and ability to hold these sprints. These events are to push forward those issues that are not getting solved organically. It is going to get Drupal 8 done much faster than it would otherwise.

https://www.crowdrise.com/d8accelerate to donate. And, if you think about organizing one of these sprints, you should definitely apply for a grant. For the New Jersey sprint we applied almost as soon as the program was opened. We got one of the first grants (which was very exciting). It also gave us avenues directly to people like Angie Byron, who is a committer. Angie got involved and helped us on a daily basis to move the issues we worked on toward being committed to the project.

Make it even more effective Initialize, with specific people

Focus on getting specific people to your sprint. Even before you pick a date, you need reach out to sprinters. Adjust the dates of the event to accommodate the sprinters, if needed. Make a list of people you must have at the event and make the entire event conditional on those people rather than defining an event and hoping that they will show up. If you get some of those people to confirm, their attendance will encourage additional participants to come.

Once you have gotten some of these people confirm, publish their names. Make sure that they are okay with you saying they committed to come on these days. Sprint organizers can then tell potential attendees they will get to work with someone who is an exciting person to be in the room with, someone who can get a lot done. These people are the key, rather than the date of your event.

Committer/Maintainer Communication

With a Contrib project you can reach out directly to the Contrib maintainer. For Core, get in touch with one of the Core committers, or ideally a couple of them since they may have gaps in their coverage. If at all possible, get them to attend.

Going to events like Dev Days is great because you usually get two or three committers in the room. It is amazing how fast things get done when you are sitting next to a committer. You will say, "That is ready to go. It is blocking this other issue," and after a careful review they will commit it to Core. Then, you can move on to the issue that was blocked. You do not have to wait for them to notice that a blocking issue is in the RTBC queue.

The challenge is to recruit people that have a working relationship with the committers, or the Contrib project lead. Ideally, recruit the Contrib project lead to your sprint, someone they worked with before, or someone who has a good relationship with one or more of the Core committers.

When you have an open communication channel with a committer, before a sprint it will improve the chances of the sprint being successful. And, during a sprint, it will reduce the time being blocked while waiting for issues to to be committed when they are ready.

Particular People

Ask particular people.

Say no sometimes.

Also, you need to be prepared to say no to some people.

If you are holding a focused sprint and you have someone who says, “You know what? I’ve heard about this Drupal thing and I want to come and get my machine set up and really help.” You should be prepared to say, “This is not the event for you. I appreciate that you are interested. Here’s another event where you can do that, where you can get set up and get started. This is going to be a focused event and we need everyone to come in already up to speed working on Core.”

Have some generalists

Attendees do not all have to be subject area experts. It is great to have some people there who are generalists, who are going to work on issues as needed. They are going to work on the issue summaries with the goal of understanding how the whole process works.

People should be familiar with contributing

Everyone at the sprint should be up to speed on day one. You do not want to get distracted trying to help people debug their local LAMP stack.

Example

At the New Jersey sprint, two or three people were generalists out of about 10. That was a good mix because those people could pick up a lot of the smaller issues, move patches forward, and fix things that were in need of fixing without having to have a deep background. The people with the deep background would get a basic fix in place and move between issues, moving them forward. Other people jumped in and dealt with additional things, such as writing tests.

Writing automated tests or performing manual testing is often the most important part of getting a patch right. You do not have to be the deep subject matter expert to understand what is supposed to happen, and how to write a test to test it.

Focus means not mixing in new contributor instruction

If people are going to need help with the contribution process, you should probably divert them to a different sprint event.

Participants need to trust the time will be productive

In order to make one of these events successful, you are targeting these key participants and they need to trust you as the event organizer that their time is not going to be wasted. It might feel like we are talking about a lot of time invested upfront to get the sprint planned well. For example, at least four people probably nine hours, or more, each the few weeks beforehand plus hours working on the issues before the sprint happens. This work is essential so that the people who participate feel that they are going to have a very productive time at the sprint, because all the groundwork has been laid for them.

Organization yields success

If you are organizing one of these sprints, it is not just the logistics. All this pre-planning, issue triaging, and communication ahead of time, laying the groundwork for accomplishments that we can celebrate at the end of the sprint, is what is going to make it successful.

Project Management

Project management is an area where we have felt real gaps at some of the most recent sprints. We did not have someone whose sole role was to be a project manager. We end up assigning this role to someone who was also a subject expert, or a committer. That person spends a lot of their time managing the sprint, managing issues, and keeping track of things writing summaries. This often means that one person is double-burdened, and gets burned out by the end of the sprint.

This is an area where we could use help from project managers or people with that kind of skillset. People who might not be interested in writing patches, but are willing to attend sprint planning meetings and the sprint to help keep the issues on track.

There may be people who would be willing to participate as a project manager at sprints, but they do not know that they are needed, or how to get involved. For a project manager to be effective at a focused sprint, they would need experience similar to other participants, like how issue queues function and their own experience doing project management in the issue queue of the project being sprinted on.

For Drupal Core specifically, experience would mean: contributing in the Core issue queue, (which includes valueable work other than making patches). And, also includes familiarity with the release cycle, policies like upgrade path and governance (which are posted in the groups.drupal.org Core group), and core gates.

Project managers can gain this issue queue experience by shadowing an organizer at a focused sprint, attending sprints with a mentoring focus, attending core mentoring office hours, and reaching out to other contributors asking how they can get involved.

The Human Element

The human element in all these Drupal events - the Drupal community - is essential. You have a lot of volunteers giving their time, so do not make them bitter, burned out, and sad. Do not ask people to volunteer and also to pay for the event. Do not be afraid to go out looking for sponsors and ask for money. Allow people to have their own lives. If they need to show up at 10:00 AM and leave at 5:00 PM, even if the rest of you are working all evening, that is okay. Let them have their family life. Let them do what they need to do. Step back and recognize that any contribution you get is valuable and should be appreciated.

Lingering and Continuing Tasks

The follow-up at the end of the sprint can be more important than what happens at the sprint. Being in the room together with that group of people allows you to form a consensus. That consensus, that plan can form the basis of work that goes on for months afterwards.

You want to motivate people. They need to feel good about what happened in the sprint, so that they continue to volunteer their time, their own free time after the sprint. We keep moving the issues forward that got started at the sprint but did not get finished.

For example, Peter went to Dev Days in Hungary and sat down with Daniel Wehner to come up with a plan to rewrite an entire Core subsystem. We came up with a plan and it took us from March until late July to finish the work on this subsystem. At the sprint, we had the first idea. We came to consensus. It took us that long to actually execute the plan, but without being together in the same room at that sprint, we would never have formulated it, or have come to a consensus which formed the next few months of work.

Comparing a focused sprint to other types of sprints

Some of the aspects of a focused sprint are similar to the giant sprints that we do.

Resources for sprint planners: How to plan a sprint is where we document sprint-related advice and tips. For example, you will find estimates for network and bandwidth needs. You should plan on enough access points that have capacity for two and a half devices per person. You want the bandwidth limits per device. It should be no less than 10 megabits per person. For a sprint of about 100 people, you want 60 to 80 megabits down and 20 megabits up. That will handle 300 to 400 devices. Depending on the size, you can scale that for what you need.

The document above is a summary of the write-ups that people have done over the years after their sprint events. We were able to take that information and make an official source for other sprint planners to find. This is another reason why documenting your sprint is really important.

A focused sprint means not mixing in mentoring new contributors, if that is not the focus of the sprint. If the attendees need help with setting up their local environment, suggest another event that focuses on new contributors.

If you want to mentor the next generation of sprint participants, then your focus becomes onboarding new contributors. Cathy runs a local monthly sprint, welcoming and focusing on new contributors, and helps organize sprints at DrupalCons that do that.

On the Friday of a DrupalCon, 200 and 300 people who have never contributed to core before are introduced to how to contribute to Drupal Core. This ensures that as an open source project, Drupal remains healthy far into the future. Get Involved events are really important but they are slightly different and they require some different planning and logistics. The goals of the focused sprints that we discussed here are short work, to be completed within 1-2 months.

At the smaller, focused sprints we tend to have a majority of experts and a couple of people who have contributor experience and kind of know what they are doing (but not really). It means that organic mentoring will happen. Unlike formal mentoring, no one is saying, “Go here and watch this presentation and we will teach you things.” It is more like, “Sit down at this table and do whatever we tell you and ask us questions and we will help you help us.” This type of mentoring is much more informal and happens in the Drupal community all the time. We do this because it is ingrained in our culture. It is how we work when we sit down together.

Related references Thanks

Thanks to Peter Wolanin (pwolanin) for collaborating on this great talk and for getting Acquia to get the transcript afterwards. Thanks to Marco DiSandro, Alina Mackenzie (alimac), and Jess (xjm) for helping with editing.

Mistakes are all mine though! Contact me (YesCT on drupal.org) with feedback.

DrupalSprintsDrupal 8
Categories: Elsewhere

Metal Toad: Why Drupal 8 won't ship with REST content negotiation

Tue, 14/07/2015 - 04:59
Why Drupal 8 won't ship with REST content negotiation July 13th, 2015 Dylan Tack

Some friends on Twitter were alarmed by this Drupal change record:
Accept header based routing got replaced by a query parameter
Before:
curl /node/1 -H "Accept: application/hal_json"
After:
curl /node/1?_format=hal_json

The issues leading to this change are too lengthy to capture on Twitter, so I'll give my perspective here.

What was the problem with accept-routing?
  1. Most critically, not all CDNs and caches support content negotiation (see #2364011)
  2. A secondary issue that I think deserves more attention is that even when caches support content-negotiation, the cache hit rate suffers.

The poor hit rate arises because web browsers do not simply declare Accept: text/html, they request a bizarre mishmash of media types depending on the specific browser, version, OS, and even what extensions are installed. A quick test on this site discovered roughly 100 unique Accept headers in 24 hours.

But isn't content-negotiation required to have "pure" REST?
  • No. Roy Fielding has said "Neither choice has anything to do with REST" (referring to a debate between extensions or query parameters).
  • While I don't deny the aesthetic appeal of the Accept header, there are good reasons why Drupal often has to de-prioritize theoretical purity. As mikl wrote on #2364011, "Drupal should be engineered for the web we have, rather than the one we wish we had."
Is ?_format a Drupalism?

The special _format Routing Parameter comes from Symfony, so I think this would be more accurately called a Symfony-ism, if it's an -ism at all. However, given that REST is an architectural style, and not a specific protocol, any API we design will naturally contain some details unique to Drupal.

Can't Varnish normalize the wide variety of Accept headers?

Yes, but if custom normalization routines in Varnish were the only way to have a high-performing cache, then that would be a bad Drupal-ism. It's better to have broad compatibility with current CDNs and caches.

Could a contrib module re-enable content negotiation?

Probably. The Symfony route filters are plug-ins that can be swapped out.

What alternatives were considered?

Some other options were moving REST resources to an /api path, or using extensions like /node/1.json. In the end, the query parameter won out because it had the least impact on the existing routing system.

The Future

I think an ideal solution to both problems would be widespread support for the Alternates: header (RFC 2295). In this way a server can specify what alternate media formats, languages, or encodings are available, and content negotiation can be efficiently performed at the network's edge. Sadly, this RFC appears largely abandoned since it's introduction in 1998, so perhaps the best we can hope for is by the time Drupal 9 is ready, CDNs and browsers will have cleaned up their act.

Categories: Elsewhere

Modules Unraveled: Modules Unraveled is now Completely FREE!

Tue, 14/07/2015 - 00:30
Published: Mon, 07/13/15Download this episode

Hey everyone,

Super exciting news this week! I've secured sponsors for the next two months to provide EVERY video on ModulesUnraveled.com absolutely FREE for you!

It's a bit of a long story, so if you don't care, just go learn some Drupal. But, I thought you might be interested in the back story, so here goes...

(P.S. If you're not a reader, I recorded this as an 8 minute podcast just for you.)

Why Modules Unraveled is now FREE for everyone

Late last year, there was a moment when I realized that it had been a long time since I had thought about why I started Modules Unraveled in the first place, and whether or not I was still on course with that original vision. I decided that I wasn't.

For reference, Modules Unraveled started with a video demonstrating how to setup Organic Groups in Drupal 7, back in 2011, when Amitai took over development, and did a complete re-write. Nothing was the same, and there were support requests all over the internet from people who didn't know how to use the new version.

I wanted to use it in a project I was starting at the time, so I went through the twisted, and difficult process of figuring out how the new module was supposed to be used. When I finally did, I recorded a video showing exactly what I had learned, so that others could skip the hours (and let's be honest, days!) that I had spent figuring it out, and just use the module the way it was intended.

Basically, I wanted to help everyone use Drupal to do amazing things.

At the time, I was teaching in the public schools full-time, but had the desire to do more web development and create videos like the one for Organic Groups. So, I started getting up at 3am... yes. 3:00 in the morning... and during that time I worked on videos until 6am when I would get ready to go to my full-time job.

Then, I started to charge for some videos. I figured, if I was saving people time, it was worth the $29 investment to learn how to use something like the Simplenews module, which has its own complexities. People apparently agreed with me, because the orders started coming in. Then I created more series' and put those up for sale, and everything was on an upward trajectory.

In the spring of 2012, I looked at what I was making between the hours of 3:00 and 6:00 in the morning, and extrapolated that to see what I could make full time. Based on that, I decided that it would make sense to quit my full-time teaching position, and focus on developing sites, and videos full time. (Too early as it turned out, but I'll explain that later.)

So, I was working for myself, from home, and everything seemed to be going great. The income was incredibly irregular though, so eventually, I switched the site from a pay-per-series model, to a subscription model. That was nice, because it provided a bit more predictable income, but though there were good months, on average, it still hadn't ramped up to what I was making as a full time teacher.

Because of this, I started to focus more and more on the money that I needed to make, instead of providing amazing quality videos that could help thousands of Drupal developers create their sites more quickly, and with less headache, like the original Organic Groups series did.

So, in December of of 2014, when I re-evaluated whether or not I was fulfilling my original mission, the answer was a resounding "No." I saw the thousands and thousands of site visitors in Google Analytics, and the meager handful that were actually signing up as a paying subscriber to access the videos. And the interesting thing is that it wasn't the lack of subscribers that hurt the most, it was that such a broad audience was coming to my site, because I had something they needed, but then immediately leaving because of the subscription requirement.

These were the exact people I had set out to help. And I was turning them away. I had reached a wide audience of people who didn't know what I was saying, because I was charging them to listen.

So, I wasn't making enough on the subscriptions alone to provide for my family, but I kept churning out new videos in the hope that eventually, the snow ball would roll in my direction, but it wasn't happening.

I eventually came to grips with that fact, and started trying to figure out other ways to produce an income, but still help the people that I had originally set out to help. I knew if I just got another job, I'd stop making videos. Because they take time. A LOT of time. You see this evidenced all over the web. YouTube is littered with Drupal tutorials teaching you how to do this or that, but there are rarely more than a handful done by any one individual. And, because video production, and teaching are not generally their areas of expertise, the quality is widely varying (to put it nicely.)

The obvious monetization strategy was advertising. I had never had third party ads on my site, and really didn't like the idea, but I had to try something new, because what I was doing wasn't working. (And one definition of insanity after all, is doing the same thing over and over, expecting a different result. I didn't want to be insane.)

So, I immediately started to contact businesses that I had some form of personal connection with. Some were ones that had products I used, some were ones where I knew someone(s) personally within the business, and others were ones that close friends of mine had personally recommended.

I wanted to see if anyone would be interested in advertising on my site. Some said yes, and some said no (one even suggested buying me outright, but after thorough discussion with my wife, and time in prayer, it didn't align with my life goals.)

The ones that said yes had a hard time nailing down a dollar amount (which is understandable, since I didn't have metrics to give them, having always been subscriber only), and for four or five months, I felt strung along, and didn't know if it was ever going to work out.

Then, I went to DrupalCon in LA. I wasn't planning to go, but then I won a conference ticket from the amazing people at Four Kitchens (thank you again!) and then just had to figure out a way to pay my room and flight. The only way I could convince my wife (who would be left alone with a two year old, and five month old) to let me go, was to convince her that I resolved to make something happen while I was there and that it would be a good investment.

I followed through. To give you an idea, I went to one (1) session the entire week, and spent the rest of my time in the expo hall, and hanging out with people who might be interested in becoming a sponsor (as well as a few old friends, that I don't get to see except at DrupalCons).

This was MUCH more fruitful than my previous, online-only, attempts. The net result was that six sponsors agreed to advertise, and combined, they would replace the existing membership income, and a little more. It wasn't much more, but was enough to let me run a two month trial to see how it would go, since I have absolutely no idea if it will be beneficial to anyone. My hope though, is that it will be beneficial for everyone, and I can sign additional sponsors, and/or charge higher rates.

One of those sponsors let me know that, after reviewing their budget, they would not be able to advertise, but the other five are still on board. You can see them, and (please!) thank them on the "Sponsors" page.

So, here we are! The site is completely free for anyone that wants to learn what I teach, and I get to find out if advertising will work on Modules Unraveled.

I'm happy!

If you want to learn Organic Groups, Search API, Simplenews, Git Basics, or anything else, check out the videos on this site. They're all FREE!

Want to become a sponsor?

I'd be a fool to leave it at that, and not mention that if you're interested in becoming a sponsor of the site, or the podcast, contact me, and I'll get you the information you need.

You MUST be able to legitimately serve my audience, and prove your worth in order to be a sponsor. But, if you meet that criteria, I'd be delighted to talk to you!

Thanks for taking the time to read this. It means a lot to me! And if you have any further questions, please don't hesitate to ask!

-Brian

Tags: planet-drupal
Categories: Elsewhere

Pages