[development] Announcing DRUPAL-7-0-UNSTABLE-10
drupal-devel at webchick.net
Sun Nov 8 19:29:59 UTC 2009
Today I committed the last of the straggler RTBC API changes from code
freeze week (see http://drupal.org/node/578446 for the D7 development
schedule), and have just rolled DRUPAL-7-0-UNSTABLE-10. There are /
lots/ of changes in this one, since it embodies the entire "code
slush" phase of release, and the community really rallied (especially
towards the end) to cram lots of awesome stuff in! The full commit log
is attached; this e-mail contains some of the highlights.
We're now API frozen, except for any API changes necesary to fix
critical, release-blocking issues. So it "should" be safe to start
porting your modules, if you haven't already begun. I'll announce via
the devel list and Twitter (http://twitter.com/webchick) about any
major API changes that are particularly gnarly, but hopefully, most of
the worst is behind us now. I'm also hoping that this will be one of
the last unstable releases, and that we can start heading into alpha/
beta territory in the new year.
To help make Drupal 7 the best release possible, please help out in
one or more of the following areas, which are the focus until 12/1:
* ¡¡PERFORMANCE!! (seriously, we need help! ;))
Meta issue where efforts are being coordinated: http://drupal.org/node/615822
* Usability improvements:
"Hit list" from UX team: http://www.bojhan.nl/drupal-7-ux-last-phase/
Note that a lot of these usability patches are relatively easy to
create for developers, but the UX team is in a lot of cases blocked by
lack of people assisting. So if you're looking for a spot to jump in,
let the folks in #drupal-usability know!
* Accessibility improvements:
* Documentation/Text improvements:
And, if /none/ of those floats your boat, there's always the critical
So, what's new in DRUPAL-7-0-UNSTABLE-10? I'm so glad you asked!
The first topic to cover is that of our 10 feature exceptions. As
mentioned in the last unstable release announcement at http://lists.drupal.org/pipermail/development/2009-September/033741.html
, the "code slush" period leading from Oct. 15 -> Nov. 15 established
was to get these in, along with any required API clean-ups.
The community rallied in a *huge* way, and we were able to get 8 of
the 10 feature exceptions in, including such awesomeness as:
* Image Field: The default "Article" content type even ships with an
image field utilizing image styles to auto-resize pictures to show off
this awesome functionality.
* Contextual links: If you install D7, you'll notice that there are
now edit, configure, etc. links everywhere; new functionality that's
baked into the menu system. Now, instead of this having to be
implemented separately by certain modules and themes, it comes by
default in core. Yay!
(Note: The styling and interaction of these links is being handled as
a separate clean-up issue to keep bikeshedding to a minimum. If you're
design/UX-savvy and want to help out, see http://drupal.org/node/601150.)
* Customizable admin shortcuts: A dedicated menu that appears
underneath the toolbar for frequently-accessed tasks. As an
administrator, you establish "sets" of shortcuts which can then be
allocated on a per-user or per-role basis. Handy!
* Customizable administrative dashboard: Drupal now comes by default
with a drag-and-drop Dashboard screen for arranging blocks to give a
"bird's eye view" of the site's activity. We're hoping that this
addition will cause module developers to design blocks specifically
for the dashboard that would be of general use to site administrators
and content editors.
(Note: The UX team needs some hands on building out some default
Dashboard blocks to ship with core; see http://drupal.org/node/614410
if you want to lend a hand.)
* Update manager: Now, Drupal provides a web interface for installing
and updating your modules and themes! HUZZAH!! It prompts for a URL or
file upload of the module, your FTP password, and then fetches and
auto-extracts it. See http://3281d.com/2009/11/03/d7-update-manager
for more information on this totally kick-ass new feature, and for a
list of issues where you can lend a hand!
* Native RDFa support. This involves a new hook, hook_rdf_mapping()
and allows you to map your modules' data to an namespace. This
involves a few changes to theme templates as well, to print out the
necessary attributes. Really proud to see Drupal leading the way on
the semantic web!
* Taxonomy -> Field API translation: Now, not only are terms
fieldable, they're also fields themselves! How meta.
Yay! That's all great news. So what /didn't/ get in?
Unfortunately, Profile => Field API conversion. :( It turns out
there's quite a bit more to this conversion than initially meets the
eye, so the effort didn't get off the ground in time. This also means
that Drupal 7 core will be shipping with the same Profile module as
Drupal 6, sadly... But the good news is that a renewed effort for
building a full Field API-utilizing Profile module replacement has
begin in contrib as the "Profile2" module, in an effort to rectify
this situation in Drupal 8. See http://drupal.org/node/623210 for the
gory details and to help push this forward.
Administrative overlays also didn't make it, though it got around
80-90% working, and all required API changes were ready to go by code
freeze. Therefore, Dries and I have decided to treat this as a user
interface improvement, which can still be focused on during the
"polish" phase. So please pitch in at http://drupal.org/node/610234.
The latest screencast at http://drupal.org/node/610234#comment-2233140
is looking /damn/ sexy.
Finally, while all of the required API changes for translatable fields
were added, the UI unfortunately didn't make it. There is ongoing work
on this at http://drupal.org/node/539110.
As for everything else...
Changes for developers:
* There's a new hook_username_alter() which enables contrib modules to
override the display of a username everywhere. This is an important
shift, since in Drupal 6 the only option was overriding
theme_username(), which is not called consistently everywhere.
* In other user-related news, there's a spiffy new user role/
permission API, with actual functions like
user_role_grant_permissions() and so on. No more downloading Install
Profile API module to deal with basic user operations. w00t! We also
removed hook_user_form() and hook_user_register() in favour of just
using standard hook_form_alter() constructs like every other form.
* There are new hooks for menu operations: update, insert, delete for
both links and menus themselves. This should enable some interesting
new things in contrib during the Drupal 7 release cycle.
* Huge overhaul of the actions/triggers API so that they now map
directly to hooks and generalize out some stuff like the 'prepare'
property changes from node/comment.
* Pluggable field API storage engines are now per-field, rather than
per-entity. This allows a single field to pull in data from Amazon Web
Services, for example.
* Core now allows <head> metadata to be alterable via
hook_html_head_alter(), and implements the rel="canonical" and
rel="shortcut" standards out of the box.
* A few selected queries in core have been flagged as slave-safe. This
will help those sites running master/slave replication. We also
removed the last remnants of the old database system; DBTNG all the
* Links are altogether far more flexible now. "Operations" links are
now renderable properties which can be altered, we got rid of the
completely obtuse and befuddling custom_url_rewrite "magic" functions
in favour of good ol' fashioned hook_url_alter(), and we added a new
* There was a browser.inc we'd committed earlier in the cycle; the
intention was to use it as a general tool to replace SimpleTest's
browser, drupal_http_request(), etc. However, the necessary follow-up
work was not completed, and in talking to Jimmy, he stated that he
could handle this better in contrib. Therefore, this was rolled back,
in favour of http://drupal.org/project/browser, in case anyone /was/
using it (or wants to help improve it).
* Speaking of things we changed our minds about, remember how horrible
it was back in D5 and below where we had sequences? Well. They're
back. ;) Sorta. We added a sequences API which can be used for
selected tables that needs them. The good news is you can now import/
export a Drupal 7 DB in PHPMyAdmin without it crying.
module developers easily create UIs like "show this text field when
that checkbox is checked" or "populate this list of options based on
the selection from that list of options." In other JS-related news, we
also unified the page, AJAX 'path', and AJAX 'callback' callbacks.
Changes for themers:
* Page.tpl.php has now been split into html.tpl.php (for <html>,
<head>, and <body>) and page.tpl.php (for page content). This was a
contentious change, but is necessary to ensure that all template files
dealing with user-facing markup can consistently benefit from the new,
powerful render()-enabled theming system in D7.
* There's a new region.tpl.php to handle changes to block regions.
* Themes can now implement *_alter() hooks. hook_form_alter(),
hook_page_alter(), etc. Yet another contentious change. ;) However, it
was deemed necessary to let themers take full advantage of the render
API, otherwise they'd need to create modules for doing what is clearly
presentation layer logic. Please, <em>please</em> do not do evil
things with this that make me regret comitting it and cause it to get
rolled back in D8. ;P
* The search box is no longer a theme variable; you now treat it as a
* Core ships with three image style presets: thumbnail, medium, and
large. You can now depend on those being there (though not their exact
formatting/size size) in your themes.
* All theme functions now take a single $variables array. This is so
that preprocessing between template files and theme functions is
Changes for site builders:
* You can now choose default input formats (now called "Text formats")
per role. Text formats are weightable, and whichever is the lowest-
weighted format your role has access to becomes your default. No more
cursing yourself for forgetting to flip to "Full HTML" for that cursed
image tag! ;)
* RSS now outputs to "Full node" by default, to conform with
recommended good netizen practices. As always, this is configurable if
you like to force people to come to your site to read your stuff.
* Password checker now has more sexy, with a longer bar that indicates
relative password strength. Better for accessibility, too.
* Creating a menu link from a node is a simple checkbox, which as an
added bonus pre-populates the title field with the node title. Very
slick usability improvement! Another nice one is you can limit the
parent menus that can be selected on the form; for example, to just
"Main menu" so you don't have to scroll through the 4,000 links in
* We took out the confusing behaviour of the theme auto-switching when
you're on the blocks page. There's now a preview link if you want to
see what it looks like.
-------------- next part --------------
An HTML attachment was scrubbed...
-------------- next part --------------
More information about the development