Software

Four Kitchens: Testing Drupal with CasperJS

Drupal Planet - Thu, 2014-10-30 11:05

In our last post we used CasperJS to rapidly test the user interface of a website. Now we will build on these skills and add a familiar element into the mix: Drupal. Like any framework, Drupal offers many predictable, standard behaviors which we can take advantage of. Using this predictability, we can easily test many behaviors including logged-in activity such as posting content.

Testing JavaScript Drupal
Categories: Software

Bluespark Labs: Follow the readiness of the top 100 modules for Drupal 8 with our automatically updated tool

Drupal Planet - Thu, 2014-10-30 08:42

With the first Drupal 8 beta having been released at Drupalcon Amsterdam, we thought this would be a good time to a look at the top 100 projects on drupal.org to see just how far along the line the process of preparing for Drupal 8 is. However, given that there's a lot of progress to be made and I don't feel like manually updating a long list of modules, I decided to make a small tool to get the status of these modules and keep the data up to date.

This turned out to be a fun little project, and slightly more involved than I anticipated at first. (Isn't it always the case!) However, at its heart it's a bone-simple Drupal project - one content type for the Drupal projects (and their metadata) we're interested in, and a few views to show them as a table and calculate simple statistics. The work of updating the metadata from drupal.org is handled in 85 lines of code, using hook_cron to add each project to a Queue to be processed. The queue callback borrows code from the update module and simply gets release data, parses it, and updates the metadata on the project nodes. In the end, the most work was doing the research to determine which projects are already in core, and adding notes about where to find D8 upgrade issues and so on.

So, how did it all turn out? Using the current top 100 projects based on the usage statistics on drupal.org, our tool tells us that as of today, out of the 100 most popular projects:

Thanks for reading, and be sure to keep an eye on the status page to see how the most used contrib modules are coming along!

Tags: Drupal PlanetDrupal 8
Categories: Software

Open Source Training: How to Check Your Drupal Site Security

Drupal Planet - Thu, 2014-10-30 07:11

autoupdate or dieIf you weren't able to update your Drupal site within a few hours on October 15th, you may be worried about your site.

Even under normal conditions, it's almost never possible to prove that a site is 100% safe. But by checking your site, you can either give yourself some additional peace of mind or you can confirm that you were hacked.

Categories: Software

PreviousNext: Drupal 7.32 critical update: Our Response

Drupal Planet - Thu, 2014-10-30 06:30

With the Drupal Security team's release of a public service announcement, the infamous security update known as 'SA-005' is back in the news. Even though it's old news, we've been fielding a new round of questions, so we thought we'd try to clear up some of the confusion.

Categories: Software

Modules Unraveled: 124 Creating Drupal Configuration in Code Using CINC with Scott Reynen - Modules Unraveled Podcast

Drupal Planet - Thu, 2014-10-30 06:00
Photo of Scott ReynenPublished: Thu, 10/30/14Download this episodeCINC
  • What is CINC?
  • How is it different from Features or Configuration Management?
  • Is it something you use on an ongoing basis? Or is it just for the initial site setup?
  • What types of configuration can you manage with CINC?
  • What if you already have a content type created, and you want to add a field to the content type?
    • How does that affect existing content, and new content.
  • What about the reverse? Can you remove a field?
    • What happens to the data that is already in the database?
  • Can you undo configuration that you’ve created with CINC?
  • How do you prevent site admins from disabling the module and deleting their content types?
  • CINC YAML
  • CINC & Features
  • CINC & Drupal 8 Config API
  • cinc.io
  • Sheet2Module
  • How do you see CINC working in a headless Drupal setting?
Use Cases
  • Create dozens of fields quickly.
  • Add a field to a content type after an existing field.
  • Update configuration only if it still matches the default settings.
  • How do you use this in a dev/staging/production
  • Have you noticed any improved feedback, improvements to your workflow while using CINC?
  • If people want to jump in and help development or work on new features what should they do?
Episode Links: Scott on drupal.orgScott on TwitterTags: Configurationplanet-drupal
Categories: Software

BlackMesh: Looking at DrupalCon Amsterdam Sprints, Upcoming sprints for you to attend

Drupal Planet - Thu, 2014-10-30 05:00

By:
Tim Erickson, stpaultim, @stpaultim from Triplo
Alina, alimac, @czaroxiejka
Cathy Theys, YesCT, @YesCT from BlackMesh

DrupalCon Amsterdam Sprints

DrupalCon is a great place to enhance your Drupal skills, learn about the latest modules, and improve your theming techniques. Sure, there are sessions, keynotes, vendor displays, and parties... like trivia night!

But.. there is also the opportunity to look behind the curtain and see how the software really gets made. And, more importantly, to lend your hand in making it. For six days, three both before and after DrupalCon, there are dedicated sprint opportunities where you can hang out with other Drupalistas testing, summarizing issues, writing documentation, working on patches, or generally contributing to the development of Drupal and the Drupal community.

We want to share some details about the DrupalCon Amsterdam Sprints (and pictures to reminisce about the good times) and mention some upcoming sprints that you can hopefully attend.

Sprint sponsors

Our sponsors helped us have:

  • Space:
    • Co-working space Saturday and Sunday before the con.
    • Sprint space at the venue Monday-Thursday.
    • Big sprint space Friday.
    • Co-working space Saturday and Sunday after the con.
  • Food and coffee all of the days.
  • Sprint supplies: task cards, stickers, markers, signs, flip charts.
  • Mentor thank you dinner.
Pre-con sprints

During the weekend before DrupalCon 60 people gathered on Saturday and 100 on Sunday at The Berlage, a fantastic old castle just blocks from the central train station. On most days the Berlage serves as co-working space. For 48 hours it was home to contributors working together on Drupal core, contrib projects, distributions and Drupal.org itself. Our supportive sponsors supplied lunch and coffee on both days while contributors worked on a number of initiatives: Multilingual, Drupal 8 criticals and beta blocking issues, Headless Drupal and REST, porting contrib projects to Drupal 8, Drupal 8 Frontend United, Search, Drupal.org, Behat (Behavior Driven and javascript/frontend testing), Commerce, Panopoly, Rules, Media, Documentation, Migration, Performance, Modernizing Testbot, and more.

Outside of the Berlage
The outside of the Berlage co-working space (castle) with the Drupal Association banner.
(photo: @gaborhojtsy)

Sprinters working inside the Berlage castle
Sprinters sprinting inside the cool looking Berlage.
marthinal, franSeva, estoyausente, YesCT, Ryan Weal
(photo: @gaborhojtsy)

We had lots of rooms for groups to gather at the Berlage.

Field API room at the Berlage sprint.
pwolanin, dawehner, wimleers, Hydra, swentel
(photo: @Schnitzel)

Field API room at the Berlage sprint.
Sutharsan, yched, Berdir
(photo: @Schnitzel)

On Monday sprint attendance grew to 180 sprinters. We moved to the conference venue, Amsterdam RAI. Other pre-conference events taking place included trainings, the Community Summit, and the Business Summit. At this particular DrupalCon there was much excitement about the anticipated beta release of Drupal. Many people did a lot of testing to make sure that the beta would be ready.

Sprinters working together, talking.
Discussing a beta blocker issue they found.
lauriii, sihv, Gábor Hojtsy, lanchez
(photo: @borisbaldinger)

Mauzeh, Tobias and the sprint location at the venue.
Lots of people sprinting and testing the beta candidate, with support from experienced core contributors walking around and helping.
tstoeckler, mauzeh
(photo: @borisbaldinger)

During the con

Sprinting continued during the conference, Tuesday through Thursday. And, to prepare for Friday's mentored sprint, the core mentoring team scheduled a series of 8 BOFs (‘Birds of a Feather’ or informal sessions). Preparations included mentor orientation, setting up local environments, and reading, updating, and tagging issues in the Drupal issue queue. Mentoring BoFs were open to all conference participants.

Mentors sitting in a BoF room
Mentor Training
YesCT, sqndr, -, -, lazysoundsystem, neoxavier, Mac_Weber, patrickd, roderik, jmolivas, marcvangend, -, realityloop, rteijeiro
(photo: stpaultim)

To promote contribution sprints, mentors volunteered at the mentoring booth in the exhibition hall during all three days of DrupalCon. Conference attendees who visited the booth learned about the Friday sprints. Mentors also recruited additional mentors, and encouraged everyone to get involved in contributing to Drupal.

The mentor booth with lots of colorful signs
The mentor booth with lots of signage, and welcoming people.
mradcliffe, kgoel
(photo: stpaultim )

At the booth, conference attendees were able to pick up our new contributor role task cards and stickers which outlined some of the various ways that people can contribute to Drupal and provided them with a sticker as recognition for the specific roles that they already play.

picture of the cards and stickers
Task cards and stickers
(photo: @HornCologne)

Mentored Sprint

In Amsterdam, 450 people showed up to contribute to Drupal on Friday.

lots of people at the Friday sprint
(photo: _SteffenR)

People gathered in groups to work on issues together.

A group around a table.
-, -, -, -, -
(photo: @peterlozano)

For many people the highlight of the week is the large “mentored” sprint on Friday. 180 of the 450 participated in our First-time sprinter workshop designed to help Drupal users and developers better understand the community, the issue queues, and contribution. The workshop helped people install the tools they would use as contributors. Another 100 were ready to start work right away with our 50 mentors. Throughout the day people from the first-time sprinter workshop transitioned to contributing with other sprinters and mentors. Sprinters and mentors helped people identify issues that had tasks that aligned with their specific skills and experience.

The dark workshop room with presentation screen, filled with people.
The workshop room.
(photo: stpaultim)

Mentors checking in with tables full of sprinters.
Mentors (in orange shirts): rachel_norfolk, roderik
(photo: stpaultim)

Mentored Core Sprint room sign, modified with marker to have a list of good and not good novice tasks.
Hand written signs were everywhere!
(photo: stpaultim)


A group picture of some of the mentors.
mradcliffe, Aimee Degnan, alimac, kgoel, rteijero, Deciphered, emma.maria, mon_franco, patrickd, 8thom, -, lauriii, marcvangend, ceng, Ryan Weal, YesCT, realityloop, -, lazysoundsystem, roderik, Xano, David Hernández, -, -, -, -
(photo: @Crell)

Near the end of the day, over 100 sprinters (both beginners and veterans) gathered to watch the work of first time contributors get committed (added) to Drupal core. Angie Byron (webchick) walked the audience through the process of evaluating, testing, and then committing a patch to Drupal core.

webchick celebrating and showing her screen on the overhead. Contributors clapping.
Live commit by webchick
webchick, -, -, marcvangend
(photo: Pedro Lozano)

Extended sprints on Saturday and Sunday

On Saturday after DrupalCon 80 dedicated contributors moved back to the Berlage to continue the work on Drupal core. 60 people came to contribute on Sunday. During these final days of extended sprints, Drupal beginners and newcomers had the chance to exercise their newly acquired skills while working together with some of the smartest and most experienced Drupal contributors in the world. The value of the skills exchanges and personal relationships that come from working in this kind of environment is cannot be underestimated. While there is an abundance of activity during Friday’s DrupalCon contribution sprints, the atmosphere during extended sprints is a bit more relaxed. Attending the pre and post-con sprints gives sprinters time to dive deep into issues and tie up loose ends. After a number of hallway and after-session conversations, contributors working on specific Drupal 8 initiatives meet to sketch out ideas, use whiteboards or any means of note-taking to make plans for the future.

Sprinters in the front end room.
LoMo, Outi, pfrenssen, lauriii, mortendk, emma.maria, lewisnyman
(photo: stpaultim)

Berlage first room filled with people at all the tables, some high tables.
Aimee Degnan, Schnitzel, dixon, -, Xano, alimac, boris, Gábor Hojtsy, realityloop, YesCT, justafish, eatings, fgm, penyaskito, pcambra, -
(photo: stpaultim)

Drupal.org sprint room at the Berlage.
-, jthorson, opdavies, drumm, RuthieF, -, -, killes, dasrecht
(photo: stpaultim)

Feedback about the sprints

Please contact me to get your DrupalCon Amsterdam sprint related blog added to the list here.

Upcoming sprints

Plan your travel for the next event so you can sprint with us too!

Corrections

If there are corrections, for example of names of people in the pictures, please let me know. -Cathy, @YesCT, or Drupal.org contact form.

DrupalSprintsDrupalConDrupal PlanetLots of people at the Friday sprint
Categories: Software

Gizra.com: RESTful Discovery - Who knows about your API?

Drupal Planet - Wed, 2014-10-29 23:00

As extremely pedantic developers we take documenting our APIs very seriously. It's not rare to see a good patch rejected in code review just because the PHPdocs weren't clear enough, or a @param wasn't declared properly.

In fact, I often explain to junior devs that the most important part of a function is its signature, and the PHPdocs. The body of the function is just "implementation details". How it communicates its meaning to the person reading it is the vital part.

But where does this whole pedantic mindset got when we open up our web-services?
I would argue that at least 95% of the developers who expose their web-service simply enable RESTws without any modifications. And here's what a developer implementing your web-service will see when visiting /node.json:

Continue reading…

Categories: Software

Mediacurrent: 10 Things I Wish I Knew About Drupal 2 Years Ago

Drupal Planet - Wed, 2014-10-29 21:44
10 things I wish I knew about Drupal 2 years ago

They say that hindsight is 20/20. With the many advances that have happened in the Drupal community recently, we asked our team "What is the one thing you wish you knew about Drupal two years ago?" 

"I wish I knew about the Headless Drupal initiative so I that I could be ahead of the curve as far as the Javascript technologies that it will require." - Chris Doherty

Categories: Software

Metal Toad: Seeing Long Term Technology Adoption as Evolution

Drupal Planet - Wed, 2014-10-29 18:31

Much like an evolutionary tree our goal in technology adoption is too continue to move forward and evolve, rather than getting caught in a dead end.  In the natural world, becoming bigger can be good but can lead to extinction events should the environment or food source change.  Right now we are in a technology Jurassic...

Categories: Software

Code Karate: Finding the right brand

Drupal Planet - Wed, 2014-10-29 12:28

If you have been around CodeKarate.com for awhile you have noticed that our branding has been, we

Categories: Software

Acquia: Drupal in the Philipines, Own your Own Code & More - Luc Bézier

Drupal Planet - Wed, 2014-10-29 12:00
Language English On being an open source developer

"Like a lot of people, I did both sides of technology; working on paid, proprietary systems [and open source]. There is a big difference. I can't imagine myself going back to any proprietary system where I have to pay; I can't share the code I am doing with anyone; I have to ask a company about the right tool to use. I love the way that everybody contributes to the same piece of code, trying to make it the best ... and for free!"

Categories: Software

The Cherry Hill Company: Islandora Camp Colorado - Bringing Islandora and Drupal closer

Drupal Planet - Tue, 2014-10-28 23:40

From October 13 - 16, 2014, I had the opportunity to go to (and the priviledge to present at) Islandora Camp Colorado (http://islandora.ca/camps/co2014). These were four fairly intensive days, including a last day workshop looking to the future with Fedora Commons 4.x. We had a one day introduction to Islandora, a day of workshops, and a final day of community presentations on how Libraries (and companies that work with Libraries such as ours) are using Islandora. The future looks quite interesting for the relationship between Fedora Commons and Drupal.

  • The new version of Islandora allows you to regenerate derivatives on the fly. You can specify which datastreams are derivatives of (what I am calling) parent datastreams. As a result, the new feature allows you to regenerate a derivative through the UI or possibly via Drush, which something the Colorado Alliance is working to have working with the ...
Read more »
Categories: Software

groups.drupal.org frontpage posts: Drupal Camp Ohio

Drupal Planet - Tue, 2014-10-28 21:30
Start:  2014-11-14 (All day) - 2014-11-15 (All day) America/Chicago Drupalcamp or Regional Summit Organizers:  themic8

http://drupalcampohio.org/

"DrupalCamp Ohio 2014 returns to The Ohio State University's Nationwide and Ohio Farm Bureau 4-H Center, for another two-day camp to build on last year's success, and will include keynote speeches, topical sessions, Beginners Training, Birds of a Feather breakouts, and code sprints."
-- http://drupalcampohio.org/about

Categories: Software

Drupal core announcements: This month in Drupal Documentation

Drupal Planet - Tue, 2014-10-28 21:12

This is the monthly update from the Documentation Working Group (DocWG) on what has been going on in Drupal Documentation. Because this is posted in the Core group, comments for this post are disabled, but if you have comments or suggestions, please see the DocWG home page for how to contact us.

Drupalcon Documentation Sprint

A small group of sprinters gathered on the last day of Drupalcon to work on a couple of Documentation issues. During the sprint the Installation guide was being reviewed for Drupal 8 and there is still work left to process some of that feedback. Furthermore a start was made writing the Theming guide for Drupal 8 (see below for more).

Theming guide for Drupal 8

The theming guide for Drupal 8 has been written almost from scratch and is beginning to take shape. It already covers such topics as:

  • Defining a theme with an .info.yml file
  • Theme folder structure
  • Working With Twig Templates
  • Adding stylesheets (CSS) to a Drupal 8 theme
  • Creating a Drupal 8 sub-theme
  • Using Classy as a base theme
  • Adding JavaScript to a Drupal 8 Theme

The theming guide still needs a lot of improvement. So if theming is your thing and you have some spare time this month, then please review it. Every little improvement is helpful. Note that you can edit documentation pages on drupal.org directly and that there is no need to leave comments.

Credits

Sander Tirez's theming guide, many stackexchange Q&A's and various blog posts proved invaluable input for writing the guide.

Thanks for contributing!

Since our last post from October 1 about 280 contributors have made some 1100 Drupal.org documentation page revisions, including 10 people that made 15 or more edits. Thank you batigolix, Pierre.Vriens, SERVANT14, Anthony Pero, camorim, sanchiz, tvn, Pere Orga, LoMo, phenaproxima and all the others and keep up the good work!

Changes to documentation on drupal.org Documentation Working Group meetings are open

The monthly meeting of the Documentation Working Group is open to anyone who would like to attend. Ping us if you want to join the meeting.

Documentation Priorities

The Current documentation priorities page is always a good place to look to figure out what to work on, and has been updated recently.

If you're new to contributing to documentation, these projects may seem a bit overwhelming -- so why not try out a New contributor task to get started?

Categories: Software

Drupal Watchdog: Drupal 8 Modules

Drupal Planet - Tue, 2014-10-28 20:08
Feature

This article will be more about the patterns you need to use during Drupal 8 development than how to fit the various pieces together.

Implements of MathematicsThere’s good reason for this approach: fitting the pieces together has plenty of examples, change records, and whatnot – but many pieces of the puzzle are entirely new to Drupal developers.

The Background

The first half of this article provides general PHP information which uses Drupal as an example, but is not Drupal specific. The idea behind this is that the knowledge can be reused well (indeed, this was also a design goal for Drupal 8).

Classes, Objects, Interfaces

In Drupal 7, stdClass was used at a lot of places; ergo, classes (like stdClass) and objects (instances of a class, like node, user, etc.) should be familiar. stdClass is a class without methods, and the properties are not defined ahead of time. In PHP, it’s valid to set any property on an object, even if it’s not defined on its class. So, stdClass worked much like an associated array, except that it used arrows instead of brackets. Another important distinction between arrays and objects is passing them to a function: in PHP5, if a function/method gets an object and then changes the object, it will affect the object everywhere – objects are not copied every time, while arrays are.

Categories: Software

Aten Design Group: Modularizing JavaScript

Drupal Planet - Tue, 2014-10-28 19:17

I came to Drupal from a JavaScript background and was happy to see a module system in place. Have you ever wished you could write your JavaScript modularly just like your PHP in order to take advantage of testing, better documentation and the Do One Thing Well philosophy? Well I have the solution for you: Browserify and NPM!

Getting Started

In order to take advantage of JavaScript modularity you will need node and npm which can be installed together using one of these methods.

Creating a JavaScript Module

JavaScript modules are similar to the PHP include system in that they allow the developer to separate their code across multiple files. The key difference is that JavaScript uses the syntax require to pull the exported part of a JavaScript file into the current file's variable of choice. Let's take a look.

Simply create a JavaScript file, do whatever you’re trying to do and assign the resulting value (usually a class or object) to module.exports.

// src/lib/MyClass.js   module.exports = function MyClass(opts) {}   MyClass.prototype.magic = function() { console.log(‘magic’); }

You can now use MyClass.js from other JavaScript files like so:

// src/index.js var MyClass = require(‘./lib/MyClass’);   var classy = new MyClass();   classy.magic(); // ‘magic’ NPM

PHP developers may be familiar with Composer. NPM is the Composer of the JavaScript world. Both allow you to manage the dependencies of your project.

Before creating a custom module it's a great idea to see if it has already been written. npmjs.org is the place to look. When you find a module you’d like to include in your project, retrieve it and add it as a dependency with npm. For example, to install lodash:

npm install lodash --save

The save flag adds this dependency to the package.json file. It might help to think of this as the JavaScript version of composer.json. All the dependencies for a project can be installed by running npm install within the directory containing package.json or its sub-directories.

Requiring modules from NPM is done just like local modules but you don’t have to provide the path, just use the module name. require will look in the node_modules folder automatically.

var _ = require(‘lodash’);

Read more about NPM and package.json on the NPM website.

The Browserify command

Browserify reads your JavaScript files and resolves their module.exports and require's.

Your main JavaScript file should be a compilation of its dependencies resulting in a useful piece of functionality for your website. To compile your multiple files into one that is browser ready we will use the browserify CLI.

First install it globally with npm. Globally installed modules can be accessed from anywhere on your machine.

npm install -g browserify

Then tell Browserify where your main JavaScript file is and redirect the output to where you want your compiled, browser-ready JS to be.

browserify src/index.js > build/myModule.js

build/myModule.js is now browser ready! Now you can add it to your website.

Come see me at BADCamp

The above workflow is a great way to maintain custom Drupal modules with a lot of JavaScript. For more detailed information about using this workflow with Drupal — such as global dependencies, handling jQuery, task automation and testing — come check out my session at this year’s BADCamp!

Categories: Software

Open Source Training: Node Gallery: The Easiest Drupal Photo Gallery

Drupal Planet - Tue, 2014-10-28 16:32

We have several different Drupal photo gallery tutorials on this blog. The most popular are Views Photo Galleries for Drupal 7 and Node Gallery for Drupal 6.

However, although Views is powerful, it is too complex for many Drupal users and Node Gallery remains popular. So here's an update that shows how to use Node Gallery in Drupal 7.

Node Gallery is still the easiest way to build a photo gallery in Drupal. It requires very little set-up and almost no configuration.

Categories: Software

Sooper Drupal Themes: Introducing SooperThemes.com version 5

Drupal Planet - Tue, 2014-10-28 16:11


Welcome to the fifth redesign of sooperthemes.com!

What's new at SooperThemes

The fifth major update to sooperthemes.com is the biggest update ever. It's a completely new site, unlike the previous sites which were built on top of the original alldrupalthemes.com (2007!)!

The new site comes with a big shift in focus. With Drupal 7 sites becoming more complex, and the upcoming Drupal 8 introducing new power and flexibility, but also complexity, we work hard to offer tools, services and products that allow everyone to profit form Drupal's flexibility without having to suffer the steep learning curve (alone). In addition to selling Drupal themes with turn-key demo sites we now offer more services:

  • Custom built ticket system on sooperthemes.com, to work alongside e-mail support
  • Design to Drupal service, for affordable and top quality Drupal themes based on your own design
  • Enterprise Drupal services, including art direction, design, theming, data driven design and consulting.
  • No more one-off theme sales, total focus on club membership and long term support

Our new tools are the best part, read on to learn about our major plans to support Drupal for small/medium businesses.

Drupal Developers will Love these New Tools: A new Distribution: Drupal CMS Powerstart

Drupal's awesome architecture is what makes it such an awesome alternative to competing CMS like Wordpress and Joomla, but setting up shop with Drupal is described by many as painful and too complicated. Here, Drupal's power in flexibility is also it's weakness. It takes too much time to install basic features like WYSIWYG with media management: you need to find modules and set up complicated configurations, sometimes needing patches or development versions of modules, external libraries, etc.
To solve this problem, we created a Drupal CMS Distribution, targeted to small business sites and aiming to make life easier for developers and shops who create small sites.

Drupal CMS Powerstart needs beta testers: https://www.drupal.org/project/cms

Dries has mentioned in several keynotes that Distributions are the key to make Drupal more accessible and therefore the Drupal ecosystem more succesful. We too believe distributions are the solution but we don't like how they are currently made and how they are managed by drupal.org. Therefore we have created a new interface: A user-friendly interface to our distribution that lets you pick features, so that you don't get a bulky distro with everything in it, and the kitchen sink.

Check out the custom build interface to Drupal CMS Powerstart:

Drupal CMS Custom Build

Twitter Bootstrap Fans will love what we did with Bootstrap 3

In order to create a truly responsive distribution, we developed and refined a lot Bootstrap 3 Drupal-integration. Responsive grid control from Views, content organisation with Bootstrap shortcodes: https://www.drupal.org/project/bs_shortcodes and all our features come with default layouts that regardless of whether you use a Bootstrap theme.

Development of Drupal CMS Powerstart is sponsored by sooperthemes.com and if you want to support future development of this new platform, please help beta testing and/or consider becoming a member of our premium themes club, you can see our "premium themed" version of CMS Powerstart here: http://glazed-demo.sooperthemes.com/ - more Drupal themes.

Tags sooperthemes drupal 7 drupal 8 distributions cms planet drupal planet cms powerstart Drupal 7.x
Categories: Software

ERPAL: Drupal design patterns – do we need them?

Drupal Planet - Tue, 2014-10-28 14:56

After six years of working with Drupal, I’ve seen many successful Drupal projects. I’ve also felt how hard it is to become an experienced Drupal developer. When I asked myself why some Drupal projects succeed while others don’t, I came to this conclusion: the projects that integrate with Drupal core and the contrib ecosystem – i.e. the ones that use "best practice" deployment workflows and try to use configuration instead of custom code – keep their flexibility, stay maintainable and avoid "niche know-how". This then ensures that the project can be continued even if the team changes. Of course, there are lots of other non-technical factors that make projects successful but we’re focusing here on the technical ones. The problem is that there’s no central repository of "best practices": almost all developers or Drupal shops have their own.

This brings me to the point of considering some Drupal design patterns. Whereas in object-oriented programming, developers have patterns for their object models to solve specific problems that appear again and again, we haven’t yet established any in Drupal. But if we look at the configuration layer of Drupal as a "programming language", we could describe some patterns or best practices that would help others with problems that have already been solved hundreds of times before. This would have the same benefits as design patterns in other programming languages. Solutions for equivalent problems / requirements are always designed in a similar way. For any given workflow we could always use the same rules, so everybody would know where to go to change some behavior. The result would be that modules wouldn’t implement their own logic in code but provide actions, events and conditions, and some default rules. People still wouldn’t find a Drupal image gallery module but they would know how to build one according to some patterns. Of course we’d have a longer dependency chain for some modules, but is this really a problem if we’re depending on standard modules?

 

When to choose which module – would patterns work for this?

With more than 8000 modules available at Drupal.org, new Drupal users may find it hard to get started. What usually happens is that they enable lots of modules to test them; if the module works for their requirements, it remains enabled. If the user is a technical person, maybe even a developer, he/she will most likely use the Drupal API to extend the Drupal app.
But wouldn't it be great if we had a list of modules that were "state of the art" for best practices such as using rules for workflows and business logic, ECKs and fields for data structure modelling, views for lists and data queries, restWS and WSclient for communication with other applications, entity view modes in combination with panels for layouting, and features for the deployment. Considering the above, I’ve created the Drupal application stack poster to collect all our modules – along with their specific use cases –and to share this overview with the community. Shouldn't we always have a "Drupal-relevant set" of modules in mind when it comes to the modelling process of our Drupal app? This would keep Drupal apps sustainable and flexible.

 

Dos and don’ts

There are also some examples of what not to do. In a few projects that had crashed before they came to us to be rebuilt, it became clear that the previous developers had exactly the problems listed above. They had no guide to help them figure out when to use the API and when to choose which module, which further led to code and architectures that nobody but the developer could maintain. After the first release, the projects weren’t extendible, as there was no deployment process established. Wouldn't it help to collect these examples as well, to help people avoid them and get on the right path with Drupal? With a list of positive and negative patterns, we could give users some objective criteria for rating the implementation of their Drupal project.

 

Distributions – start from a higher level

Distributions built on such best practices as Drupal commerce kickstart or ERPAL Platform provide a good starting point for new Drupal developers, since they can see how experienced Drupalistas created the distros and which modules they used. Distros can be showcases for Drupal design patterns or a kick-start for vertical use cases like e-commerce sites or business applications.

If we want the Drupal community to grow, we should help others find the right starting point – not just any old one that could lead them off in the wrong direction: while they might see some quick results, if it wasn’t the right approach, they would only realize that after days of work. Once too much time has elapsed, with the money already spent and the deadline looming ever closer, nobody will ever refactor the Drupal application to improve its structure.

With Drupal design patterns, we’d be able to offer standard solutions to often-complex problems. What are your thoughts about Drupal design patterns? Would this bring us another step closer to making Drupal into a world-leading web application framework?

Categories: Software

Drupalize.Me: Free Halloween Icon Set

Drupal Planet - Tue, 2014-10-28 14:04

With Halloween just around the corner, I thought it might be fun to hand out some tasty treats. Don't worry, you're not getting fruit or pennies. It's something much more fun! I designed a custom Halloween icon set, which is free to download and use however you want. With Drupalize.Me's scary good Drupal training, it's fitting that these icons can spook, sweeten, or surprise your next project.

Categories: Software

Pages