Planet Drupal

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

Lullabot: Nate Haug: Forking Drupal

Wed, 14/01/2015 - 22:00

Lullabot has a new monthly show, hosted by Matthew Tift, featuring in-depth interviews with open source and free software advocates.

This inaugural episode of Hacking Culture introduces the idea of software forking, one of the fundamental characteristics of free software, and Matthew talks with Nate Haug about Backdrop, a Drupal fork.

Categories: Elsewhere

Acquia: PHP: Getting the job done, really easily – meet Stephan Hochdörfer

Wed, 14/01/2015 - 18:27
Language Undefined

Stephan Hochdörfer from bitExpert AG and I got the chance to sit down and chat in the event hotel lobby following his session (and my keynote address :-) at SymfonyLive Berlin, 2014.

Categories: Elsewhere

Dries Buytaert: Drupal retrospective 2014

Wed, 14/01/2015 - 12:43

It's that time again. Time to look back at 2014, and to look forward to 2015. For Drupal in 2014, it was all about Drupal 8. As Drupal 8's development enters its fourth (and hopefully, final) year of development, it's a good time to reflect on all the work achieved by the Drupal 8 team so far, and to talk about Drupal 8's momentum heading into the final stretch to the release.

Drupal 8 will have 200 new features. Among the larger features that I'm excited about are the responsive design, HTML5 support, the native web service support, the much improved multilingual support, the configuration management system, a built-in WYSIWYG editor, in-place editing, streamlined content editing, the improved entity system, and more. The list of improvements is long!

My favorite part of Drupal 8 is that it will make building all types of Drupal sites — both big and small — much easier than with Drupal 7.

Key accomplishments in 2014 include:

Drupal 8 beta 1 released

October 1, 2014, amidst the fanfare at DrupalCon Amsterdam, we released Drupal 8 beta 1. This was an important milestone in the project, marking the finalization of major APIs, which enables contributed modules to begin porting in earnest.

Total number of Drupal 8 contributors surpasses 2,500

Our 2,500th core contributor was Tasya Rukmana (tadityar), a high-school student participating in Google Code-in 2014! Awesome.

Kick-starting contributed modules in Drupal 8

Drupal 8's new object-oriented API represents a significant paradigm shift for developers (there are many benefits to this). To help Drupal 7 pros make the jump to Drupal 8, Acquia funded the Drupal Module Upgrader project. This project will not only scan a Drupal 7 module and generate a report pointing off to the appropriate documentation on how to port it, there is even a mode that automatically re-writes much of your module's code to Drupal 8 to eliminate a huge chunk of the work.

Sprints, sprints and more sprints!

We organized dozens of sprints all around the world, and together hundreds of people came together in "real life" to help get Drupal 8 released. Sprints are a key part of momentum-building in Drupal, by laser-focusing on a specific goal, or by pairing both new and experienced contributors together for mentorship. Not only do sprints make solving tough issues easier, they also provide opportunities for building relationships and "leveling up" your skills.

Drupal 8 accelerate fund

Though it was launched just a month ago, the Drupal Association's Drupal 8 Accelerate Fund is already helping to add velocity to Drupal 8, by paying key contributors to help fix particularly onerous critical issues.

What is in store for 2015? Getting the Drupal 8 release done

Our current focus is resolving the Drupal 8 upgrade path issues, which will allow early adopters of Drupal 8 to upgrade their site data between beta releases, and should result in a further uptick to Drupal 8 development velocity.

Once we reach zero critical issues, we begin the release candidate phase. Among the areas left to polish up after the Drupal 8 upgrade path issues are bringing external libraries up to date, finalizing documentation, and performance.

Continuous improvements after Drupal 8

Unlike prior versions of Drupal, Drupal 8 has adopted a new release cycle that will provide backwards-compatible "feature" releases every 6 months. I'm extremely excited about this change, as it means we can innovate on the core platform for years to come after release, versus holding all of the new goodies until Drupal 9.

Getting more organizations to contribute

We're now one of the largest Open Source projects in terms of active contributors, if not the largest. That growth requires us to evolve how we work. Over the years, we've grown from a 100% volunteer-driven model to a model where there is a mix of volunteers, contributors who are partially funded by their customers or employers, and contributors who are paid full-time to work on Drupal.

While this shift has big benefits in making Drupal more sustainable, it also means there is increasingly more corporate participation and influence. One of our biggest challenges for 2015 is to figure out how we can get more commercial organizations to step up to take on more of the shared maintenance of Drupal, while at the same time respecting the needs and desires of our entire community.

Improving our governance model

There has also been a lot of talk about optimizing the way in which we work, to make it more explicit who is responsible for what, how decisions are made, and so on. This year I plan to work with others in the community to revamp Drupal core's governance model to bring more transparency and appoint additional leadership.

Conclusion

Overall, I'm thrilled with the progress that the Drupal core contributors have made in 2014, and want to extend an enormous thanks to each and every one of our 2,500 contributors who have brought us this far. I'm feeling very positive about our momentum going into 2015.

Drupal 8 will set a new standard for ease of use, power and flexibility, and will have something for everyone to love. Without a doubt, Drupal 8 will take our community to new heights. Let's do this!

Categories: Elsewhere

InternetDevels: Automated testing on Jenkins + Selenium basis

Wed, 14/01/2015 - 09:05

Hello everyone! At some point the project evolves to the stage, when you start thinking about some new step in its development. It is quite clear, that you put yourself questions like “What is to be done at the website first of all? Better control on quality assurance?”. If so, it is high time to consider implementing CI.

Read more
Categories: Elsewhere

YesCT: Making MidCamp more accessible

Wed, 14/01/2015 - 08:10
Making MidCamp more accessible

Even though it's still two months away, I know that MidCamp 2015 (March 19 - 22) is going to be special. The venue hosting MidCamp this year is the University of Illinois at Chicago. UIC is both my alma mater and present employer. Student Center East (where the training and conference sessions will take place) may be familiar grounds to me, but these days I am looking at it from the perspective of a visitor who is completely unfamiliar with its layout.

UIC Student Center East entrance from Polk and Halsted streetsVenue accessibility

Liz Henry's article Unlocking the Invisible Elevator identifies some of the ways in which conference organizers can be proactive about event accessibility:

Some information is great to have in advance. Maps and explanations of access paths work well. It helps if they’re in web-accessible formats, usable by screen readers, and downloadable. Some information has to be embedded in your conference venue. Signs should clearly mark the accessible paths. Maps are very helpful so that people can estimate distances; this is a big deal for those of us who are exhausted and in pain. Put maps next to your signs please!

In late November, I did a preliminary walkthrough of Student Center East. I meandered around the building, photographing the main entrance to Student Center East, the location, interiors and paths to elevators, escalators and stairways, major "landmarks" for points of reference, and the conference area hallways and rooms. It may sound a bit like I was casing the place, but I learned about traffic flow, congestion areas and different points of entry to each floor, whether by escalator and stairs or elevator.

Next, I contacted folks from UIC Office of Facility and Space Planning to obtain floor plans for each of the buildings and floors where MidCamp events are going to take place. They were quick to respond and the floor plans I got are very detailed. I annotated them, marking session rooms, elevators, restrooms and possible traffic flow. The annotations will serve as blueprint for locations of signs, as well as written directions that will be posted to the website.

Annotated floor plan of Student Center East ground floor, with photos of elevator #6 and escalator overlaid.

This week, MidCamp organizers and I plan to do another walkthrough at UIC. Together we hope to identify and address any accessibility and navigation pitfalls. Photos, annotated floor plans, and navigation information will be posted to the MidCamp website. We want to make sure that there is good information about the venue available ahead of time, as well as informative signs on the spot when you attend MidCamp.

Of course, floor plans and elevators are not the only aspect of conference accessibility. Childcare, real-time captioning, transcripts and captioning of session videos are some of the other ways in which events are made more accessible to diverse audiences. It's a direction that I hope MidCamp will follow.

Anonymized session selection

Another reason why I'm excited about is that MidCamp session submission is now open (it will close on Monday January 19). The session selection committee will pick from anonymized submissions for 20 and 50 minute talks. From the conference website:

  1. A volunteer who is NOT on the selection team will anonymize and remove gendered pronouns from abstracts/bios.
  2. The team will make a first round of selections from the anonymized submissions.
  3. A second round will then make sure we have not selected speakers multiple times (excluding panel participants).

By anonymizing session selection, we hope to give thorough consideration to everyone's proposals without biases ("oh, I know this speaker," or "I've never heard of this speaker"). Having a diverse lineup of speakers from all experience levels is important to us. A few weeks ago, Cathy Theys brainstormed a list of topics spanning social, technical, business, and other aspects of Drupal ecosystem that would be welcome at MidCamp. The list is long, but by no means exhaustive.

Are you on the fence about submitting a proposal? Take a look at the variety of suggestions for topics and fill out the submission form (the deadline is Monday, January 19). I want to see you at MidCamp!

References and resources

Contact me on Drupal.org or on Twitter. -alimac

Categories: Elsewhere

Capgemini Engineering: Drupal 8 PSR-4 Form compatibility in Drupal 7

Wed, 14/01/2015 - 01:00

Up until Drupal 8 there has been little to encourage well organised code. It now has PSR-4 autoloading so your classes are automatically included. Even though Drupal 8 is just round the corner, a lot of us will still be using Drupal 7 for quite a while, however that doesn’t mean we can’t benefit from this structure in Drupal 7.

This post covers two parts:

  1. Autoloading class files.
  2. Avoiding extra plumbing to hook into your class methods.

You’re probably familiar with drupal_get_form(‘my_example_form’) which then looks for a function my_example_form(). The issue is that your form definition will no longer be in such a function but within a method in a class. To cover both these parts we will be using two modules:

  1. XAutoLoad - Which will autoload our class.
  2. Cool - Which allows us to abstract the usual functions into class methods.

Drupal 8 was originally using PSR-0 which has been deprecated in favour of PSR-4. As a consequence the Cool module uses PSR-0 in its examples although it does support PSR-4. We will create an example module called psr4_form.

The information on autoloading and folder structure for PSR-4 in Drupal 8 states that we should place our form class in psr4_form/src/Form/FormExample.php however the cool module instead loads from a FormControllers folder: psr4_form/src/FormControllers/FormExample.php.

We can get round this by providing our own hook_forms() as laid out in the Cool module:

/** * Implements hook_forms(). */ function psr4_form_forms($form_id, $args) { $classes = \Drupal\cool\Loader::mapImplementationsAvailable('Form', '\Drupal\cool\Controllers\FormController'); unset($classes['Drupal\\cool\\BaseForm']); unset($classes['Drupal\\cool\\BaseSettingsForm']); $forms = array(); foreach ($classes as $class_name) { $forms[$class_name::getId()] = array( 'callback' => 'cool_default_form_callback', 'callback arguments' => array($class_name), ); } return $forms; }

If you are ok placing your class in the FormControllers folder then you can omit the above function to keep your .module file simple or you could put the hook in another module. Potentially the Cool module could be updated to reflect this.

This class requires a namespace of the form Drupal\<module_name>\Form. It also extends the BaseForm class provided by the Cool module so we don’t need to explicitly create our form functions:

namespace Drupal\psr4_form\Form; class FormExample extends \Drupal\cool\BaseForm { ... }

Within our FormExample class we need a method getId() to expose the form_id to Drupal:

public static function getId() { return 'psr4_form'; }

And of course we need the form builder:

public static function build() { $form = parent::build(); $form['my_textfield'] = array( '#type' => 'textfield', '#title' => t('My textfield'), ); return $form; }

All that is left is to define your validate and submit methods following the Drupal 8 form API.

At the time of writing, the Cool module isn’t up to date with Drupal 8 Form API conventions. I started this blog post with the intention of a direct copy and paste of the src folder. Unfortunately the methods don’t quite follow the exact same conventions and they also need to be static:

Drupal 7 Drupal 8 getId getFormId build buildForm validate validateForm submit submitForm

This example module can be found at https://github.com/oliverpolden/psr4_form.

Taking it further

Drupal 8 is just round the corner but a lot of us will still be using Drupal 7 for the foreseeable future. Taking this approach allows us to learn and make use of Drupal 8 conventions as well as making it easier to migrate from Drupal 7. It would be nice to see the Cool module be brought up to date with the current API, perhaps something I will be helping with in the not so distant future.

Links Modules Information

Drupal 8 PSR-4 Form compatibility in Drupal 7 was originally published by Capgemini at Capgemini on January 14, 2015.

Categories: Elsewhere

Mediacurrent: Level up your Drush-Fu with aliases that work across all environments

Tue, 13/01/2015 - 22:40

Have you noticed how your remote drush aliases (e.g., @my-dev-server) don't work when you're logged into the remote server? It's because aliases with the "remote-host" key specified can't work locally. Quite annoying!

Categories: Elsewhere

Drupal core announcements: Drupal core updates for January 12, 2015

Tue, 13/01/2015 - 21:40
What's new with Drupal 8?

Happy New Year everyone! Since the last Drupal Core Update on December 3rd, Drupal 8 passed over 2500 contributors (congratulations to tadityar on becoming the 2500th D8 contributor on December 9)!

Some other highlights of the month were:

How can I help get Drupal 8 done?

See Help get Drupal 8 released! for updated information on the current state of the release and more information on how you can help.

Drupal 8 In Real Life Whew! That's a wrap!

Do you follow Drupal Planet with devotion, or keep a close eye on the Drupal event calendar, or git pull origin 8.0.x every morning without fail before your coffee? We're looking for more contributors to help compile these posts. You could either take a few hours once every six weeks or so to put together a whole post, or help with one section more regularly. If you'd like to volunteer for helping to draft these posts, please follow the steps here!

Categories: Elsewhere

Drupal Watchdog: MySQL Query Optimization

Tue, 13/01/2015 - 18:52
Feature

A large part of MySQL optimization lies in improving poorly performing SQL queries. While tuning is important, it often has nowhere near the impact of actually fixing a poorly performing query. Fixing queries is also a lot more fun. Obviously query optimization is a large subject, and can’t possibly be covered in full in a single article. I highly recommend that you get a book on this subject; for any Drupal developer, it is well worth learning.

As a web developer using a CMS, you are only slightly removed from the SQL layer. Not completely knowing how to use this layer and how to optimize it is very limiting. To get you started, we will cover some very basic optimization, index usage, and join optimization techniques.

Index Basics

Even though indexes are very important for database performance, they are not completely understood by many developers, which often leads to easily-avoidable problems. The main issue is the mystical belief that the MySQL optimizer should be able to quickly run a query if an index so much as touches the columns in question. Sadly, indexes are not magical.

It is best to think of an index as a tree, largely because they are trees in most DB systems. (B+Trees, specifically; for more information, see http://wdog.it/4/1/btree.)

Thus, if you have an example index test that covers (columnA, columnB), you literally have a tree of columnA values, with columnB values in the leaves. If you have a query that has a WHERE condition on these two columns, MySQL will go through this tree looking for the correct columnA value first, and then go into the leaves of that object, and find the correct columnB value.

Categories: Elsewhere

OpenLucius: Drupal Grants, what to do with this node access system?

Tue, 13/01/2015 - 17:48
Viewing, editing and deleting pages in Drupal

When you have some experience with Drupal it will be clear that you can set your rights for content management in the permission table (/admin/people/permissions).

Check the appropriate permissions and everyone will get the required rights to view, add, edit or delete content. In other words the so-called CRUD actions: Create, Read, Update, Delete.

So far so good.

Categories: Elsewhere

ERPAL: Looking back on 2014 with Drupal business apps

Tue, 13/01/2015 - 16:30

The year 2014 was entirely about flexible and open business applications based on Drupal - and we’ll continue to follow this vision in 2015.
In 2014 we staffed up our ERPAL team and won strategic clients who gave us feedback and helped us continue to finance our open source development. This positive resonance provides confirmation that Drupal can become an ever-larger part of the open source business application market.
One of the ERPAL Platform projects of 2014 that we’re very proud of was presented in a featured webinar on open integration with Drupal commerce. The ERPAL Platform based foam creator gives an industrial company the means to let its clients construct and order individually manufactured products – all directly online. The orders are sent to the manufacturing department and production starts. Because the application is fully integrated with the company’s workflow and IT infrastructure, no manual data transfer is needed and the efficiency of the whole sales-to-production process has increased by more than 75%. This unique use case shows the power of Drupal extended well beyond content sites.

Whereas other open source business apps like Odoo focus solely on broadening the palette of business apps available for ERP systems, ERPAL comes from the other direction. We use Drupal as a highly flexible and stable application framework that helps you build any kind of web application at all - and Drupal can do this with almost no coding, just by configuring. Using this strategy we introduced Drupal to some businesses that hadn’t even heard of Drupal. And now that they see its power and flexibility, they wouldn’t want to go without it anymore.
With ERPAL Platform, which we released in 2014, we provide Drupal developers and site builders with a free Drupal distribution for building highly flexible business applications and e-commerce businesses in a Drupal box. It integrates many Drupal modules like Drupal Commerce and Rules, which are known to leverage flexibility. With the help of the Drupal community we implemented an architecture that covers contact management and all components of the sales process such as quotes, orders and invoices. As Drupal became more open, providing web service for all entities in Drupal 8, we implemented the architecture of ERPAL to integrate with other services. Together with a closed beta customer test pool, we are running ERPAL Platform as a fully-integrated agency platform, automating integration tasks between Jira, Mite, Trello, Redmine and toggle. It helps save time in administration and automates billing and controlling processes in project-based business. Thanks to everyone who joined our ERPAL Platform integration survey. This survey is still open and we are looking forward to even more feedback to help us increase our number of beta testers.

Because in 2014 we were deploying more than 25 Drupal-based business apps and always had Drupalgeddon in mind, we decided to go public with our technology for Drupal update automation, which we previously had used only internally for our clients. Drop Guard lets Drupal users and agencies automate Drupal security updates immediately after a new security update release. If you’re interested in further details, workflows and technology, read more in our blog post about how since 2012 we’ve automated Drupal security updates with ERPAL: you can too!

All in all, 2014 was an amazing year for ERPAL and we saw that there’s a market for open source business applications. We’re looking forward to contributing even more code, know-how, webinars and sessions to the Drupal community in 2015.

Categories: Elsewhere

Drupalize.Me: Changes in the Form API in Drupal 8

Tue, 13/01/2015 - 15:13

In my previous post, I documented the first of my Adventures in Porting a D7 Form Module to Drupal 8. In that article, I documented how I used the Drupal Module Upgrader to convert my Drupal 7 module, Form Fun, to Drupal 8 and what I learned along the way about how Routes and Controllers replaced hook_menu, and what I gleaned from change records about other API changes. This article is a continuation of that post, so you might want to pop over and give it a read so that you're up to speed with what we're doing here.

Categories: Elsewhere

DrupalOnWindows: Setting up Code Syntax Higlighting with Drupal

Tue, 13/01/2015 - 07:00

While setting up (still in progres..) this website we found the need to enable easy Code Highlighting to be done through our WYSIWYG editor of choice: CKeditor. What looked like a 30 minute task, ended up in a more than 3 hour adventure. Let's see what happened.

Language English
Categories: Elsewhere

Liran Tal's Enginx: Drupal Performance Tip – be humble on hook_init()

Mon, 12/01/2015 - 17:06
This entry is part 5 of 5 in the series Drupal Performance Tips

In the spirit of the computer video game Doom and its skill levels, we’ll review a few ways you can improve  your Drupal speed performance     and optimize for better results and server response time. These tips that we’ll cover may be at times specific to Drupal 6 versions, although     you can always learn the best practices from these examples and apply them on your own code base.

Doom skill levels: (easiest first)

1. I’m too young to die

2. Hey, not too rough

3. Hurt me plenty

4. Ultra-violence

5. Nightmare!

  This post is rated “I’m too young too die” difficulty level.

 

Drupal is known for its plethora of hooks, and their use is abundant through-out any Drupal modules to plug into the way that Drupal works. That’s fine, though once you’ve decided you’re moving on with Drupal as your live web application/website and you’re using modules from the eco-system, that is when you need to spend some more time reviewing modules a little bit closer than just their download counts or issues on drupal.org

hook_init() runs on every page load. Imagine you’re having a few modules implementing this hook, then you already have impact on your server response time performance for every page access in Drupal. Maybe those modules have a very slight overhead there, maybe that’s part of what they do, and that’s fine, but it may at times benefit you to review and investigate if the code there, that maybe your team added too, is better being re-factored to some other place and not on every page load.

There is another perspective for it of course, maybe things do need to take place on every page load, but their implementation in the code might be faulty. Imagine you’re doing some expensive IO on every page load, like calling an API, or querying a heavy table. Maybe you can re-factor to cache this information?

 

(adsbygoogle = window.adsbygoogle || []).push({});

The post Drupal Performance Tip – be humble on hook_init() appeared first on Liran Tal's Enginx.

Categories: Elsewhere

Evolving Web: Parallelized web scraping using RollingCurl

Mon, 12/01/2015 - 16:35

The web is full of information! Your web sites probably already use many APIs for maps, Twitter, IP geolocation, and more. But what about data that's on the web, but doesn't have a readily available API?

read more
Categories: Elsewhere

Yuriy Gerasimov: Centralize your logs with logstash (getting started guide)

Mon, 12/01/2015 - 13:51

Logstash is a great tool to centralize logs in your environment. For example we have several drupal webheads that write logs into syslog. It would be really nice to see those logs somewhere centrally to find out about your system's health status and debug potential problems.

In this article I would like to show how easy to start using logstash for local development.

First of all in order to run logstash you need to follow instructions http://logstash.net/docs/1.4.2/tutorials/getting-started-with-logstash.

Logstash has following concepts:

  • inputs -- where we grab logs from. This can be files on local files system, records of database table, redis and many more.
  • codecs -- way you can serialize/unserialize you data. Think about it as json decode when you get records or running json encode when you are saving log message.
  • filters -- instruments to filter particular log records we want to process. Example -- syslog has many records but we want to extract only drupal related.
  • outputs -- where we are passing our processed log records. It can be a file (multiple different formats), stdout or what is most interesting elastic search

Tricky part comes when you need to install Elastic Search to store your logs and Kibana to view them. There is very nice shortcut for development purposes -- to use already built docker image for that.

I have found very handy to use https://registry.hub.docker.com/u/sebp/elk/ image.

So you need docker to be installed (http://docs.docker.com/installation/ubuntulinux/). Then you import docker image and run it.

sudo docker pull sebp/elk sudo docker run -p 5601:5601 -p 9200:9200 -p 5000:5000 -it --name elk sebp/elk

Now we have docker image working plus it has port forwarding to our localhost.

In order to send your logstash logs to elastic search you need to use elasticsearch output. Here is logstash configuration file example that can be run for testing.

input { stdin { } } output { stdout { codec => rubydebug } elasticsearch { host => "localhost" port => "9200" protocol => "http" } }

Now when you run logstash and enter couple of messages they will be fed to elasticsearch. Now you can open http://localhost:5601/ to see kibana in action.

Next step would be to set up your own rules of extracting drupal (or any other type) logs and pushing them to elastic search. But this is very individual task that is out of the scope of this guide.

Tags: drupaldrupal planetlogstash
Categories: Elsewhere

Paul Rowell: Drupal fields; improving select lists

Sun, 11/01/2015 - 21:39

Everyone knows what a select list is, what it looks like and how it works. But that doesn't mean it can't get better, here a few modules that can be used to improve the experience for users when selecting items.

Categories: Elsewhere

Drupal Camp NJ 2015: Drupal 8 core critical issues sprint to coincide with camp

Sun, 11/01/2015 - 17:53

The Central NJ Drupal Meetup has received one of the first grants from the new Drupal Association Drupal 8 Accelerate program. The Sprint will take place from January 29 to Febrary 1. For more details see https://groups.drupal.org/node/453848 

Categories: Elsewhere

DrupalOnWindows: Drupal on IIS or Apache

Sun, 11/01/2015 - 10:38

In this article I will try to find out if there is any performance lead in running Drupal on IIS over Apache. I will not run any benchmarks on my own, just analyze what I could find about this surfing the web. Type "iis vs apache drupal" in Google and this is what I found.

The links

Drupal Performance on IIS7 vs Apache

Date: Mid 2012

Language English
Categories: Elsewhere

3C Web Services: How to override field templates in Drupal 7

Fri, 09/01/2015 - 22:42

Drupal provides a quick and simple way to customize field output globally using template files. Overriding a field's template file can be useful if you need to customize the HTML, data, or provide custom logic to a Drupal field. Template files allow you to target all fields, fields of specific names, fields of specific types and fields of specific content types.

Categories: Elsewhere

Pages