Planet Drupal https://bryanruby.com/tags/planet-drupal en Drupal 8.4 Available and Fixes Significant Database Caching Issues https://bryanruby.com/drupal-84-available-and-fixes-significant-database-caching-issues-2004 <span property="schema:name">Drupal 8.4 Available and Fixes Significant Database Caching Issues</span> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field--label">Image</div> <div class="field--items"> <div class="field--item"> <img property="schema:image" src="/sites/default/files/field/image/druplicon-large.png" width="1180" height="1350" alt="Druplicon" typeof="foaf:Image" class="img-responsive" /> </div> </div> </div> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2017-10-15T01:58:06+00:00">Sat, 10/14/2017 - 20:58</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p><em>Your hosting account was found to be causing an overload of <strong>MySQL</strong> resources. What can you do? Upgrade your Drupal 8 website to Drupal 8.4 or higher.</em></p> <p>One of my goals in rebranding my website from <em>CMS Report</em> to <a href="https://www.socpub.com"><em>socPub</em></a> was to write diverse articles beyond the topic of content management systems. Yet, here we go again with another CMS related article. The Drupal open source project recently made available Drupal 8.4 and for me this version has been a long time coming as it addresses some long standing frustrations I've had with Drupal 8 from the perspective of a site administrator. While Drupal 8.4 adds some nice new features, I'm just as excited about the bug fixes and performance improvements delivered in this new version of Drupal.</p> <p>When Drupal 8 was introduced it made significant improvements in how it caches and renders pages. That's great news for websites that use Drupal's built-in caching to <a href="https://dri.es/making-drupal-8-fly">speed up delivery</a> of pages or page elements. But there was one unwanted side effect to the cache enhancements, excessive growth of cache tables with tens or hundreds of thousands of entries, and gigabytes in size. For my own website it is not too uncommon to see my database reach 4 GB in size. Let's put it this way, it was no fun to receive a letter from my hosting provider that they weren't too happy of my resource usage. Worse they threatened shutting down my website if I didn't manage the database size better. Just in the nick of time for you and me, Drupal 8.4 delivers a fix to the cache growth by introducing a new default limit of <a href="https://www.drupal.org/node/2526150" rel="nofollow">5000 rows per cache bin</a>.</p> <p>I'm still playing with this change and I haven't found a lot of documentation, but you can override the default row limit in Drupal's settings.php via the setting "<a href="https://www.drupal.org/node/2891281">database_cache_max_rows</a>". For my site, the following settings has helped me keep my MySQL database under half a Gigabyte:</p> <pre> $settings['database_cache_max_rows']['default'] = 5000; $settings['database_cache_max_rows']['bins']['page'] = 500; $settings['database_cache_max_rows']['bins']['dynamic_page_cache'] = 500; $settings['database_cache_max_rows']['bins']['render'] = 1000;</pre><p>For those of you that may not be ready to upgrade to Drupal 8.4 but still need to handle the oversized caching tables today, I had some luck with the <a href="https://www.drupal.org/project/slushi_cache">Slushi cache</a> module. An additional good summary of similar solutions for Drupal 8 versions prior to 8.4 can be found on <a href="https://www.jeffgeerling.com/blog/2017/dealing-drupal-8-and-giant-cacherender-table">Jeff Geerling's blog</a>.</p> <h2>Notable New Features in Drupal 8.4</h2> <p>Of course the purpose of Drupal 8.4 isn't just to address my pet peeve about Drupal caching but also to bring Drupal users a number of new features and improvements. Some of the more significant additions and changes in Drupal that affect me and possibly you include:</p> <h3>Datetime Range</h3> <p>For non-Drupal user I know this is going to sound odd, but despite a number of community approaches there never really been a standard format for expressing a range for date or time commonly used in event and planning calendars. Drupal 8.4 addresses this missing field type with the new core Datetime Range module to support contributed modules like Calendar and shares a consistent API with other Datetime fields. Future releases may improve Views support, usability, Datetime Range field validation, and REST support.</p> <p><img alt="Datetime Range User Interface" data-align="center" data-entity-type="file" data-entity-uuid="115be6a8-8ebb-4643-bc07-c4fb5ca8b4f4" height="395" src="/sites/default/files/inline-images/Drupal84DateTimeRange.png" width="626" /></p> <h3>Content Moderation and Workflow</h3> <p>Although I've been a longtime user of Drupal, for a two year period I managed my website on the Agility CMS. One of the benefits of Agility over Drupal were the workflow and moderation tools delivered "out of the box". The ability to moderate content becomes especially important in websites that have multiple authors and editors collaborating together and in need to mark whether the content is a draft, ready for review, in need of revision, ready to publish, etc. With Drupal 8.4 the Workflow modules is now stable and provides the framework to build additional modules such as the much anticipated Content Moderation module. Currently, the new core Content Moderation is considered experimental and beta stable so additional future changes should be expected. Content moderation workflows can now apply to any entity types that support revisions, and numerous usability issues and critical bugs are resolved in this release.</p> <h3>Media Handling</h3> <p>Another long standing issue for me has been how Drupal handles, displays, and allows you to reuses (it doesn't without outside help) those images. Over the years, there has been a host of solutions found via contributed modules but I've often found myself frustrated that support for these modules vary and often compatible versions are not made available until weeks or months after a new major version of Drupal has been released. The new core Media module wants to change this hurdle by providing an API for reusable media entities and references. It is based on the contributed <a href="https://drupal.org/project/media_entity">Media Entity</a> module which has become popular in recent years within Drupal's users.</p> <p>Unfortunately, the core Media module still needs work and is currently marked <strong>hidden</strong>. In other words Media by default will not appear in Drupal 8.4's module administration page. The module will be displayed to site builders normally once once related user experience issues are resolved in a future release. Although, if you elect to use a contributed module under development that depends on the core Media module it will enable Media automatically for you. Similarly, the REST API and normalizations for Media are not final and support for decoupled applications will be improved in a future release. So while the Media API in available in this version of Drupal, most of us non-developers will need to wait for additional development to see the benefits of this module. </p> <h3>Additional Information on Drupal 8.4</h3> <p>An overview of Drupal 8.4 can be found at <a href="https://www.drupal.org/blog/drupal-8-4-0">Drupal.org</a> but for a better list of the changes and fixes you'll want to check out the <a href="https://www.drupal.org/project/drupal/releases/8.4.0">release notes</a>. As always, links to the latest version of Drupal can be found on the <a href="https://www.drupal.org/project/drupal">project page</a>. I've seen a few strange errors in the logs since updating my site from Drupal 8.3 to 8.4 but nothing significant for me to recommend waiting to install Drupal 8.4. For those that are more cautious, the next bugfix release (8.4.1) is scheduled for November 1, 2017.</p> <p><em><a href="https://www.socpub.com/articles/drupal-84-available-and-fixes-huge-database-caching-issues-15669">Article</a> originally published at <a href="https://www.socpub.com/">socPub</a>.</em></p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/drupal-84-available-and-fixes-significant-database-caching-issues-2004" st_title="Drupal 8.4 Available and Fixes Significant Database Caching Issues" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/drupal-84-available-and-fixes-significant-database-caching-issues-2004" st_title="Drupal 8.4 Available and Fixes Significant Database Caching Issues" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/drupal-84-available-and-fixes-significant-database-caching-issues-2004" st_title="Drupal 8.4 Available and Fixes Significant Database Caching Issues" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/drupal-84-available-and-fixes-significant-database-caching-issues-2004" st_title="Drupal 8.4 Available and Fixes Significant Database Caching Issues" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/drupal-84-available-and-fixes-significant-database-caching-issues-2004" st_title="Drupal 8.4 Available and Fixes Significant Database Caching Issues" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=2004&amp;2=comment&amp;3=comment" token="HWwwPy50wSMBbrnlrJPvG0w49CYbqmkKdYm4lfxzvts"></drupal-render-placeholder> </section> <div class="field field--name-field-disqus field--type-disqus-comment field--label-above"> <div class="field--label">Disqus</div> <div class="field--item"><drupal-render-placeholder callback="Drupal\disqus\Element\Disqus::displayDisqusComments" arguments="0=Drupal%208.4%20Available%20and%20Fixes%20Significant%20Database%20Caching%20Issues&amp;1=https%3A//bryanruby.com/drupal-84-available-and-fixes-significant-database-caching-issues-2004&amp;2=node/2004" token="pr_EQwWCi6f8ag5KA7NJhroVJnZq3kj6gc7gfxb50rk"></drupal-render-placeholder></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/content-management" property="schema:about" hreflang="en">Content Management</a></div> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> <div class="field--item"><a href="/tags/open-source" property="schema:about" hreflang="en">Open Source</a></div> <div class="field--item"><a href="/tags/information-system" property="schema:about" hreflang="en">Information System</a></div> <div class="field--item"><a href="/tags/system-administration" property="schema:about" hreflang="en">System Administration</a></div> <div class="field--item"><a href="/tags/words" property="schema:about" hreflang="en">Words</a></div> </div> </div> Sun, 15 Oct 2017 01:58:06 +0000 Bryan Ruby 2004 at https://bryanruby.com Drupal Security: Not Shocking but Responsible https://bryanruby.com/drupal-security-not-shocking-responsible-1963 <span property="schema:name">Drupal Security: Not Shocking but Responsible</span> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2014-11-01T16:24:44+00:00">Sat, 11/01/2014 - 11:24</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Over the years, I've made it an unwritten policy not to sensationalize bug fixes and security vulnerabilities in content management systems. While there may be great interest in such stories, I believe such stories have a tendency to cause more harm than good. When sensationalized, such articles tend to cause customers to address security concerns with emotion instead of logic which is never a good thing. So, when the security vulnerability known as "Drupageddon" broke and Drupal developer Bevan Rudge posted "<a href="http://drupal.geek.nz/blog/your-drupal-websites-backdoor">Your Drupal website has a backdoor</a>", I knew this story was going to eventually reach mainstream media. In the meantime, I've been struggling on how best to write this article and what story need to be told.</p> <p>For those that don't know, Drupageddon is the highly critical SQL injection vulnerability in Drupal 7 core and was fully disclosed by the Drupal Security Team in <a href="https://www.drupal.org/SA-CORE-2014-005">SA-CORE-2014-005</a>. Since the dawn of time when databases were introduced to websites, <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL injection</a> vulnerabilities have been discovered and in the majority of cases when found are patched by their developers and system administrators. What makes Drupageddon particularly nasty is the vulnerability can be exploited by users not even logged into your site (in Drupal they're called anonymous users). Worse, if you didn't update your site quickly enough, your site may still be compromised even after applying the fix (in <a href="https://www.drupal.org/download">Drupal 7.32</a> or later versions).</p> <p>It took two weeks, but the media have finally begun to use this Drupal event to sell their headlines. A recent <a href="http://www.bbc.com/news/technology-29846539">BBC article</a> claims that "up to 12 million websites may have been compromised by attackers who took advantage of a bug in the widely used Drupal software". While there is the <em>potential</em> for every single Drupal site on this earth to be compromised, I tend to believe Bevan Rudge's assessment that the real world numbers are more likely in the "hundreds of thousands". But the author of the article also found someone to state that this vulnerability and the need to audit your system for additional vulnerabilities is "shocking".</p> <p>Having managed various software applications and websites for two decades, I find myself annoyed and angry that once again I'm patching and auditing my websites with extreme effort. We've all seen these type of security exploits in a wide range of software applications from a wide range of software developers. Ten years ago I discovered an ecommerce website that I managed hacked due to a SQL injection exploit. What upset me the most wasn't that the site was hacked but that the application's developers were aware of the problem for months but failed to publicly disclose the information to users. While the software industry has gotten better to disclose vulnerabilities and provide fixes for their software there is a lot of improvement than can still be made.</p> <p>Perhaps what is shocking for those that don't know Drupal's open source community isn't the security exploit itself, but observing Drupal's willingness to fully disclose and take responsible steps to fix what is broken. It has been my experience that too many software vendors attempt to "soften the blow" in their disclosures to please the marketing arm of their company no matter how serious the exploit. Drupal on the other hand often takes the opposite approach. As a CMS critic I don't think I could write stronger words of warning in an article than what Drupal's community already does.</p> <blockquote><p><em><a href="https://www.drupal.org/SA-CORE-2014-005">Drupal Security Team:</a>  </em>A vulnerability in this API allows an attacker to send specially crafted requests resulting in arbitrary SQL execution. Depending on the content of the requests this can lead to privilege escalation, arbitrary PHP execution, or other attacks. This vulnerability can be exploited by anonymous users. [October 15, 2014]</p> </blockquote> <blockquote><p><em><a href="http://drupal.geek.nz/blog/your-drupal-websites-backdoor">Bevan Rudge, Drupal.Geek.NZ</a>:</em> I estimate hundreds of thousands of Drupal websites now have backdoors; between ten and ninety percent of all Drupal websites. Automated Drupageddon exploits were in the wild within hours of the announcement. Updating or patching Drupal does not fix backdoors that attackers installed before updating or patching Drupal. Backdoors give attackers admin access and allow arbitrary PHP execution.</p> <p>If your Drupal 7 (and 8) website is not updated or patched it is most likely compromised. If your website was not updated within a day of the announcement, it is probably compromised. Even if your website was updated within a day, it may be compromised. [October 22, 2014]</p> </blockquote> <blockquote><p><em><a href="https://www.drupal.org/PSA-2014-003">Drupal Security Team</a>:</em> While recovery without restoring from backup may be possible, this is not advised because backdoors can be extremely difficult to find. The recommendation is to restore from backup or rebuild from scratch. [October 29, 1014]</p> </blockquote> <p>I'm not a software developer, but I understand the news cycle for covering content management systems very well. Although this is a two week story for the Drupal community, we can expect to see more articles from authors and experts claiming their shock and dismay that such vulnerabilities in the Drupal software can exist. My spin is simply this: the media is only aware of this story because Drupal takes ownership and responsibility to disclose and address security issues in its own software. I personally find news of the vulnerability a non-story. The real story out there are the companies and software developers pointing fingers at Drupal and are not so forthcoming with their own security vulnerabilities. Those are the stories that need to be told.</p> <p><em>This article was originally posted on <a href="http://cmsreport.com/articles/drupal-security-not-shocking-but-responsible-11234">CMS Report</a>.</em></p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/drupal-security-not-shocking-responsible-1963" st_title="Drupal Security: Not Shocking but Responsible" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/drupal-security-not-shocking-responsible-1963" st_title="Drupal Security: Not Shocking but Responsible" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/drupal-security-not-shocking-responsible-1963" st_title="Drupal Security: Not Shocking but Responsible" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/drupal-security-not-shocking-responsible-1963" st_title="Drupal Security: Not Shocking but Responsible" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/drupal-security-not-shocking-responsible-1963" st_title="Drupal Security: Not Shocking but Responsible" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1963&amp;2=comment&amp;3=comment" token="Z0LP8cQn5Rr55uDS0cFWdefyPV8Ue4ZBRJeJWQlURBk"></drupal-render-placeholder> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> <div class="field--item"><a href="/tags/security" property="schema:about" hreflang="en">Security</a></div> <div class="field--item"><a href="/tags/information-technology" property="schema:about" hreflang="en">Information Technology</a></div> <div class="field--item"><a href="/tags/words" property="schema:about" hreflang="en">Words</a></div> </div> </div> Sat, 01 Nov 2014 16:24:44 +0000 Bryan Ruby 1963 at https://bryanruby.com End User Perspective: Drupal 8 Begins Making Headlines https://bryanruby.com/end-user-perspective-drupal-8-begins-making-headlines-1917 <span property="schema:name">End User Perspective: Drupal 8 Begins Making Headlines</span> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2013-09-03T05:30:00+00:00">Tue, 09/03/2013 - 00:30</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>While Drupal 8 has been been under development for <a href="http://buytaert.net/starting-to-work-on-drupal-8">two and a half years</a>, I haven't talked much about it. I learned long ago that it doesn't do much good to talk about an upcoming release of a CMS until the software crosses over from what most of us would consider "vaporware."</p> <p><img alt="" src="http://mediafiles.cmsreport.com/Images/Articles/druplicon_300.png" style="float: right; border-width: 0px; border-style: solid;" />The software needs to be close to beta, allowing for <em>normal</em> folks to actually be able install for testing purposes with a reasonable amount of certainty we don't need to be a developer. If you're a loyal reader of <a href="https://drupal.org/planet">Planet Drupal</a>, by now you should be getting a sense that the time has come to finally talk about Drupal 8.</p> <p>There are a great number of changes coming with Drupal 8. So many, that I'm bound not to understand them all at this point. However, if you take a look at the core initiatives you can see where the core developers are working their hardest in improving Drupal 8.</p> <p>Some of the great things planned for Drupal 8 include better HTML5 and mobile support, improved multilingual features, and setting up Drupal 8 on a modern web development framework (Symfony). Additional focus includes configuration management improvements and support for Views in the Drupal 8 core. While there is still <a href="https://drupal.org/community-initiatives/drupal-core">work to be done</a>, the core developers are starting to see the finish line in their sight.</p> <p>As I mentioned, there are some headlines within the Drupal community that tells me from the user point of view it's time to show some interest in the upcoming Drupal 8. Some of the recent blog posts within the Drupal community I see worthy of mentioning can be found below.</p> <h2><a name="headlines" id="headlines">We've got Drupal 8 on video</a></h2> <p>I'm one of those people that isn't comfortable with installing <em>anything</em> without seeing proof that the software actually is something I want to install. In other words, I'm one of those people that insist on seeing a video, screenshot, or demo before I'm willing to put the effort into installing the software.</p> <p>Albert Volkman, a Senior Drupal Developer for <a href="http://www.mediacurrent.com/">MediaCurrent</a>, recently kicked off a 6-part webinar series on Drupal. In their first webinar of the series they discuss and review the <a href="http://www.mediacurrent.com/blog/drupal-8-site-install-module-installation-directory-layout">Drupal 8 Site Install, Module Installation, and Directory Layout</a>. For long time users and site administrators of Drupal, the discussion of changes in the directory layout will probably interest you most.</p> <p><iframe src="http://www.youtube.com/embed/k9G2IWGgWjY?rel=0&amp;feature=share&amp;list=UUes1ZPPf8NUIJiSOm3yuYag&amp;wmode=opaque" allowfullscreen="allowfullscreen" style="display: block; margin-left: auto; margin-right: auto;" height="315" width="383"></iframe></p> <h2>Module and theme developers have an API (almost)</h2> <p>On July 1, Drupal announced that its Drupal 8 API was "freezing," giving way to only changes in the API that are necessary to resolve important issues before Drupal 8 can be released. API stands for "Application Programming Interface", and it's important in that it allows developers to extend the core functions of software in such things as modules, plug-ins, and third-party applications. In the Drupal community, this means that module and theme developers can start working on their "own stuff" so that it works within the Drupal 8 platform.</p> <p>While there are still a number of <a href="https://groups.drupal.org/node/313408">outstanding Drupal 8 API changes</a> for core and contributed modules to resolve, it's close enough for Dries Buytaert to say <a href="http://buytaert.net/drupal-8-apis-are-freezing-but-not-frozen">now is the time</a> (with some caveats) for developers to start the initial stages of porting over their modules and themes to Drupal 8.</p> <blockquote><p>Module and theme developers are encouraged to <em>start</em> porting now so they can uncover critical and major API problems while they can still be fixed. But if you are hoping to go through the process of porting your module or theme only once, the best time for that is after the first <em>release candidate</em> (see "What can I expect for beta?" below). At that point, the number of critical issues should be at or just above zero, meaning API changes should be extremely rare and only occur if there's no other way to resolve a severe problem.</p> </blockquote> <p>In the same blog post, Dries also talks about sitebuilders (that's people like me) should being trying out and testing Drupal 8 at the start of Beta 1. If you're not really interested in providing feedback to the Drupal community, then you most likely will want to wait until the first release candidate is out.</p> <h2>How to get your Drupal 7 site ready for Drupal 8</h2> <p>Moshe Weitzman, Director for Research and Development at Acquia, recently wrote a nice blog post on how to <a href="https://www.acquia.com/blog/getting-your-site-ready-drupal-8">get your site ready for Drupal 8</a>. If you haven't been through a major Drupal upgrade before, articles such these are a "must read." For long-time Drupal users who have migrated their sites (I have some sites that originated with Drupal 4.6), most of this is "common sense," but I still encourage you to read it. Nothing can kill a Drupal upgrade more than "I already know how" cockiness, and lack of humility. As Moshe points out, "Upgrading to Drupal 8 is non-trivial."</p> <p>The more you do your homework now, the smoother your Drupal 8 upgrade will go when Drupal 8 is finally released.</p> <p>What I liked most about Moshe's post is that he also points to Drupal 7 modules available that will give you a taste of what Drupal 8 has to offer. In other words, you have some options to "backport" some of Drupal 8's features into your Drupal 7 site. Little things like installing the Navbar module will allow your Drupal 7 site administrators to become more comfortable when it's time to adjust to the upcoming Drupal 8-way of doing things.</p> <p><em>A version of this article first appeared as <a href="http://cmsconnection.com/drupal-8-begins-making-headlines">Drupal 8 Begins Making Headlines</a> at <a href="http://www.cmsconnection.com/">The CMS Connection</a>.</em></p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/end-user-perspective-drupal-8-begins-making-headlines-1917" st_title="End User Perspective: Drupal 8 Begins Making Headlines" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/end-user-perspective-drupal-8-begins-making-headlines-1917" st_title="End User Perspective: Drupal 8 Begins Making Headlines" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/end-user-perspective-drupal-8-begins-making-headlines-1917" st_title="End User Perspective: Drupal 8 Begins Making Headlines" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/end-user-perspective-drupal-8-begins-making-headlines-1917" st_title="End User Perspective: Drupal 8 Begins Making Headlines" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/end-user-perspective-drupal-8-begins-making-headlines-1917" st_title="End User Perspective: Drupal 8 Begins Making Headlines" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1917&amp;2=comment&amp;3=comment" token="z7rrHD-A8yERARBDyC3IeG62BdXhKSgm1rCRZwpk5qY"></drupal-render-placeholder> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/words" property="schema:about" hreflang="en">Words</a></div> <div class="field--item"><a href="/tags/software-development" property="schema:about" hreflang="en">Software Development</a></div> </div> </div> Tue, 03 Sep 2013 05:30:00 +0000 Bryan Ruby 1917 at https://bryanruby.com The Best Drupal and Joomla Comparison of 2013 https://bryanruby.com/best-drupal-and-joomla-comparison-2013-1897 <span property="schema:name">The Best Drupal and Joomla Comparison of 2013</span> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2013-03-04T06:15:00+00:00">Mon, 03/04/2013 - 00:15</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Sitting on my desktop the past few weeks has been an eBook from the Aluent Group, <em>Drupal and Joomla!: A Comparison of Project Processes and Costs</em>. I probably would have not read this eBook if it wasn't for an acquaintance of mine, Justin Kerr, letting me know that he was a co-author of the book. I'm lucky to have read the book because I think Justin Kerr as well as co-authors Robert Nowak and Jet Pixel have hit a home run in their review and comparison of Drupal and Joomla.</p> <p> <img alt="" src="http://mediafiles.cmsreport.com/Images/Articles/2013/Aluent_eBook_Cover_small.jpg" style="float: left; margin-right: 5px;" /></p><p>Writing a comparison of any two content management systems can be challenging. This is especially true when the CMSs in the comparison are open source and each CMS has a legion of followers ready to pounce on anything you write that they perceive as false. For the reviewer, there is probably no better two open source CMSs to compare that can provide so much reward or risk than Drupal and Joomla. If you're lucky, have your facts in order, and the mood is just right then you too can take the Internet by storm just like I did in <a href="node/1756">2006</a>. Don't do your homework and you will fail a miserable writers death. </p> <p><em>Drupal and Joomla!: A Comparison of Project Processes and Costs</em> is probably one of the most well-written comparisons between the two CMS platforms that I've read in a very long time. The authors' intended audience for this comparison include system implementers, IT department heads, creative agency owners, multimedia department leads and Web site stakeholders who are faced with a choice between Drupal and Joomla. In this <a href="http://aluent.com/ebook">free eBook</a> the comparison made is between Drupal 7 and Joomla 2.5 with the most significant metric used in this book being cost not in terms of money but in hours to accomplish the various tasks.</p> <blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><p>For all metrics presented in this e-book, we use estimated “person hours” to provide a relative scale for measuring costs between processes and tasks.  An hourly metric makes more sense than a cash amount, since different organizations will use different rates for evaluating project costs.  As mentioned before, all estimates assume an expert level of knowledge and experience with both content management systems, with no time dedicated to discovering platform capabilities, learning best practices or training. [p. 5]</p></blockquote> <div style="text-align: right;"> <p style="text-align: left;">Topics covered in this eBook include CMS setup, content types and structures, Web design and layout, Search Engine Optimization (SEO), custom development, ongoing maintenance, and many other topics. “By breaking down the subject into project-focused phases, we hope to get around the problems of trying to make a top-down, apples-to-apples comparison,” Justin Kerr said. “The strategy and process of CMS site implementation differs fundamentally between Joomla and Drupal sites. Our ebook uses these comparisons of project phases to highlight the differences and hopefully inspire strong comprehension of how these systems work within real-world deployments.”</p> </div> <p>While the comparisons between Drupal and Joomla are as fair and non-biased as one could be, I found the actual format of the 38 page book the authors use to also be compelling. Fans of Drupal or Joomla will be pleased to find that the authors have an equal understanding of both CMSs and IT decision makers will be pleased to have found material they can take to their organization's executives. The book is consistent and logical with how it describes business/development processes, how both Drupal and Joomla performs in each process, and concluding at the end of each topic which CMS you will likely benefit from most based on task and desired outcome.</p> <p>My description of the format and contents of this book can't do it justice alone. So, with permission from the Aluent Group I'd like to show you an example of one of many process focused topics that is covered in this book. The following is one of the first notable significant differences the author makes between Drupal and Joomla. The excerpt below is on the topic of "Content Types and Structures" found on pages 9 to 11 of the book.</p> <blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><h2>Content Types and Structures</h2> <p>Proper construction of a site’s architecture and content structures yields not only a fertile base from which to launch a site, but also a stable, versatile platform for continued growth of site content.  Implementation of content types and structures includes setting out the nature of the content the site is to display, as well as creating the hierarchical structures used to organize and display that content.</p> <p>This process is one of the first areas where significant differences in approach, capabilities and costs appear when comparing Drupal and Joomla content management systems.</p> </blockquote> <blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><div style="text-align: right;"> <h3 style="text-align: left;"><img src="http://mediafiles.cmsreport.com/Images/Articles/druplicon_300.png" style="width: 200px; height: 100px; float: right; margin-left: 5px;" alt="Drupal icon" />Drupal</h3> <p style="text-align: left;">In Drupal, site structures are planned and built from scratch using special sets of tools and conventions.  Drupal’s site structures require significant work and expertise to implement properly, but they can support very high versatility, many different use cases, and extremely complex site architectures.</p> </div> <div style="text-align: right;"> <p style="text-align: left;"><span style="text-align: left;">One characteristic of Drupal’s approach to structuring content is the requirement that the implementer define the different types of content that appear in the site.   Building a Drupal “Content Type” requires selecting and ordering a set of Fields for </span>that Content Type, as well as defining other parameters about how that type of content is accessed and presented.  Each individual item of content in the site (which Drupal calls a “Node”) must be built from a defined Content Type.</p> <p style="text-align: left;">[...]</p> <p style="text-align: left;">Through the process of defining Content Types, Vocabularies and Taxonomy, the Drupal site implementer enjoys a tremendous amount of flexibility in structuring the site’s content items and organization: In fact, this process provides more than enough rope with which inexperienced implementers can hang themselves. Proper planning is essential for project success, and a good deal of time may be required to figure out the best way that Drupal’s organizational structures can support project goals, especially for complex Web sites.</p> <h3 style="text-align: left;"><img src="http://mediafiles.cmsreport.com/Images/Articles/joomla300x150.jpg" alt="Joomla icon" style="width: 200px; height: 100px; float: right; margin-left: 5px;" />Joomla</h3> <p style="text-align: left;">Out of the box, Joomla includes several “core” types of content that a site implementer can immediately use; these include Articles (Joomla’s default for a general Web page), Banners, Contacts, Newsfeeds and Weblinks.  Each of Joomla’s core content types contains capabilities and settings supporting that specific type of use, and they are all available as soon as Joomla is installed.</p> </div> <div style="text-align: right;"> <p style="text-align: left;">[...]</p> <p style="text-align: left;">Third-party software extensions are used to support non-core content types for Joomla, and nearly every type of need for this is met through Joomla’s expansive software ecosystem (headquartered at the Joomla Extension Directory5).  For those who need completely custom content types, several third-party Content Construction Kit (or CCK) extensions are available for installation into Joomla.  Likewise, for projects where content items must reside in multiple categories, third- party tagging extensions are required to add this functionality to Joomla.</p> <h3 style="text-align: left;">Cost Conclusions</h3> <p style="text-align: left;">Joomla’s default support for basic content types and a structural hierarchy makes it much faster and less expensive to implement structured site content.  Most Joomla sites employ its general-purpose Article content type as the main method for containing Web page content, and use the default categories/subcategories system to keep things organized.</p> </div> <div style="text-align: right;"> <p style="text-align: left;"><span style="text-align: left;">In contrast, Drupal sites require implementers to plan and create content types first before meaningful content build-out can begin.  (Note that Drupal 7 does ship with a very basic “page” content type.)  This process takes at least a handful of hours; much longer for sites with specialized content items and complex content relationships.  In general, Drupal’s site structural build-out will take at least 50 percent more time than conducting the equivalent work on Joomla sites.</span></p> <p style="text-align: left;"><span style="text-align: left;">That being said, certain types of complex projects and site requirements may even out the costs: For example, if a site requires multi-categorization of content, or specific, custom content types, the process of installing and configuring the required third-party Joomla extensions can escalate to the work required for content structuring and organization in Drupal.</span></p> <p style="text-align: left;"><span style="text-align: left;">A much higher level of experience and expertise is required to properly manage Drupal’s implementation of content characteristics and structure than using Joomla’s default methods.</span></p> </div> </blockquote> <p>The above is not a complete excerpt from the book on the topic of content type and structure, but hopefully I presented enough to give you a sense of how and where the writers are going in their comparisons. In most of the book the writers do not declare either Drupal or Joomla! as a winner but instead attempt to give you what they see as real world benefits and risks when adopting one CMS over another. While there are many topics (processes) covered in this book, besides the topic of content types and structures I also found the topics of site design and layout, editorial tools, SEO support, site membership, and Software Development Lifecycle Management (SDLM) to be quite enlightening.</p> <p>As I was reading this book I couldn't help but think what most in the open source CMS circles often say, <em>Drupal is for larger complicated sites while Joomla is for simpler smaller sites</em>. Every time I've heard this statement, my stomach literally starts to turn over as I know full well that I've used Drupal on a number of smaller projects. I also know Joomla! is quite capable of being utilized in some very complex scenarios. Again, the authors rise above this debate near the conclusion of the book.</p> <blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><p>Although traditional rubric will say to use Drupal for large and/or complicated sites, and Joomla for simpler, smaller sites, one or the other could still be the best choice for a large or small project scenario, depending on what the Web site needs to accomplish and a host of other factors as outlined in this e-book.</p> <p>Deciding between Drupal and Joomla may come down to the native capabilities of the CMS, anticipated support requirements, or future customization needs; it may even tie into marketplace concerns, such as the availability of professional expertise and services at a level which will result in a successful CMS project. [ ... ] No matter what, careful consideration and planning (and a properly scoped requirements document) will help ensure you make the best choice for your content management system. [p. 36]</p> </blockquote> <p>Over the years, I've recommended less than a handful of articles to readers that wish to know more about the similarities and differences between Drupal and Joomla. <em>Drupal and Joomla!: A Comparison of Project Processes and Costs </em>is a well written work of art and if you're going to read any material on the two CMSs then this one is a must read for 2013. Created by Web development company Aluent Group, the ebook can be downloaded for free from <a href="http://aluent.com/ebook">http://aluent.com/ebook</a> .</p> <p><em>This article was originally posted on <a href="http://cmsreport.com/articles/drupal-and-joomla-comparison-for-2013-5092">CMS Report</a>.</em></p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/best-drupal-and-joomla-comparison-2013-1897" st_title="The Best Drupal and Joomla Comparison of 2013" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/best-drupal-and-joomla-comparison-2013-1897" st_title="The Best Drupal and Joomla Comparison of 2013" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/best-drupal-and-joomla-comparison-2013-1897" st_title="The Best Drupal and Joomla Comparison of 2013" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/best-drupal-and-joomla-comparison-2013-1897" st_title="The Best Drupal and Joomla Comparison of 2013" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/best-drupal-and-joomla-comparison-2013-1897" st_title="The Best Drupal and Joomla Comparison of 2013" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1897&amp;2=comment&amp;3=comment" token="9d-8JKu959BkNZ6shIvscIfm2ueK-HoBwJfI5p1H6ZM"></drupal-render-placeholder> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/words" property="schema:about" hreflang="en">Words</a></div> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> <div class="field--item"><a href="/tags/joomla" property="schema:about" hreflang="en">Joomla</a></div> <div class="field--item"><a href="/tags/information-technology" property="schema:about" hreflang="en">Information Technology</a></div> </div> </div> Mon, 04 Mar 2013 06:15:00 +0000 Bryan Ruby 1897 at https://bryanruby.com The Soft Sell of Open Source over Proprietary https://bryanruby.com/soft-sell-open-source-over-proprietary-1881 <span property="schema:name">The Soft Sell of Open Source over Proprietary</span> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2012-11-05T06:30:00+00:00">Mon, 11/05/2012 - 00:30</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>I do not know when it exactly happened, but a number of years ago I decided to become a pacifist. I am a pacifist that is in the war of <em>open source versus proprietary</em>. In my opinion, the debate over licensing and software development processes is only mildly interesting as it is the quality of the end product that matters to me most. I walk the fine line of being an advocate for open source and a defender of proprietary software. Admittedly I've confused a lot of people that have chosen to take sides in this war. However, there is always room for reasonable civil discussions of any topic when new data and new perspective is given. This is perhaps why within the past week I enjoyed reading a commissioned study conducted by Forrester Consulting on behalf of Acquia that shows the value of open source without necessarily attacking the value of proprietary software.</p> <p>The independent study conducted by Forrester is titled “<em>Is It Time To Consider Open Source WCM For Digital Experience?</em>”. Given that the study is being promoted by Acquia, an open source Drupal company, it shouldn't be surprising to you that this paper highlights the benefits of open source web content management systems (WCM). However, the author of the paper does this in way that that doesn't also dismiss the value of proprietary systems. This paper is an invitation with business reasons given for IT shops that for one reason or another remain proprietary to start considering using open source solutions. That soft sell in my opinion will win over more customers than the doomsday ideologies we often hear from both open source and proprietary proponents.</p> <h2>The case for Open Source WCM</h2> <p>The study found that open source WCM solutions have the highest satisfaction rate for creating dynamic, multichannel digital experiences. Of those who said they were ‘very satisfied’ with their existing WCM solution, open source had the highest satisfaction rate (37%) over “homegrown” (22%) and proprietary solutions (8%).</p> <p style="text-align: center;"><img alt="" src="http://mediafiles.cmsreport.com/Images/Articles/2012/AcquiaSatisfaction1.png" /></p> <p>The Forrester study, commissioned by Acquia, surveyed 160 senior business, marketing and IT decision-makers from organizations with 1,000 to more than 20,000 employees. The survey revealed that 31% of organizations plan on switching WCM platforms this year and 58% indicate that their organization has considered or is considering open source WCM.</p> <p>The Forrester study recommends that when organizations consider switching WCM solutions, they should explore open source as an option. Drupal was among the top five WCM solutions used by organizations that participated in the survey, and the leading open source solution. Among those who currently use open source WCM solutions, 72% said it gave them greater flexibility, and 68% said it was easy to customize.</p> <p> When asked what other enterprise applications they would like to have bundled with their WCM solution, the majority of respondents (35%) said they prefer the ‘best-of-breed’ approach offered by open source WCM, as opposed to using all-in-one suites of pre-packaged tools and services offered by proprietary WCM solutions, which the report says often don’t live up to their promise.</p> <p> According to one survey respondent from a UK educational institution, adding new functionality enhancements took nine to ten months with a proprietary WCM solution, but with open source, they were able to add new functionality within days. Another respondent said: “the ability to customize, along with the availability of the developer network, helped us keep up our pace of innovation.”</p> <p> “As organizations retrench to become more dynamic and customer-centric, it’s abundantly clear that proprietary WCM solutions are not meeting the changing needs and expectations of business decision makers, who don’t want to be locked in to a rigid platform for the sake of convenience,” said Tom Erickson, CEO of Acquia. “The Forrester study revealed that marketers – who are responsible for creating compelling content, community and commerce experiences across multiple channels – are now the ones more aggressively pushing for flexible and open WCM solutions like Drupal.”</p> <h3><span>Marketer Dissatisfaction Prompting Greater Interest in Open Source Solutions</span></h3> <p> According to the survey, marketing professionals appear more likely than their IT counterparts to consider open source WCM (67% vs. 56%, respectively). The fact that marketers have surpassed their IT counterparts in this regard could be an indicator of their growing dissatisfaction with their present WCM platform.</p> <p>Indeed, marketers expressed the most dissatisfaction with their WCM solution over IT pros by more than three-to-one (26% vs. less than 8%). With customer-facing digital experiences (including content delivery, community engagement and commerce) ranked among the top five functions of WCM platforms, it is not surprising that the majority of executives pushing for change in their WCM platform are marketers (55%) rather than IT executives (26%).</p> <p><strong> </strong></p> <h3><span>Planning Leads To Open Source Success</span></h3> <p> <strong> </strong> </p><p>The study also noted that organizations that were focused more on key business drivers and objectives had greater success with open source, as opposed to leveraging it for its proven cost-cutting capabilities alone</p> <p>For instance, the report showed that web site redesigns were more of a business driver for open source (30%) versus proprietary WCM solution users (14%), perhaps reflecting the more complex requirements of creating customer-facing multichannel digital experiences (as opposed to corporate intranets or other corporate/IT uses), and the dissatisfaction with current solutions in supporting those requirements.</p> <p>Similarly, organizations that made specific plans to engage dedicated third-party providers (such as Acquia), and leverage pre-packaged modules from the open source community, had the most success with open source WCM implementations.</p> <h2>The Case for remaining neutral in Open Source versus Proprietary</h2> <p>One of the things I value in this study is that while the research favors the use of open source WCM solutions it does not understate the need for organizations to consider which WCM solution fits their needs better. For example in the Executive Summary the Forrester analysts words their stance in the open source versus proprietary software in this way:</p> <blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><p>We recommend that organizations considering new WCM products explore open source as a potentially viable option, take advantage of the lack of upfront license fee to pilot an open source project, engage with open source WCM communities for information and validation, and be sure to understand support options up front if they choose to proceed with an open source implementation.</p> </blockquote> <p>The words are carefully written where it's not saying that open source is better than proprietary but only that companies and organizations should consider the use of open source software. The analysts give two reasons for why companies may be reluctant to moving from proprietary solutions to software solutions; security and functionality.</p> <blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><p>Despite the widespread interest, interviewees told us that there are significant differences between implementing proprietary and open source WCM solutions. An organization evaluating open source WCM should consider the following:</p> <p>• <strong>Security.</strong> Perception of security risks in open source solutions may not be unfounded. Among respondents who have deployed open source WCM, only 12% strongly agree that open source improved their security; 47% were neutral on the subject. Forty-one percent disagreed or strongly disagreed with the statement that “open source improved our security” — so 88% were either neutral or negative on the topic of open source security. It’s important to understand the details of security concerns — whether they relate specifically to system security, user security, and permissions, for example — and compare them with their proprietary counterparts. Just saying “security” as a reason for selecting or rejecting a technology isn’t enough.</p> <p>• <strong>Level of functionality</strong>. Proprietary WCM vendors seem to offer a wide variety of features and capabilities. But, like eating too much ice cream, too many features for the sake of features can be a bad thing, and organizations may only implement a fraction of the features they buy. However, in a market where the vendor checking the most boxes often wins, having lots of features can still hold sway. WCM buyers currently focus on functionality like mobile delivery, integrated analytics, and content targeting. Open source platforms depend largely on an extended network of peer developers who contribute features and modules to the core systems. This can result in variable experiences with specific modules and features or force companies that adopt open source to innovate quickly to gain the capabilities they want. It’s important to understand which features are most important to your organization and examine whether those features are available in the core product, community-authored modules, or both.</p> </blockquote> <p>While I agree with the authors that there are certain hurdles open source vendors must still overcome to convince proprietary only shops to consider open source, I'm not convinced either open source or proprietary solutions have an advantage over the other with regards to security and functionality. While the discussion of security and level of functionality in a WCM are valid discussions, it is my observation that no vendor has cornered this market solely based on whether they are open source or proprietary. </p> <p>I interpret the fact that Acquia is pushing this research to also mean they are confident that they too can argue that security and functionality are perceived hurdles that open source can easily overcome. One only has to look at Microsoft and Apple to understand that just because companies offer proprietary solutions doesn't mean the debate over which product offers more security and functionality will end. In fact, I submit that any organization that believes their WCM is more secure over another based on the software license is probably unknowingly incubating an organizational culture that makes them more vulnerable and not less to security threats. Securing your software and having the content management functionality you need to support your business is a much more complex issue and one shouldn't let the open source versus proprietary discussion distract them from that truth.</p> <h2>Forrester's Recommendations to Evaluating Open Source Solutions</h2> <p>In the end of the report, the analysts gives these key recommendations in answering the question, "Is open source the solution to your WCM chaos?":</p> <p>• <strong>Actively evaluate open source WCM</strong>. - Don’t allow past biases against open source to control your technology decisions today; while some of the concerns you had five years ago may remain valid, others probably won’t.</p> <p>• <strong>Leverage “free” open source for WCM pilots</strong>. Open source provides an excellent opportunity that many (if not most) commercial, proprietary WCM platforms fail to permit: full-scale software downloads that allow organizations to build pilot solutions on open source WCM without committing to a paid license.</p> <p>• <strong>Engage with the community for information and validation</strong>. Organizations evaluating open source WCM should engage with the community for references and to evaluate the level of community involvement for particular open source projects or products.</p> <p>• <strong>Explore open source support options carefully</strong>. - Organizations considering open source should evaluate third-party agencies to discover which open source products they support, types of service-level agreements available, and whether or not they will support any community-authored modules needed to meet their requirements.</p> <p>A copy of the Forrester Study, <a href="https://www.acquia.com/resources/whitepapers/time-to-consider-open-source-wcm">Is It Time To Consider Open Source WCM For Digital Experience?</a>, can be requested from the <a href="https://www.acquia.com/">Acquia</a> website.</p> <p>[Additional Source: <a href="https://www.acquia.com/about-us/newsroom/press-releases/new-independent-survey-indicates-open-source-web-content-management">Acquia.com</a> Press Release]</p> <p><em>This article first appeared at <a href="http://cmsreport.com/articles/the-soft-sell-for-open-source-over-proprietary-4908">CMS Report</a>.</em></p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/soft-sell-open-source-over-proprietary-1881" st_title="The Soft Sell of Open Source over Proprietary" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/soft-sell-open-source-over-proprietary-1881" st_title="The Soft Sell of Open Source over Proprietary" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/soft-sell-open-source-over-proprietary-1881" st_title="The Soft Sell of Open Source over Proprietary" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/soft-sell-open-source-over-proprietary-1881" st_title="The Soft Sell of Open Source over Proprietary" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/soft-sell-open-source-over-proprietary-1881" st_title="The Soft Sell of Open Source over Proprietary" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1881&amp;2=comment&amp;3=comment" token="TpqE9dS6MNhAoSDp6fcsY3Ym4jOaolW3yaaU8Fu8hxo"></drupal-render-placeholder> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/thoughts" property="schema:about" hreflang="en">Thoughts</a></div> <div class="field--item"><a href="/tags/words" property="schema:about" hreflang="en">Words</a></div> <div class="field--item"><a href="/tags/open-source" property="schema:about" hreflang="en">Open Source</a></div> <div class="field--item"><a href="/tags/business" property="schema:about" hreflang="en">Business</a></div> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> <div class="field--item"><a href="/tags/information-technology" property="schema:about" hreflang="en">Information Technology</a></div> </div> </div> Mon, 05 Nov 2012 06:30:00 +0000 Bryan Ruby 1881 at https://bryanruby.com Leaving Drupal is Hard to Do https://bryanruby.com/leaving-drupal-hard-do-1818 <span property="schema:name">Leaving Drupal is Hard to Do</span> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2012-09-10T06:58:00+00:00">Mon, 09/10/2012 - 01:58</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Two years ago I began a <a href="http://cmsreport.com/articles/crossroads-determining-the-future-of-cmsreport-com-2792">process</a> to consider how best to evolve CMSReport.com beyond where it is today. I've known for some time that I needed to take some risks, get out of my comfort zone, and perhaps change how I maintain and run the site. Given the opportunity and in the spirit of taking risks I've decided to no longer run <em>CMS Report</em> on <a href="http://drupal.org">Drupal</a>. That's right, after running this site on Drupal for more than <a href="http://cmsreport.com/articles/the-beginning-of-cmsreport-com-1689">six years</a> on Drupal I've decided to use another content management system.</p> <p>For those that don't want to be left hanging, I mention the CMS I've chosen to run the upgraded site on toward the end of this article. In a separate article I'll get into the specifics for why I decided on this <em>other</em> CMS and discuss the strengths and weaknesses of both information systems.</p> <p>My primary objective with this post isn't to talk about another CMS, but instead to focus on Drupal and reflect on how much I owe a debt of gratitude to the Drupal community. I also want to make it clear that my decision to use another CMS is not a reflection of my opinions regarding Drupal. On the contrary, I have a number of past and future projects where Drupal remains <em>the</em> solution for my content management needs. </p> <h3>My History with the Drupal CMS </h3> <p>Six years ago I wisely picked Drupal as the CMS to run my site. Not only was this open source software a perfect solution for me to manage my content, Drupal also gave me the freedom and control I needed to run the site the way I saw fit. Over the years Drupal allowed me to pick and modify my own themes, choose my own modules, and host my site on servers of my own choosing all under the banner of the glorious <a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL</a>. Excluding my time and skills, I've never had to spend more than $50 a month to run this site and there were times I even gambled on the budget shared hosting plans and paid as little as $10 a month. Drupal's power and affordability is why I have and will continue to recommend Drupal for a number of projects. </p> <p><img src="http://mediafiles.cmsreport.com/Images/Articles/2012/druplicon.small_.png" style="float: right;" alt="Drupal's Druplicon" /></p> <p>My introduction to Drupal was in the era of Drupal 4.X which was a time when point versions really mattered. I started CMS Report on a development version of Drupal 4.7 and for a few years I was on the cutting edge of using new versions of Drupal in production sooner rather than later. I think Drupal developers visited my site not just for the content but because they could see how well their new code was performing on a production server. For awhile, <em>CMS Report</em> became a guinea pig and testing bed for various Drupal projects. In 2007, Dries asked me to beta test his "secret Drupal project" on my site which later became known as Mollom. In 2008 and 2009, Acquia invited me to test and run this site on Acquia Drupal, Acquia Network, and Acquia Search. My enthusiasm with popular Drupal modules such as Views, Search Lucene, XML Sitemap also spurred mutual respect and some great conversations with the project leads of those modules.</p> <p>Eventually, my site became too popular to take the risks of running the site on unproven upgrades and somewhere between Drupal 6 and Drupal 7 I played it more safe. Not installing the latest and greatest version of Drupal without fully testing was the responsible choice to make but I miss those geeky fun years of running the site. As I write this article, I've been running the site on <a href="http://cmsreport.com/articles/cms-report-upgrades-to-drupal-7-2828">Drupal 7</a> since June 2011 and have had almost no problems with the CMS after resolving my the initial issues after the upgrade from Drupal 6.   </p> <h3>It's a Drupal Community Lovefest</h3> <p>When I look back I am in awe of the people that invited me to the table and grateful when being served I was still shown great respect when I didn't know how to properly hold my fork and knife.  Despite my lack of active participation in the Drupal community, wherever I go the Drupal folks have almost always given me their ear to listen to my opinions, their voice to guide me along the way, and their time to lend me a hand to solve issues I've uncovered. I know of no other open source community in the business of content management that has been more welcoming, more helpful, and more professional than those in the Drupal community.</p> <p>Not all of us are capable of being Drupal rock stars, but we're all capable of contributing by giving a simple thanks for all those that work so hard to make Drupal as good as it is. I've always understood the value of Drupal and the Drupal community which is also why in 2007 I became one of the very <a href="https://association.drupal.org/membership/individuals">first members</a> to join the Drupal Association. If you haven't yet contributed time and effort to making Drupal better, perhaps the Drupal Association may be the option for you to give at least a little something back to the community as a whole? If for nothing else, your <a href="https://association.drupal.org/membership">membership</a> entitles you every year to knowing the exchange rate between the U.S. Dollar and the Euro :-) .</p> <p>The Drupal community feels like family to me. Some will argue I'm overdoing it by calling an open source community family but consider for a moment the examples for why I make this claim. Earlier this year I lost the address to a VIP dinner invite at CMS Expo in Chicago, but I think I ended up at a better place. As luck would have it there was also a Drupal meet-up that night hosted by local Chicago Drupalers and I was more than welcomed to join their party. Then there is the fact that I smile everytime I hear word of Drupalers getting married, having kids, or starting for their own Drupal business. Nothing made me happer knowing the day my son learned one of his very first songs, the "<a href="http://youtu.be/dRlwfhOt-vA">Drupal song</a>". Over time I've also shed tears when sad news arrives of a Drupal member struggling with unexpected challenges or unwelcomed heartache. I've been haunted most of this summer with the news of <a href="http://aaronwinborn.com/blogs/aaron/special-needs-trust">Aaaron Winborn's battles with ALS</a> and wish I could do more for him and his own family. I don't know how better way to describe the Drupal community other than family, do you? Drupal is the tie that binds us all.</p> <h3>Why leave Drupal?</h3> <p>As I indicated before, I'm not abandoning my bias opinion that <a href="http://cmsreport.com/articles/the-dangers-of-reviewing-open-source-cms-2485">Drupal is still <em>the</em> best</a> open source CMS on the market. However, because <em>CMS Report</em> is in the business of reviewing content management solutions, my enthusiasm for Drupal has also become a distraction for others that would like to take the site more seriously. The truth is that in order for my opinions regarding Drupal to have any credibility I also have to show a willingness to publicly work with other CMSs out there. I know, that sounds strange but that is the way this market often works.</p> <p>Two years ago, I wrote a blog post indicating that I yearned to partner with others to build a bigger and better CMSReport.com. Since that post, I received a number of offers but many of the inquiries didn't understand Drupal well enough nor the magnitude of what they were proposing to migrating my content to another Drupal site or another CMS. Finally, I received a call from Michael Assad, Co-founder and CEO of <a href="http://www.agilitycms.com">Agility Inc</a>. It was obvious to me from the start that Mike and I had the opportunity to challenge each other on this project in ways that would be beneficial to both of us. Over time, Mike convinced me that he was the person I should collaborate with in order to evolve my site to something better than it is today.</p> <p>When someone tells you they are a consultant, analyst, or reviewer of content management systems what they don't tell you is that there are relatively few CMSs they actually work with themselves on a day to day basis. Despite the hundreds of CMSs I've talked about over the years, I've only worked hand-on with a dozen or so on actual projects. I was impressed that Mike had the balls to propose moving my site away from Drupal to Agility CMS, a semi-proprietary content management solution, while remaining confident that once the migration was complete I would be happy that I made such a move. When it was all said and done, I ran out of excuses to not take the risk in trying out and learning something new. If I'm going to leave Drupal behind then I definitely want someone like Mike with the vision and the means to making it happen.</p> <p>Migration of the site from Drupal to Agility is almost complete and I expect the new site to be online the second half of September.</p> <h3>Once a Drupaler, Always a Drupaler</h3> <p>Although I may no longer be using Drupal for CMSReport.com I continue to work with Drupal on a number of additional projects, especially behind the firewalls of my primary employer. However it is the future and knowing that 2013 will bring us Drupal 8 that excites me most. I've owned an unused Internet domain for a couple years that I've held very close to my chest knowing that the domain name alone has great value. The idea of building a completely new site on Drupal 8 around this domain with no legacy content obligations is a rare opportunity and something I want to make happen.</p> <p>In the meantime, I still have to find a new Drupal home to host my contribution on Drupal Planet. I'm a big believer that if you're going to have your content aggregated on Drupal.org then the very least you can do is use a Drupal CMS. I haven't decided whether I'll host my new personal site on my own or use a Drupal SaaS provider.  I'm leaning toward Drupal Gardens but as always, I'm open to hearing other options.</p> <p><em>This article first appeared at <a href="http://cmsreport.com/articles/leaving-drupal-is-hard-to-do-4353">CMS Report</a>.</em></p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/leaving-drupal-hard-do-1818" st_title="Leaving Drupal is Hard to Do" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/leaving-drupal-hard-do-1818" st_title="Leaving Drupal is Hard to Do" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/leaving-drupal-hard-do-1818" st_title="Leaving Drupal is Hard to Do" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/leaving-drupal-hard-do-1818" st_title="Leaving Drupal is Hard to Do" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/leaving-drupal-hard-do-1818" st_title="Leaving Drupal is Hard to Do" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1818&amp;2=comment&amp;3=comment" token="eBZSGqdppVGUDytlreYzK-fxo8xvLnzNhEMgR_90cTU"></drupal-render-placeholder> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/words" property="schema:about" hreflang="en">Words</a></div> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> <div class="field--item"><a href="/tags/open-source" property="schema:about" hreflang="en">Open Source</a></div> <div class="field--item"><a href="/tags/deeds" property="schema:about" hreflang="en">Deeds</a></div> </div> </div> Mon, 10 Sep 2012 06:58:00 +0000 Bryan Ruby 1818 at https://bryanruby.com Upcoming Drupal in the Clouds panel at CMS Expo https://bryanruby.com/upcoming-drupal-clouds-panel-cms-expo-1744 <span property="schema:name">Upcoming Drupal in the Clouds panel at CMS Expo</span> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field--label">Image</div> <div class="field--items"> <div class="field--item"> <img property="schema:image" src="/sites/default/files/field/image/2012-CMSX-300x250.jpg" width="300" height="250" alt="CMS Expo 2012" typeof="foaf:Image" class="img-responsive" /> </div> </div> </div> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2012-05-02T12:37:00+00:00">Wed, 05/02/2012 - 07:37</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Although, I like to consider myself unbiased when I blog about content management systems, it is no secret that Drupal holds a special place in my heart. Drupal was one of the first CMSs I used that didn't "dead-end" me on a project I was required to support. Over the years, the Drupal community has treated me well, even during those times when I was very wrong in my judgment of Drupal. If Drupal was not a part of my world, I'm not sure I would even be blogging about content management systems. Drupal is the open source standard for which I judge other CMSs.</p> <p>So, it should come to no surprise to anyone that when <a href="http://www.cmsexpo.net/speakers/1-101-John_and_Linda_Coonen">John Coonen</a> inquired if I would moderate a Drupal in the Clouds panel at CMS Expo, I jumped at the opportunity. I am excited about the high caliber people that will be on this Drupal in the Cloud panel. The panelists include Joni Klippert from Standing Cloud, Kieran Lal from Acquia, and Jeff Walpole from Phase2 Technology. If you're trying to figure out what is involved in getting your Drupal site, services, and support to the Cloud, these are the people you want to have in the room answering your questions.</p> <p>Even if you have no interest in Drupal for your CMS, I encourage you to attend this panel to learn more about content management in the Cloud as well as SaaS and PaaS. Like many of you, I've had my concerns and doubts in the past about <em>the Cloud</em>. Is all this talk about the cloud and SaaS a marketing gimmick? Is there any real benefit for my business to putting content into the cloud? During last year's CMS Expo I got my initial answers to these questions after talking to the folks at Acquia, Accrisoft, and Agility. The move toward the Cloud and software-as-a-service for content management is the real thing. It wasn't just the people from these companies that convinced me but their customers too. </p> <p>If you are at CMS Expo this year, be sure to attend this 3:30 PM Drupal in the Cloud session on Wednesday, May 9, 2012. If you're worried that you may not know enough about Drupal or the Cloud to enjoy this session, please attend anyway. CMS Expo is geared for the newbie as well as the expert and I think this will be a great session for everyone to attend.</p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/upcoming-drupal-clouds-panel-cms-expo-1744" st_title="Upcoming Drupal in the Clouds panel at CMS Expo" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/upcoming-drupal-clouds-panel-cms-expo-1744" st_title="Upcoming Drupal in the Clouds panel at CMS Expo" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/upcoming-drupal-clouds-panel-cms-expo-1744" st_title="Upcoming Drupal in the Clouds panel at CMS Expo" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/upcoming-drupal-clouds-panel-cms-expo-1744" st_title="Upcoming Drupal in the Clouds panel at CMS Expo" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/upcoming-drupal-clouds-panel-cms-expo-1744" st_title="Upcoming Drupal in the Clouds panel at CMS Expo" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1744&amp;2=comment&amp;3=comment" token="fM6I-oMWg7U1ASwsJCsXMU3Eg7cSML9Og_n3eIKopZQ"></drupal-render-placeholder> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> <div class="field--item"><a href="/tags/deeds" property="schema:about" hreflang="en">Deeds</a></div> <div class="field--item"><a href="/tags/information-technology" property="schema:about" hreflang="en">Information Technology</a></div> <div class="field--item"><a href="/tags/conference" property="schema:about" hreflang="en">Conference</a></div> </div> </div> Wed, 02 May 2012 12:37:00 +0000 Bryan Ruby 1744 at https://bryanruby.com Book Club: Pro Drupal 7 Development https://bryanruby.com/book-club-pro-drupal-7-development-1733 <span property="schema:name">Book Club: Pro Drupal 7 Development</span> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2011-11-18T09:16:00+00:00">Fri, 11/18/2011 - 03:16</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>As I mentioned in a <a href="http://cmsreport.com/articles/book-club-modx-the-official-guide-2839">previous post</a>, I'm currently playing catch-up in discussing all the good books sent my way this past year. Many of the books have been sent by the authors and publishers themselves for review and some of the books I've bought on my own dime. There should be no further evidence that I'm a procrastinator in posting book reviews than this particular review of Todd Tomlinson and John K. Vandyke's <a href="http://www.apress.com/9781430228387"><em>Pro Drupal 7 Development</em></a>. This book was published almost a year ago, and I'm only now finding the time to blog about this book.</p> <p><img alt="Cover of Pro Drupal 7 Development" src="http://mediafiles.cmsreport.com/files/blog/2011/ProD7.png" style="width: 80px; height: 106px; float: right; margin: 5px;" />While it has been close to a year since this book was published (about just as long since Drupal 7 was released), I marvel how relevant <em>Pro Drupal 7 Development</em> remains as a valuable resource to me. This book and its<a href="http://cmsreport.com/articles/a-drupal-book-for-the-drupal-developer-wannabe-2224"> previous versions</a> have saved my hide so many times that I have lost count. This book may have been sitting on my desk for a year but I assure you it hasn't been collecting dust.</p> <p>If you're going to get any Drupal book in print this is the book you should get if you're going to do any development with Drupal or simply need to troubleshoot your way out of a Drupal related problem. I realize there are a lot of resources available online from the Drupal community that contains much of the same material found in this book. However, this book organizes the material in such a thoughtful manner that I find the looking up material via the book more efficient than seeing it out though online search.</p> <blockquote><p>Pro Drupal 7 Development updates the most popular development reference for the release of Drupal 7. With several new and completely-rewritten essential APIs and improvements in Drupal 7, this book will not only teach developers how to write modules ranging from simple to complex, but also how Drupal itself works.</p> <ul><li>Learn the Drupal APIs and major changes in Drupal 7</li> <li>Learn how to write Drupal modules using the APIs</li> <li>Learn proper development practices and how to become a contributing community member</li> </ul></blockquote> <p style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">As I mentioned before, I'm more a Drupal user than a Drupal developer. However, I do find myself at times needing to tweak a contributed module or writing a script to insert data into a node. It is during these times that I pull <em>Pro Drupal 7 Development</em> off my bookshelf. Also, this is the third edition of this book and still my favorite part of the book is the Database Table References found in Appendix A. I don't care how well (or in some cases not so well) Drupal and Drupal's contributed modules are written...after running a Drupal site for several years you're going to find yourself run into an occasional issue with your database. This book continues to give me a better understanding of the Drupal database structure so I find myself able to resolve issues with my tables in minutes rather than in hours.</p> <p>This book aims to teach you several things about Drupal development including:</p> <ul><li>How to get started with writing basic modules</li> <li>The flexible Drupal APIs and how they interact with modules</li> <li>How new features in Drupal 7 make modules even more powerful and sophisticated</li> <li>Best practices when developing in Drupal (coding standards, help developer modules)</li> <li>How to write safe, secure, and tested code</li> <li>How to contribute modules back to the Drupal community and maintain their modules using the Concurrent Versions System (CVS)</li> </ul><p>So although Drupal 7 and<span style="font-style: italic;"> </span>this book have been around for a year, I still encourage you to buy Pro Drupal 7 Development if you don't already have it on your bookshelf. I of course am hoping we see a Pro Drupal 8 Development book when Drupal 8 is also ready to be released. I would be lost without my <em>Pro Drupal Development</em> book.</p> <p>If you're interested in browsing for additional Drupal books, you should take a look at the fantastic list of books that have been compiled at <a href="http://drupal.org/books">Drupal.org</a>.</p> <p><em>This article first appeared on <a href="http://cmsreport.com/articles/book-club-pro-drupal-7-development-2842">CMS Report</a>.</em></p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/book-club-pro-drupal-7-development-1733" st_title="Book Club: Pro Drupal 7 Development" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/book-club-pro-drupal-7-development-1733" st_title="Book Club: Pro Drupal 7 Development" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/book-club-pro-drupal-7-development-1733" st_title="Book Club: Pro Drupal 7 Development" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/book-club-pro-drupal-7-development-1733" st_title="Book Club: Pro Drupal 7 Development" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/book-club-pro-drupal-7-development-1733" st_title="Book Club: Pro Drupal 7 Development" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1733&amp;2=comment&amp;3=comment" token="FPUf-0_xsQY6j1d1Gv-Nzm6Fz1velibL9-7QdQwFvnc"></drupal-render-placeholder> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/words" property="schema:about" hreflang="en">Words</a></div> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> <div class="field--item"><a href="/tags/book" property="schema:about" hreflang="en">Book</a></div> </div> </div> Fri, 18 Nov 2011 09:16:00 +0000 Bryan Ruby 1733 at https://bryanruby.com Review of Drupal's Building Blocks https://bryanruby.com/review-drupals-building-blocks-1713 <span property="schema:name">Review of Drupal&#039;s Building Blocks</span> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field--label">Image</div> <div class="field--items"> <div class="field--item"> <img property="schema:image" src="/sites/default/files/field/image/DrupalBuildingBlocks.jpg" width="1151" height="1151" alt="Yes, I read every book I review from cover to cover." typeof="foaf:Image" class="img-responsive" /> </div> </div> </div> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2011-03-09T05:59:00+00:00">Tue, 03/08/2011 - 23:59</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>A couple weeks ago my family spent some vacation time at Disney World in Orlando, Florida. If you have ever been to a Disney theme park then you know full well that it takes a lot of work in those parks just to have <em>fun</em>. Some of the most popular rides in these parks have waiting periods of up to two hours due to the long lines of people wanting to get on board. Luckily, my wife brought a Disney tourist guidebook that gave our family the helpful hints, recommendations, and information we needed to beat those long lines.  In the end, we ended up with a very enjoyable trip (s<em>o enjoyable that we got to ride Space Mountain twice!).</em> That travel guide was a valuable asset to my family's vacation. </p> <p><a href="http://www.amazon.com/gp/product/0321591313?ie=UTF8&amp;tag=cmsreport-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321591313"><img src="http://mediafiles.cmsreport.com/files/51J03cKbsjL._SL160_.jpg" style="border-width: 0px; border-style: solid; float: right;" /></a>Mastering Drupal is very similar to visiting a theme park as it takes some effort on your part to ensure you get rewarded for your effort. If Drupal is the amusement park then consider Drupal's modules as the park's attractions you're wanting to ride. With this line of thinking, I easily recommend that you let Earl and Lynette Miles' book, <em>Drupal's Building Blocks,</em> be your valuable tourist guide into the wonderful world of Drupal. I only review a few books each year and this is a book I gladly invested my time reading.</p> <p><em>Drupal's Building Blocks </em>is a tutorial, reference, and cookbook for some of Drupal's most valuable modules including CCK (Content Construction Kit), Views, and Panels. The primary purpose of this book is to give you the quickest route to mastering the modules as quickly as you can in order to help you create more powerful, flexible, usable, and manageable Web sites. The audience for this book isn't only for Web developers or designers, but also site administrators, content architects, and consultants. There is some code in this book, but what is there isn't the scary code you often find in a developer's library.</p> <p>Although I've worked with Drupal for more than half a decade, I am still among the newbies who struggle with how best to use Drupal's contributed modules. I've built several sites using CCK and Views but I've always ran into hurdles that keep me from fully discovering what these modules can do for me and my sites. This book will provide you the information you need to realize the full potential of these modules. Anybody who has seen Drupal, CCK, Views, and Panels mature over the years can't help but read this book and enjoy not only the author's technical expertise but also the author's cultural and historical understanding for how the module came to be in Drupal. </p> <p>In the first chapter of the book, "Introducing CCK and Nodes", there is a section titled "Quest for the Grail: How CCK Was Born". This section alone reads like an adventure story that starts by talking about the challenges site administrators originally had with Drupal needing to acquire development skills just to control the form content would take in Drupal. The story continues with Drupal 4.4 and how a contributed module named Flexinode gave non-developers the ability to create new content types yet limitations remained. I was reminded that with Drupal 4.7 CCK became Flexinode's replacement and with each successive release of Drupal the module continues to improve. For someone like me who started with Drupal 4.6 and watched Drupal 5, 6, and now 7 evolve this book spoke to my inner geek. I simply found this book to be good bridge to the more technical aspects of CCK, Views and Panels.</p> <!--break--> <p>The book is broken into three parts that focus on the "big three" contributed modules. After the authors of this book introduce you to the module they focus on the needs of the audience with chapters geared toward site administrator and content managers, theme designers, and developers (with a thorough explanation of the API these modules bring). Found in almost all the chapters are notes and exercises to help reinforce what you've just learned in these chapters. By the end of this book, I promise you'll learn the following:</p> <ul><li>Use Content Construction Kit (CCK) to customize your data input forms around your needs</li> <li>Improve site flexibility with Drupal’s node system</li> <li>Add optional field types, including PHP-based fields</li> <li>Customize themes to display data more attractively and legibly</li> <li>Build powerful Views query displays</li> <li>Integrate with SQL databases</li> <li>Customize Views with relationships, arguments, and filters</li> <li>Optimize query performance</li> <li>Add custom styles with the Panels module</li> <li>Maintain full control over sites as you deploy into production</li> </ul><p>I found that I learned the most in Part II of Building Blocks which focuses on Views. I really found myself professionally developing as a Drupal user by increased understanding how the import and export tools worked (Chapter 7) as well as query optimization (Chapter 10) which focuses on the impact Views has on performance. There is also a nice chapter on site deployment covering how one can export CCK structure, Views, and Panels from their development environment onto their production servers.</p> <p>I will say this book is not for Drupal beginners still needing introductions to Drupal. Instead this book is intended for those already familiar with how to install Drupal, enable modules, and author/manage content in Drupal. If you're extremely new to Drupal, I would instead recommend <a href="http://cmsreport.com/blog/2010/three-itcms-books-my-2010-reading-list">Sams Teach Yourself Drupal in 24 Hours</a> which is one of three books I reviewed last year (not sure if one is out for Drupal 7 though). Instead, let Drupal's Building Blocks be the second book you purchase especially if you plan to build sites that heavily utilize CCK, Views, or Panels.</p> <p><em>This article first appeared on <a href="http://cmsreport.com/articles/review-of-drupal-s-building-blocks-2812">CMS Report</a>.</em></p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/review-drupals-building-blocks-1713" st_title="Review of Drupal&#039;s Building Blocks" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/review-drupals-building-blocks-1713" st_title="Review of Drupal&#039;s Building Blocks" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/review-drupals-building-blocks-1713" st_title="Review of Drupal&#039;s Building Blocks" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/review-drupals-building-blocks-1713" st_title="Review of Drupal&#039;s Building Blocks" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/review-drupals-building-blocks-1713" st_title="Review of Drupal&#039;s Building Blocks" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1713&amp;2=comment&amp;3=comment" token="C4T5sk0_hlOFWotBAcMQOCDbeQmfK970pSlaVwRflCA"></drupal-render-placeholder> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/words" property="schema:about" hreflang="en">Words</a></div> <div class="field--item"><a href="/tags/book" property="schema:about" hreflang="en">Book</a></div> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> </div> </div> Wed, 09 Mar 2011 05:59:00 +0000 Bryan Ruby 1713 at https://bryanruby.com Denial of Service on an Apache server https://bryanruby.com/denial-service-apache-server-1701 <span property="schema:name">Denial of Service on an Apache server</span> <span rel="schema:author"><span lang="" about="/users/bryan-ruby" typeof="schema:Person" property="schema:name" datatype="">Bryan Ruby</span></span> <span property="schema:dateCreated" content="2010-07-06T07:20:00+00:00">Tue, 07/06/2010 - 02:20</span> <div property="schema:text" class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><p>Last week was a very frustrating time for me. For whatever reason, an unusually number of <a href="http://en.wikipedia.org/wiki/Botnet">botnets</a> decided to zero in on my Drupal site and created what I call an unintentional  <a href="http://en.wikipedia.org/wiki/Denial-of-service_attack">Denial of Service</a> attack (DOS). The attack was actually from spambots looking looking for script vulnerabilities found mainly in older versions of e107 and WordPress. Since the target of these spambots were non-Drupal pages, my Drupal site responded by delivering an unusually large number of "page not found" and "access denied" error pages. Eventually, these requests from a multitude of IPs were too many for my server to handle and for all intents and purposes the botnet attack caused a distributed denial of service that prevented me and my users from accessing the site.</p> <p>These type of attacks on Drupal sites and numerous other content management systems are nothing new. However, my search at Drupal.org as well as Google didn't really find a solution that completely addressed my problem. Trying to prevent a DDoS attack isn't easy to begin with and at first the answers alluded me.</p> <p>I originally looked at Drupal for the solution to my problems. While I've used Mollom for months, Mollom is designed to fight off comment spam while the bots attacking my sight were looking for script vulnerabilities that didn't exist. So with Mollom being the wrong tool to fight off this kind of attack, I decided to take a look at the Drupal contributed model <a href="http://drupal.org/project/badbehavior">Bad Behavior</a>. Bad Behavior is a set of PHP scripts which prevents spambots from accessing your site by analyzing their actual HTTP requests and comparing them to profiles from known spambots then blocks such access and logs their attempts. I actually installed an <a href="http://drupal.org/node/422974#comment-2834608">"unofficial" version</a> of the Bad Behavior module which packages the Bad Behavior 2.1 scripts and utilizes services from <a href="http://www.projecthoneypot.org/">Project Honey Pot</a>.</p> <p>As I had already suspected, looking for Drupal to solve this botnet attack wasn't the answer. Pretty much all Bad Behavior did for me was to take the time Drupal was spending delivering "page not found" error pages and use it to deliver "access denied" error pages. My Drupal site is likely safer with the Bad Behavior module installed, but it was the wrong tool to help me reduce the botnets from overtaxing Drupal running on my server. Ideally, you would like to prevent the attacks ever reaching your server by taking a look at such things as the firewall, router, and switches. However, since I didn't have access to the hardware, I decided it was time to look at my Apache configuration.</p> <!--break--><p>I host my sites on a VPS and use cPanel to help manage the site. While cPanel's defaults will give you a stable server there is definitely room to improve the default configuration. Despite all the places I searched for answers, the Apache documentation itself was the most helpful in helping me find which <a href="http://httpd.apache.org/docs/trunk/misc/security_tips.html#dos">Apache HTTP Server configuration</a> settings I should look when addressing DoS attacks.</p> <p>I eventually looked at two directives to help resolve my DoS attacks, <a href="http://httpd.apache.org/docs/trunk/mod/mpm_common.html#maxclients">MaxClients</a> and <a href="http://httpd.apache.org/docs/trunk/mod/core.html#timeout">TimeOut</a>. For whatever reason, cPanel chooses a default value of 150 for <strong>MaxClients </strong>even though Apache's default is actually 256. Knowing that whenever the MaxClients were reached, my server wasn't accessible to the client, this was the first httpd directive I wanted to change. Raising this number seemed to delay the effects of the botnet overwhelming my server but it didn't quite solve the problem. Now instead of 150 bot requests being capable of stalling out my server, I could process 256 bot requests. All MaxClients did was invite more disrespectful people to a party that was already getting out of hand.</p> <p>So I moved on to what was ultimately the solution in my case, I lowered the value given in the <strong>Timeout</strong> directive. The value configured for the Timeout directive is the amount of time the server will wait for certain events before failing a request. Apache gives the following security tips for how this can be configured to help prevent DoS attacks:</p> <blockquote><p>The <code class="directive"><a href="http://httpd.apache.org/docs/trunk/mod/core.html#timeout">TimeOut</a></code> directive should be lowered on sites that are subject to DoS attacks. Setting this to as low as a few seconds may be appropriate. As <code class="directive"><a href="http://httpd.apache.org/docs/trunk/mod/core.html#timeout">TimeOut</a></code> is currently used for several different operations, setting it to a low value introduces problems with long running CGI scripts.</p> </blockquote> <p>For whatever reason, this directive by default is set for 300 seconds. While I can see a number of reasons why you might need five minutes to run a process before failing the request, that's a value I would be more comfortable to have on an intranet server (fully protected by firewall from the wild wild Web) than on an Internet server. So I lowered the TimeOut directive from 300 seconds to 10 seconds. After the value change, the average requests being processed at any given time dropped from 256 down to around 40.  Most Drupal sites are going to need more processing time than 10 seconds, so you'll find out as I did that this number needs to be higher than 10. So far, I have found a value of 45 for the TimeOut directives allows my site to keep server performance high while handling all those requests from the bots without killing legitimate Drupal related processes.</p> <p>So in the end, if you find that the spambots are overwhelming your Drupal site and you have the ability to override the httpd configuration file, <strong>try lowering the value of your Timeout directive down to 45</strong> or some other low number. Doing this first might just solve your your problem and prevent the need for you to write a long winded blog post about your experience.</p> <p><em>This article first appeared on <a href="http://cmsreport.com/articles/denial-of-service-on-an-apache-server-2778">CMS Report</a>.</em></p> </div> <div class="sharethis-wrapper"><span st_url="https://bryanruby.com/denial-service-apache-server-1701" st_title="Denial of Service on an Apache server" class="st_facebook_large" displayText="facebook"></span> <span st_url="https://bryanruby.com/denial-service-apache-server-1701" st_title="Denial of Service on an Apache server" class="st_twitter_large" st_via="MrBryanRuby" st_username="" displayText="twitter"></span> <span st_url="https://bryanruby.com/denial-service-apache-server-1701" st_title="Denial of Service on an Apache server" class="st_googleplus_large" displayText="googleplus"></span> <span st_url="https://bryanruby.com/denial-service-apache-server-1701" st_title="Denial of Service on an Apache server" class="st_linkedin_large" displayText="linkedin"></span> <span st_url="https://bryanruby.com/denial-service-apache-server-1701" st_title="Denial of Service on an Apache server" class="st_email_large" displayText="email"></span> </div><section rel="schema:comment"> <h2>Add new comment</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=1701&amp;2=comment&amp;3=comment" token="-ZfZWSV2KUsyRgXlMUdBwzO0o37KPKgXx3qtltnP8ws"></drupal-render-placeholder> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field--label">Tags</div> <div class="field--items"> <div class="field--item"><a href="/tags/words" property="schema:about" hreflang="en">Words</a></div> <div class="field--item"><a href="/tags/drupal" property="schema:about" hreflang="en">Drupal</a></div> <div class="field--item"><a href="/tags/planet-drupal" property="schema:about" hreflang="en">Planet Drupal</a></div> <div class="field--item"><a href="/tags/spam" property="schema:about" hreflang="en">Spam</a></div> <div class="field--item"><a href="/tags/security" property="schema:about" hreflang="en">Security</a></div> <div class="field--item"><a href="/tags/system-administration" property="schema:about" hreflang="en">System Administration</a></div> <div class="field--item"><a href="/tags/information-technology" property="schema:about" hreflang="en">Information Technology</a></div> </div> </div> Tue, 06 Jul 2010 07:20:00 +0000 Bryan Ruby 1701 at https://bryanruby.com