<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xml:base="http://grayside.org/feed/goingon/rss.xml" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Grayside.Org&#039;s Syndication Island</title>
    <link>http://grayside.org/feed/goingon/rss.xml</link>
    <description></description>
    <language>en</language>
          <item>
    <title>Infinite Null: Sorting NULL to Last</title>
    <link>http://grayside.org/2011/08/infinite-null-sorting-null-last</link>
    <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;&lt;em&gt;Please, keep in mind this post was written for Drupal 6 and Views 2! D7/Views 3 sites might not take so kindly to it.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Recently I was looking at creating a new Todo Feature with a due date. I cracked open &lt;span class=&quot;caps&quot;&gt;CCK&lt;/span&gt;’s &lt;em&gt;manage fields&lt;/em&gt; &lt;span class=&quot;caps&quot;&gt;UI&lt;/span&gt; and added a date field, careful to keep in mind that the default value should be &lt;strong&gt;no date&lt;/strong&gt;, which just happens to translate as &lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;. You see, for my Todo use case, not all Todos would have a deadline.&lt;/p&gt;
&lt;p&gt;My next step was to create a View of all upcoming items. I wanted the next most urgent todo to float to the top of the list. Sadly, &lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt; counts as 0 in database land, so my carefully clicked Sort was preloading all my urgent todos with all the lowest priority tasks.&lt;/p&gt;
&lt;p&gt;Seeing as this was a &lt;span class=&quot;caps&quot;&gt;SQL&lt;/span&gt; problem, I googled the ‘net for viable query tweaks. I found a nice article illustrating exactly what I wanted: &lt;a href=&quot;http://www.shawnolson.net/a/730/mysql_sort_order_with_null.html&quot;&gt;MySQL Sort Order with &lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;&lt;/a&gt;. The grand secret? Sort first by whether the duedate is &lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt; to flip your empty values to the bottom of the result set.&lt;/p&gt;
&lt;p&gt;The fastest way for me to apply this tweak to my feature was to hack the Views query. &lt;code&gt;hook_views_query_alter()&lt;/code&gt; is usually a horrible decision. Once you’ve put it into code, tweaking your View a lot around your alteration can quickly result in a broken query. Meanwhile:&lt;/p&gt;
&lt;div class=&quot;geshifilter&quot;&gt;
&lt;div class=&quot;php geshifilter-php&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-weight: normal; font-style: normal&quot;&gt;&lt;span style=&quot;color: #009933; font-style: italic;&quot;&gt;/**
&amp;nbsp;* Implementation of hook_views_query_alter().
&amp;nbsp;*/&lt;/span&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; example_views_query_alter&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$view&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$view&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;name&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;example_listing&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.php.net/array_unshift&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array_unshift&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;orderby&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;&lt;span class=&quot;caps&quot;&gt;ISNULL&lt;/span&gt;(node_data_field_duedate_field_duedate_value) &lt;span class=&quot;caps&quot;&gt;ASC&lt;/span&gt;&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;(For a longer use case on this Views bandaid, see &lt;a href=&quot;http://btmash.com/article/2011-06-09/correcting-views-queries-using-views-query-alter&quot;&gt;Correcting views queries using views_query_alter&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;I arrived here by turning on the &lt;a href=&quot;http://drupal.org/project/devel&quot;&gt;Devel&lt;/a&gt; module, and dropping a &lt;code&gt;dpm($query)&lt;/code&gt; into that function first thing. This gave me the array structure of my View, including the various &lt;span class=&quot;caps&quot;&gt;SQL&lt;/span&gt; entries for the &lt;span class=&quot;caps&quot;&gt;ORDER&lt;/span&gt; &lt;span class=&quot;caps&quot;&gt;BY&lt;/span&gt; arguments. A quick and dirty &lt;code&gt;array_unshift()&lt;/code&gt; forces the &lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt; check for my date field (the alias I also found in the $query object, there are more elegant methods) onto the top of the ordering hierarchy.&lt;/p&gt;
&lt;p&gt;Bingo! &lt;span class=&quot;caps&quot;&gt;NULL&lt;/span&gt;-dated nodes are sorted to&amp;nbsp;last.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Terms:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/category/1/sql&quot;&gt;sql&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot;&gt;&lt;a href=&quot;/category/terms/views&quot;&gt;views&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/category/1/views2&quot;&gt;views2&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot;&gt;&lt;a href=&quot;/taxonomy/term/1&quot;&gt;drupal&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
     <pubDate>Thu, 25 Aug 2011 04:01:43 +0000</pubDate>
 <dc:creator>Grayside</dc:creator>
 <guid isPermaLink="false">94 at http://grayside.org</guid>
 <comments>http://grayside.org/2011/08/infinite-null-sorting-null-last#comments</comments>
  </item>
  <item>
    <title>Configure Drush in Your Git Repository</title>
    <link>http://grayside.org/2011/08/configure-drush-your-git-repository</link>
    <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;One of the neat features of Drush is it&amp;#8217;s configurability. Setting the defaults for various behaviors and command options allows you to build really simplified, specialized workflows. You can create personal settings defaults by dropping a `drushrc.php` file in one of the places Drush will look, such as inside a .drush folder of your home&amp;nbsp;directory.&lt;/p&gt;
&lt;p&gt;It turns out this little capability has provided some very simple wins for developers at &lt;a href=&quot;http://www.goingon.com&quot;&gt;GoingOn&lt;/a&gt;. We pass around our projects and sites as a subdirectory of a Git repository that contains various things, such as documentation, deployment tools, and drush commands. Unfortunately, this slightly irregular practice disconnects Drush from the Drupal site and excludes those drush commands from the standard directories drush&amp;nbsp;scans.&lt;/p&gt;
&lt;p&gt;We fix this by making Drush aware of the Git Repo. There is a command-line script you can use to check if you are anywhere in a Git repository. By configuring Drush to check for a Git Repo on every drush bootstrapping, we give Drush a chance to pick up a bonus, repository-specific Drush config&amp;nbsp;file.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Add this snippet to your drushrc.php&amp;nbsp;file:&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;geshifilter&quot;&gt;
&lt;div class=&quot;php geshifilter-php&quot; style=&quot;font-family:monospace;&quot;&gt;
&lt;pre style=&quot;font-family: monospace; font-weight: normal; font-style: normal&quot;&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$output&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;a href=&quot;http://www.php.net/exec&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;exec&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;git rev-parse --show-toplevel 2&amp;gt; /dev/null&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$output&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/empty&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$output&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style=&quot;color: #000088;&quot;&gt;$repo&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$output&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp; &lt;span style=&quot;color: #000088;&quot;&gt;$options&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;config&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$repo&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;/drush/drushrc.php&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style=&quot;color: #000088;&quot;&gt;$options&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;include&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$repo&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;/drush/commands&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style=&quot;color: #000088;&quot;&gt;$options&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;alias-path&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$repo&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;/drush/aliases&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This script checks the current directory for participation in a git repository. If there is one, it looks at the root of the git repository for a &amp;#8216;.drushrc.php&amp;#8217; file to provide repo-specific instructions to Drush. We use this to configure paths to external resources that can vary by code version, as well as setting the Drupal site root for the Drupal site sihpped with that particular&amp;nbsp;repository.&lt;/p&gt;
&lt;p&gt;The last line also seeks out a `scripts/` directory in the repository root, which it will scan recursively for any files ending in `.drush.inc`. This allows us to ship versioned drush commands with each repo instead of documenting a complex individual installation&amp;nbsp;process.&lt;/p&gt;
&lt;p&gt;There are many other things you can do with a little poking about in the options for a drushrc file, to learn more start with the &lt;a href=&quot;http://drush.ws/examples/example.drushrc.php&quot;&gt;drushrc.php example&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 7/16/2012&lt;/strong&gt;: Updated code example to the same provided in Drush docs. You can now leverage this trick outside the root directory of your code repository. Also removed not applicable git context resulting in invalid configuration&amp;nbsp;paths.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Terms:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/taxonomy/term/1&quot;&gt;drupal&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot;&gt;&lt;a href=&quot;/category/terms/drush&quot;&gt;drush&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/taxonomy/term/86&quot;&gt;git&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
     <pubDate>Sat, 20 Aug 2011 06:53:18 +0000</pubDate>
 <dc:creator>Grayside</dc:creator>
 <guid isPermaLink="false">93 at http://grayside.org</guid>
 <comments>http://grayside.org/2011/08/configure-drush-your-git-repository#comments</comments>
  </item>
  <item>
    <title>D7 Upgrade Process: Backports to Close the Gap</title>
    <link>http://grayside.org/2011/08/d7-upgrade-process-backports-close-gap</link>
    <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;&lt;em&gt;The following post originally appeared on the &lt;a href=&quot;http://goingon.com/blog/d7-upgrade-process-backports-close-gap&quot;&gt;GoingOn.com blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;After more than a year of continuous investment in &lt;a href=&quot;http://goingon.com&quot;&gt;GoingOn&lt;/a&gt;&amp;#8217;s Drupal 6 platform, the idea of upgrading to Drupal 7 is incredibly daunting. We have custom modules from form behaviors down to the access layer, we have features encapsulating hundreds of exported components, and an aggressive feature release schedule that does not set aside 6 months for a complete rewrite of the codebase just for a new version of Drupal. What to&amp;nbsp;do?&lt;/p&gt;
&lt;p&gt;We’ve been playing around with the idea of iterating our Drupal 6 platform toward Drupal 7. By pulling markup, design patterns, APIs, and architecture in Drupal 7 down into platform incrementally, we hope to shorten the final leap that will come when upgrading the entire&amp;nbsp;system.&lt;/p&gt;
&lt;h5&gt;Driving Current Drupal Version Closer to Expected Drupal&amp;nbsp;Version&lt;/h5&gt;
&lt;p&gt;&lt;img src=&quot;http://goingon.com/sites/default/files/Drupal_Steps_4.png&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;202&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;sup&gt;Usability metaphors in site architecture and development practices sometimes works.&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;The extra work involved might well take &lt;em&gt;more aggregate&lt;/em&gt; time to develop, but that time will be amortized across small, manageable pieces that can be more intelligently inserted into the development&amp;nbsp;schedule.&lt;/p&gt;
&lt;p&gt;Here are the backport opportunities we’ve&amp;nbsp;identified:&lt;/p&gt;
&lt;h3&gt;Design&amp;nbsp;Patterns&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://drupal.org/project/vertical_tabs&quot;&gt;Vertical Tabs&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/contextual&quot;&gt;Contextual Links&lt;/a&gt;, Toolbar, &lt;a href=&quot;http://drupal.org/project/elements&quot;&gt;Elements&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/contact&quot;&gt;Contact&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Many of the design patterns in Drupal 7 are available through a combination of backport modules and creative theming. The Toolbar module doesn’t have a backport, but peeking into the repository for the &lt;a href=&quot;http://drupal.org/project/admin_menu&quot;&gt;Admin Menu&lt;/a&gt; I spy something that makes it &lt;em&gt;look&lt;/em&gt; like D7’s&amp;nbsp;Toolbar.&lt;/p&gt;
&lt;p&gt;By pulling these patterns from D7, we gain two&amp;nbsp;benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We can build out the rest of our user interface around D7 design assumptions, instead of D6 assumptions. This will save effort in a theme redesign and&amp;nbsp;upgrade.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;We can trickle D7 designs in front of our users, allowing them to adjust to a few changes ahead of time instead of waking up one morning to find a completely rearranged&amp;nbsp;website.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Our use of Vertical Tabs liberally around node forms is not cutting edge, but has allowed us to package complex forms with a Drupal 7 pattern, instead of resorting to harder-to-maintain multi-step&amp;nbsp;forms.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;System&amp;nbsp;Plumbing*&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://drupal.org/project/drupal_queue&quot;&gt;Drupal Queue&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/adminrole&quot;&gt;Admin Role&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/password&quot;&gt;Password&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/hook_file&quot;&gt;File&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/mailsystem&quot;&gt;Mail System&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/simpletest&quot;&gt;Simpletest&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The flow of code that goes on under the hood has a few interface points where it is relatively easy to grab a D6 backport and make your modules look just a little more like Drupal 7&amp;nbsp;code.&lt;/p&gt;
&lt;p&gt;Judging by an &lt;span class=&quot;caps&quot;&gt;IRC&lt;/span&gt; chat I just overheard the files[] mechanism might be dropped for something simpler in one of the next few point&amp;nbsp;releases.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I hadn’t realized until writing this that &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; Alter was cooked into core. The ability to ignore the special rules around around &lt;a href=&quot;http://api.drupal.org/api/drupal/developer--hooks--core.php/function/custom_url_rewrite_inbound/6&quot;&gt;custom_url_rewrite_inbound()&lt;/a&gt;  and go straight for &lt;a href=&quot;http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_url_inbound_alter/7&quot;&gt;hook_url_inbound_alter()&lt;/a&gt; is great. It also makes our custom code using it D7&amp;nbsp;ready.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;* For purposes of this post, plumbing refers to the flow of code and data between its storage and the rendering process. Pretty broad&amp;nbsp;category.&lt;/p&gt;
&lt;h3&gt;Database &lt;span class=&quot;amp&quot;&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;Performance&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://pressflow.org/&quot;&gt;Pressflow&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/dbtng&quot;&gt;&lt;span class=&quot;caps&quot;&gt;DBTNG&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/cache_backport&quot;&gt;Cache&amp;nbsp;Backport&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can get a lot closer to Drupal 7 performance behaviors simply by using Pressflow, which has held backports from and experiments for Drupal 7 for&amp;nbsp;years.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Most members of the Drupal community are already well aware that if performance is important for your project, grabbing Pressflow is an easy and non-threatening win. By using it for D6, you will be coding against session handling that is closer to D7’s, as well as being able to make use of other performance enhancing systems, such as serving images via &lt;a href=&quot;http://drupal.org/project/varnish&quot;&gt;Varnish&lt;/a&gt; as an ongoing improvement across your upgrade&amp;nbsp;process.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Contrib&amp;nbsp;Backports&lt;/h3&gt;
&lt;p&gt;This is a category of another sort. Usually when you think about Contrib modules for D7, you are looking for the upgraded version of the modules you are already using. However, what if there is a D7 module you want to use, or at least, could use? The D6 version of that module has just become a backport to facilitate your upgrade&amp;nbsp;path.&lt;/p&gt;
&lt;p&gt;This is a good solution to deal with unmaintained modules that have since been eclipsed by more energetic projects, as well as custom code you don’t really want to see again. We’re pretty excited to start playing with the &lt;a href=&quot;http://drupal.org/project/boxes&quot;&gt;Boxes &lt;/a&gt;module for this&amp;nbsp;reason.&lt;/p&gt;
&lt;p&gt;I’m going to skip listing competing modules in which one has an upgrade path and not the other. The &lt;a href=&quot;http://groups.drupal.org/similar-module-review&quot;&gt;Similar Module Review&lt;/a&gt; group might have information that will help you find competing modules that may just be a cleaner path&amp;nbsp;forward.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Thanks to &lt;a href=&quot;http://www.lullabot.com/articles/friday-roundup-drupal-8-education-agile-bacon-and-roombas&quot;&gt;Lullabot’s Friday Roundup &lt;/a&gt;(June 24th) for pointing out backports of Password, Contact, and File. Thanks to David Reid for creating and maintaining what seems like most of these&amp;nbsp;modules.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;So, did this work? &lt;/strong&gt;We are still putting together the details of this plan. A followup post in a few months will report on how it goes. If you have thoughts about this approach to the upgrade, additional worthwhile backports, or alternate ideas on how to make the time for an upgrade, please post a&amp;nbsp;comment!&lt;/em&gt;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Terms:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/taxonomy/term/1&quot;&gt;drupal&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot;&gt;&lt;a href=&quot;/category/terms/drupal6&quot;&gt;drupal6&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/taxonomy/term/84&quot;&gt;drupal7&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot;&gt;&lt;a href=&quot;/taxonomy/term/85&quot;&gt;upgrade&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
     <pubDate>Wed, 17 Aug 2011 05:40:01 +0000</pubDate>
 <dc:creator>Grayside</dc:creator>
 <guid isPermaLink="false">92 at http://grayside.org</guid>
 <comments>http://grayside.org/2011/08/d7-upgrade-process-backports-close-gap#comments</comments>
  </item>
  </channel>
</rss>