[development] Announcing DRUPAL-7-0-UNSTABLE-10

Angela Byron 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/
Overlays: http://drupal.org/node/610234

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!

Feature exceptions
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  
way, baby...

* 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  
theme_link() function.

* 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.

* A /fantastic/ new JavaScript "states" system was added, which lets  
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  
normal block.

* 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  
"Navigation." :)

* 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...
URL: http://lists.drupal.org/pipermail/development/attachments/20091108/1cd1d87b/attachment-0001.html 
-------------- next part --------------

More information about the development mailing list