Making learnability a priority in Drupal.

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
You are viewing a wiki page. You are welcome to join the group and then edit it. Be bold!

Drupal is growing up, and with its maturity comes a complexity that is making it harder and harder to learn. We have initiatives that focus on making the user interfaces easier to use, but we have not been paying attention to how improvements to core have affected new contributors, and their ability to learn how to code for Drupal. This wiki is be a place where we can track and discuss how to keep Drupal coding easy to learn.

(This idea comes out of the Engineering for the 80% talk given at Drupal Camp Colorado, and the Bay Area Drupal Camp in 2011.)

Below is a list of Issues for Drupal core that involve learnability. Learnability being the idea that people new to Drupal often struggle with the way we do things in Drupal's code. Sometimes these "ways" have been crafted over time by developers who are familiar with Drupal, not realizing that building in "magic" is confusing to newcomers. And sometimes these issues are just problems with inconsistency, documentation, code quality, or anything else that makes Drupal coding hard to learn.

Creating a Drupal theme requires more than HTML and CSS knowledge:

Separate usage of hide(), render(), and other template features from print statements to enable non-developers to create themes
New function drupal_element()

Confusing / Inconsistent patterns:

Standardize on use of underscore vs hyphen in tokens
Standardize on use of underscore vs hyphen in machine names
Specific preprocess functions for theme hook suggestions are not invoked

Examples of bad code in core:

Dashboard is broken beyond repair, remove it from core

Additional issues can be found by searching the issue queue for the tag Increases learning curve.

Theme development

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: