http://pingv.com/ en Square Grid responds for Drupal 7 http://pingv.com/blog/square-grid-responds-for-drupal-7 <p>From the get-go, Square Grid has been intended to offer less. Sometimes less is more, especially so when it comes to front-end web development.</p> <p><a href="http://drupal.org/project/squaregrid" title="Square Grid Theme for Drupal 7">Square Grid</a> is a Drupal 7 base theme<a href="#footnote">*</a> leveraging the design and implementation power of <a href="http://thesquaregrid.com" title="Square Grid framework by Avraham Cornfeld">Square Grid</a>, combined with principles of responsive design. It's been in active development, with new features and the odd bug fix pushed live periodically over the past several months. Here's where the theme stands now.</p> <h3 id="moreoptionsstilllightweight">More options, still lightweight</h3> <p>Since its first incarnation, Square Grid has <a href="http://drupal.org/node/995308/commits" title="display of code commits to the project git repository">grown a bit</a> – not so much in code but rather in flexibility. It's still pretty lightweight.</p> <h4 id="configurabletoolsinclude">Configurable tools</h4> <p>Square Grid configuration options are inherited and available to your child theme's settings page. These include:</p> <h5>Configurable responsiveness options</h5> <p>Responsive support has been part of the theme since April. Now you can configure whether you want it, and if so how much.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/sg-settings-responsivetoggle.png" alt="squaregrid config screen" title="" class="imagecache-teaser_full" /><br /> <span class="image-caption">You can turn the responsive support on and off.</span></p> <p>However, it's not just a matter of turning responsive support on or off: You have various options.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/sg-settings-responsive.png" alt="squaregrid config screen detail" title="If responsive support is enabled, you can choose what grid sizes to enable." class="imagecache-teaser_full" /><br /> <span class="image-caption">If responsive support is enabled, you can choose what grid sizes to utilize in the theme.</span></p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/sg-settings-nonresponsive.png" alt="squaregrid config screen detail" title="If you do not want responsive support, you can choose a universal grid size for all screens." class="imagecache-teaser_full" /><br /> <span class="image-caption">If you do not want responsive support, you can choose a universal grid size for all screens.</span></p> <p>The theme does only what you've planned for.</p> <h5>Internet Explorer options</h5> <p>You can decide how to handle Internet Explorer up through version 8, which does not recognize media queries.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/sg-settings-ie.png" alt="squaregrid config screen detail" title="IE support options can be configured as well." class="imagecache-teaser_full" /><span class="image-caption">IE support options can be configured as well.</span></p> <p> Options include one static grid size, or no special handling (in case you want to use a JavaScript-based solution such as Respond.js).</p> <h5>Simple built-in development aids</h5> <p>Grid-based theme development sometimes can get quite involved when working on an actual Drupal codebase, not just mockups or prototypes. </p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/sg-settings-devtools.png" alt="squaregrid config screen" title="" class="imagecache-teaser_full" /><span class="image-caption">From Square Grid-enabled theme configurations.</span></p> <p>With these seettings, you can toggle on/off display of the actual grid and rebuilding the theme registry on every pageload.</p> <h4 id="behindthesceneswhatyougetare">Behind the scenes, what you get are:</h4> <h5>A grid for most occasions</h5> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/squaregrid-grids-concise.png" alt="Square Grid grid" title="The lightweight Square Grid Theme builds off of the powerful flexibility of Square Grid framework by Avraham Cornfeld." class="imagecache-teaser_full" /><br /> <span class="image-caption">As illustrated here, Square Grid framework facilitates a wide variety of design grids, from 4-column to 12-column to Golden Ratio, all from one grid schema.</span></p> <p>The lightweight Square Grid Theme builds off of the powerful flexibility of <a href="http://thesquaregrid.com" title="Square Grid framework by Avraham Cornfeld">Square Grid framework by Avraham Cornfeld</a>. See <a href="http://thesquaregrid.com" title="http://thesquaregrid.com">http://thesquaregrid.com</a> for more on Square Grid concepts, templates and more.</p> <h5>Lightweight CSS</h5> <p>The styles predefined in the theme are as minimal as possible, focusing only on page layout. The idea is that you, the themer or front-end developer, will want to control the rest.</p> <h5>Mobile first architecture</h5> <p>The theme styles for single-column, optimized-for-smaller-screens layout first, and adds multi-column grid-based layouts <em>in addition</em> for screens 770px and larger.</p> <h5>Content-first page loading</h5> <p>Nothing irks more than loading secondary content before the main content. It makes people wait longer to see what they clicked to see, raising click-aways. This theme loads your main content first, <em>then</em> the secondary content.</p> <h5>Straightforward grid column settings</h5> <p>These can be overridden in your child theme's template.php. No heavy PHP knowledge is required, and all necessary code is provided. </p> <h5>No extra extras</h5> <p>It's tempting to add more bells and whistles, but the goal is not to add complexity or steepen your learning curve with bespoke variables or code concepts.</p> <p>There's more on these features and characteristics in the <a href="http://drupal.org/node/1264768">official documentation</a>.</p> <h3 id="notafluidgrid">Not a fluid grid</h3> <p>Square Grid is not a fluid grid. Why? Because even today <a href="http://www.webmonkey.com/2010/12/why-percentage-based-designs-dont-work-in-every-browser/" title="Why Percentage-Based Designs Don’t Work in Every Browser">browsers do not agree how to render out elements defined with floating decimals</a>. A fluid 35-grid layout would require a grid of %2.857... per grid square, which means that a fluid layout defined by percentages would entail added complexity and possibly some browser hacks, especially when you multiply browser-imposed roundings and truncations by 35.</p> <p>Some people still prefer 100% fluid layouts, and that can make sense, especially in some use cases, such as an expert-interface dashboard requiring as much screen-estate as possible. However, if the static grid widths adapt to the screen sizes, the marginal benefits of going 100% fluid are somewhat minimized. Therefore, given the floating point issues noted above, Square Grid, as a base theme, supports multiple fixed-grid widths that offer healthy screen-estate usage for the most-commonly used screen sizes. (Count me in the school of thought that <a href="http://www.zeldman.com/2011/07/06/responsive-design-i-dont-think-that-word-means-what-you-think-it-means/">it's all responsive</a>.) An added benefit is that, by defining these break points, the theme renders with more predictability for design purposes. The current 770px-, 980px- and 1190px-width break points in Square Grid Theme cover most larger displays, while still providing comfortable, readable layouts. As screens get larger, we can build upon this paradigm. And we're not ruling out fluid grid definitions altogether. (See below.)</p> <h3 id="roadmapitems">Road map items</h3> <p>Here are some things in the works (in no particular order):</p> <h4>An HTML5 version</h4> <p>This is already in the works. [<a href="http://drupal.org/node/1149168">Meta issue</a>]</p> <h4>"Nav last" page structure</h4> <p>Currently, Square Grid loads the main menu before the content — something I always immediately remake in any child theme. While there are still some naysayers, most agree that loading nav last is best practice for mobile display. This means that Square Grid should load the nav last, just before the footer. How this gets styled for proper placement, though, depends very much on the specifics of the design. That's why I have not done this yet, but I may add 3-4 lines of CSS to handle this. [<a href="http://drupal.org/node/1276578">Issue</a>]</p> <h4>Configuable column widths</h4> <p>These would be configurable "sidebar" widths settings, to make it easier for you to just get on with implementing your design. (Column widths are fully workable in the theme currently, but customizing them does involve some code editing to change integer values in the child theme's template.php file.) [<a href="http://drupal.org/node/1276650">Issue</a>]</p> <h4>1400px-wide layout</h4> <p>This has been partially implemented (and disabled in code pending completion) and likely will be in one of the next releases. [<a href="http://drupal.org/node/1262622">Issue</a>]</p> <h4>Fluid layout</h4> <p>Comments above notwithstanding, this could be an option with potential appeal to some themers. Caveats about variable browser support would apply, of course. [<a href="http://drupal.org/node/1276814">Issue</a>]</p> <p>We hope Drupal users working to implement custom designs on their own sites find the <a href="http://drupal.org/project/squaregrid" title="Square Grid Theme for Drupal 7">Square Grid Theme</a> useful.</p> <p>--</p> <p id="footnote"><em><strong>*</strong> For most themers and front-end developers, one of the fastest paths to implementing a completely custom design for Drupal is via a base theme. For more about this approach, <em>see</em> <a href="http://drupal.org/node/225125">the Drupal.org documentation on this architecture</a>.</em></p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/grok-drupal-7-theming-update">Grok Drupal 7 Theming - update</a> </div> <div class="field-item even"> <a href="/blog/on-grids-in-design-and-announcing-the-square-grid-drupal-theme">On grids in design (and announcing the Square Grid Drupal theme)</a> </div> <div class="field-item odd"> <a href="/blog/floater-theme-to-get-away-from-columns">Floater Theme to get away from columns</a> </div> </div> </div> http://pingv.com/blog/square-grid-responds-for-drupal-7#comments design Drupal Drupal 7 Drupal theming HTML5 Internet Explorer mobile responsive design Square Grid theme Tue, 13 Sep 2011 13:27:53 +0000 Laura Scott 146 at http://pingv.com Upgraded to Drupal 7: Salesforce, Homebox, Stock API, Hierarchical Select http://pingv.com/blog/upgraded-to-drupal-7-salesforce-homebox-stock-api-hierarchical-select <p>For us, every project starts with goals. From goals comes strategy, from strategy comes planning (information architecture, interaction design, technical architecture) and from planning comes (a rather agile) implementation.</p> <p>And for implementation, 2011 so far is the year of Drupal 7 — at least it has been for us, because all of the projects we've started this year have implementation powered by Drupal 7 at the core. In some ways, we love Drupal 7 so much more than Drupal 6, we don't like to look back. It's almost painful to have to deal with Drupal 6 anymore … especially when it comes to theming. </p> <p>Of course, this means we've had to do quite a bit of wrangling with module bugs, helping with upgrade-related issues, and contributing our own upgrades. Despite the success of the <a href="http://drupal.org/project/modules?solrsort=sort_title%20asc&amp;text=d7cx&amp;display=table">#D7CX initiative</a>, the first several months of Drupal 7 contrib felt like life on the bleeding edge. That's only natural for such a large and robust system as Drupal has become.</p> <p>Some of the modules we upgraded to Drupal 7 include:</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/d7modules.jpg" alt="SalesForce module and other modules" title="Our view is that the best way to upgrade existing Drupal modules is to contribute the work back to their Drupal.org projects." class="imagecache-teaser_full" /><br /> <span class="image-caption">Our view is that the best way to upgrade existing Drupal modules is to contribute the work back to their respective Drupal.org projects. This way the client benefits from having more code supported by the Drupal community. We benefit by having extra eyeballs and keyboards working the challenges, as well as ensuring that the client's project remains on the open source path.</span></p> <h3><a href="http://drupal.org/project/salesforce">Salesforce</a></h3> <p><em>[Ported to Drupal 7, still in active development.]</em></p> <p>With a project making very heavy use of quite deep Salesforce integration with Drupal, we had to get the Salesforce Suite into Drupal 7 shape. We've made quite a lot of progress. Yet this is a huge undertaking, and much is yet to be done. Check out the <a href="http://drupal.org/project/issues/salesforce?text=&amp;status=All&amp;priorities=All&amp;categories=All&amp;version=1198576&amp;component=All">issue queue</a>. For a sense of what's next and priorities, see the <a href="http://drupal.org/node/1214126#comment-4714500">Salesforce Suite for Drupal 7 roadmap</a>. (We'll have more on Salesforce integration with Drupal 7 in another post.)</p> <h3><a href="http://drupal.org/project/homebox">Homebox</a></h3> <p><em>[Available now for Drupal 7. Seeking (co-)maintainer(s).]</em></p> <p>You may know it as "Your Dashboard" on Drupal.org. It was available in Drupal 6, but we needed it for Drupal 7, so we did the upgrade to a minimum viable product release. Homebox is available for your Drupal 7 project!</p> <p>We don't have an internal need to push it further, but Homebox has tons of potential, especially for site managers and administrators. If you're interested in extending and improving Homebox, please share your patches, or even help <a href="http://drupal.org/project/issues/homebox?text=&amp;status=8&amp;priorities=All&amp;categories=All&amp;version=7.x&amp;component=All">review patches already submitted</a>. <em>Maybe you'd even like to be co-maintainer?</em></p> <h3><a href="http://drupal.org/project/stockapi">Stock API</a></h3> <p><em>[Available now for Drupal 7. Seeking (co-)maintainer(s).]</em></p> <p>Need a block to display stock prices? We ported the module from Drupal 6 to <a href="http://drupal.org/node/1198114">7</a>. It's still a -dev release, but fairly stable at the moment. At this point, we don't need to take it further. Future maintainer(s) interested in building out a cool set of stock-market-monitoring features are welcome to take up the baton from here.</p> <h3><a href="http://drupal.org/project/hierarchical_select">Hierarchical Select</a></h3> <p><em>[Available now for Drupal 7.]</em></p> <p>Goodness knows this module faces a huge rearchitecting for Drupal 7, but we needed something working right away, so we've been working with maintainer <a href="http://drupal.org/user/99777">Wim Leers</a> to get a minimum viable product released. There's <a href="http://drupal.org/project/issues/hierarchical_select?text=&amp;status=All&amp;priorities=All&amp;categories=All&amp;version=7.x&amp;component=All">a lot more that could be done for HS</a>, but at least it's available for Drupal 7 now, and I'm sure Wim would appreciate more loving community attention on this incredibly useful usability enhancer.</p> <h3>Oops, that's a cul-de-sac</h3> <p>One project we did that is now pretty much EOL is Apache Solr Pages. We needed the functionality for a project at the time, and Solr did not have it and there was no clear roadmap as to when or even whether it would have it, so we contributed this simple project. Now <a href="http://drupal.org/project/apachesolr">Solr</a> itself provides that functionality, so this project turned out to be not needed.</p> <h3>The commons</h3> <p>In fighting the bleeding edge, we <a href="http://drupal.org/node/1244116">discovered a bug in, and rolled a patch to fix, the Aggregator module in Drupal core</a>. (The patch was then adapted/modified by other community contributors to work on Drupal 8 first, for subsequent backporting. As I write this, it's ready to be committed, so it will hopefully be in a Drupal 7 point release very soon. Isn't open source great?) We also offered some small help in the issue queues on a number of contrib projects. It took a lot of work from this great community to bring Drupal to where it is now. We're glad to do our own small part.</p> <p>That's the way of the commons. We consider it our responsibility to our clients to fix and update modules this way. The whole idea of using open source is that you adopt code that is shared by the worldwide community. If you don't share the fixes, not only is the community diminished as a result, you've also created your own fork that you, or your client, will be stuck maintaining alone. That's what we would call a bad strategy. Share in the commons and everyone benefits — the community, your client, you.</p> <h3>D7 to get you through these dog days</h3> <p>Every time a new major Drupal release hits the interwebs, there's a bit of debate over when that new release is ready for production use by site builders and owners, and it almost always comes down to the state of contrib. This summer, Drupal 7 contrib has really started to stabilize, with solid releases to many of the popular and useful modules out there. From our perspective, it would take some huge convincing to get us to consider Drupal 6 now for any new project, because Drupal 7 is coming of age and ready for its day in the sun. Not only that, compared with Drupal 6, Drupal 7 will have 1-3 years' more community support (barring an unexpectedly short Drupal 9 release cycle).</p> <p>With such a large Drupal community, and the amazing proliferation of new module and theme projects, thanks to <a href="http://drupal.org/community-initiatives/git">Drupal.org's new Git footing</a> and the easy ability to create project sandboxes, it can be challenging to keep up with what's happening, or to even be aware of things that may be an awesome fit for your needs. There's simply too much Drupal community development activity to keep track of these days. This post is a little highlight of things we've been working on that you may find interesting, useful or even worthy of your support. I hope other shops, freelancers and hobbyists post about their work as well. It's a busy Drupal world. Shine some light on what you're doing!</p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/laura/200702/how-to-use-open-source-and-how-not-to">How to use open source (and how not to)</a> </div> <div class="field-item even"> <a href="/blog/drupal-disruptive-open-source-part-i-from-brobdingnag-to-lilliput">Drupal Disruptive Open Source: Part I — From Brobdingnag to Lilliput</a> </div> </div> </div> http://pingv.com/blog/upgraded-to-drupal-7-salesforce-homebox-stock-api-hierarchical-select#comments Drupal Drupal 7 Drupal development Hierarchical Select module Homebox module open source SalesForce Stock API module Wed, 17 Aug 2011 00:17:41 +0000 Laura Scott 144 at http://pingv.com When will Drupal 8 be released? http://pingv.com/blog/when-will-drupal-8-be-released <h3>When will Drupal 8 be released?</h3> <p>When will Drupal 8 be out? It's a question that's asked in many forms. </p> <p>Sometimes it's phrased as: when will I have to upgrade from Drupal 6? Or, how long will Drupal 7 be supported?</p> <p>Laura Scott and I were reviewing <a href="http://sf2010.drupal.org/conference/sessions/state-drupal.html">Dries Buytaert's 2010 State of Drupal</a> and the estimates on when the new Drupal release candidate would be virtually frozen. The graph below is his summary graph of the trends in April 2010.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/state-of-drupal-april-2010-release-graph.png" alt="Dries Buytaert" title="Fig 1 April 2010 Prediction of Drupal Release" class="imagecache-teaser_full" /><br /> <span class="image-caption">Fig 1 — Dries Buytaert's April 2010 Prediction of Drupal Release.</span></p> <p>It turned out that the trends were not linear, and it was Laura who suggested that bug fixes aren't linear: they tend to be hyperbolic or (for fellow math majors) follow "power functions" that have a logarithmic aspect to them.</p> <p>This got us thinking. What is the history of time between Drupal releases (TBDR)? In the slide below, Dries provided some this data in his slide from the State of Drupal at the <a href="http://buytaert.net/state-of-drupal-presentation-march-2011" title="Dries&#039; blog">March 2011 Drupalcon Chicago</a>.</p> <p class="image-teaser_full" id="drupalsize"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/state-of-drupal-april-2010.png" alt="Dries Buytaert" title="Fig 2 March 2011 graphic Drupal code size" class="imagecache-teaser_full" /><br /> <span class="image-caption">Fig 2 — Dries' March 2011 graphic showing Drupal's code size historically.</span></p> <p>All that was missing were the dates, which Laura looked up from the Changelogs of each Drupal n.0 release, and from this I created the graph below, which is consistent with a power function. That is, geometric!</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/TBDR-Years-v.-Size-20110722.png" alt="PINGV Creative" title="Fig 3 TBDR of core size versus release dates; Kate Lawrence" class="imagecache-teaser_full" /><br /> <span class="image-caption">Fig 3 — TBDR of core size versus release dates. Graph by Kate Lawrence.</span></p> <p>What this means is that the more the code, the longer it takes, and in this case (at least thus far) it is obeying a consistent pattern. Interestingly, in the period from of Drupal 4.0.0 to Drupal 4.6.0, the size of Drupal was pretty constant, especially as compared to the recent growth of Drupal core ... and <em>the TBDR was about 6 months!</em> What do today's longer release cycles mean for Drupal? I say this only because we are hearing that Joomla has a <a href="http://www.joomlablogger.net/blog/joomla-news/joomla-17-stable-released-one-click-update-from-165/" title="Joomla announces turn around schedule">6 month time horizon</a> between releases.</p> <h3>If Developers were Horses...</h3> <p>What would it look like to have 90 developers contributing, only contributing really, really fast? Is there a marginal utility curve, like we learned in Econ 200, in there someplace? That is, at what point do you have so many people involved, that they are tripping over one another? Throwing more people at the problem does not get quicker results, and may in fact, slow things down. cf. <a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month" title="Wikipedia Article">The Mythical Man Month.</a></p> <p>The Mythical Man Month premise is: Assigning more programmers to a project running behind schedule will make it even later.</p> <p>So a question to ponder is to what extent can the growth curve in the above slide be changed?</p> <p>The final slide from Dries that I think is relevant to this pattern appears below. </p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/D7Patches8020.png" alt="Dries Buytaert" title="Fig 4 30 contributors responsible for 50% of D7 Patches; Dries Buytaert" class="imagecache-teaser_full" /><br /> <span class="image-caption">Fig 4 — 30 contributors were responsible for 50% of D7 Patches. Graphic by Dries Buytaert.</span></p> <p>Most of us have heard of the "<a href="http://en.wikipedia.org/wiki/Pareto_principle" title="Wikipedia article">80/20 Rule</a>." The rule is attributed to the findings of Italian economist Vilfredo Pareto. Sometimes its the 90/10 Rule or 95/5 Rule, or even 920/30 rule (see Figure 4)!</p> <p>The challenge may be in making the ski-jump curved line more linear (while pinning the line on the y-axis). The more linear it becomes, the steeper the TBDR curve's slope becomes — meaning that <a href="http://buytaert.net/how-i-think-about-drupal-release-date-planning">releases</a> can be more rapid.</p> <p>In short, holding the intersection point on the left axis, as the graph becomes more linear, the faster the TBDR. The challenge we face as individuals within the community is <a href="http://groups.drupal.org/drupal-initiatives">helping in making that happen</a>.</p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/drupal-disruptive-open-source-part-i-from-brobdingnag-to-lilliput">Drupal Disruptive Open Source: Part I — From Brobdingnag to Lilliput</a> </div> </div> </div> http://pingv.com/blog/when-will-drupal-8-be-released#comments Drupal Drupal 7 Drupal 8 project management Thu, 21 Jul 2011 17:25:57 +0000 Katherine Lawrence 143 at http://pingv.com Drupal Front-End Developer (Themer) http://pingv.com/careers/openings/136/drupal-front-end-developer-themer <div class="field field-type-text field-field-abstract"> <div class="field-items"> <div class="field-item odd"> <p><a href="http://pingv.com" title="Drupal design, Drupal development, Drupal strategy and architecture">PINGV Creative</a> is seeking an experienced and adept Drupal front-end developer to join our team. Work with our team on various projects, each presenting new and interesting challenges. We focus on strategy and design, with six years' experience and expertise in Drupal. Development is a follow-through of the plan we create with/for the client.</p> <p>We are a virtual company.</p> </div> </div> </div> <div class="field field-type-nodereference field-field-app-ref"> <div class="field-items"> <div class="field-item odd"> <div class="field-label-inline-first"> To Apply:&nbsp;</div> <a href="/submit-your-resume">Submit your resume</a> </div> </div> </div> Drupal Drupal 7 Drupal theming Thu, 21 Jul 2011 17:00:07 +0000 PINGV Creative 136 at http://pingv.com Open Atrium and Iterations http://pingv.com/blog/open-atrium-and-iterations <h3>Too busy <em>doing</em> the doing to talk about the doing?</h3> <p>As a strategy and design studio, we're all over communications. It's an uninterrupted conversation with our clients, hashing out ideas, working iterations of goals definition, research, wireframes, designs. But when it comes to development, when we put our heads down and get to work, it's all too easy for us in our focused implementation state to just do it and not communicate enough about what we're doing. Of course, this can be disconcerting to the client who has no idea how things are going. And that's a ripe situation for fear, uncertainty and doubt to creep into the relationship, and suddenly a successful project-in-progress can <em>feel</em> troubled, even if it's not.</p> <p>The simple solution is to give regular status updates, which is something we've always done. Even just saying, "Things are going well" can help. But on long projects, or even in 3-week iterations, repeating that same message ends up being not that helpful. Better to share what you're thinking with regards to planning and project management, and provide updates on development of the various features/backlog items worked out in the strategy and design phases. This transparency in the project management process is even better when updates are more specific.</p> <p>We have been using <a href="http://openatrium.com">Open Atrium</a>, the powerful intranet CMS built in <a href="http://drupal.org">Drupal</a>, developed initially by our friends at <a href="http://developmentseed.org">Development Seed</a>, now maintained by <a href="http://www.phase2technology.com/">Phase2 Technology</a>, for our intranet to handle all client-facing communications, documentation, file sharing and issue tracking. It's been a great tool for this. No missed emails lost in the spam filter. No critical documentation lost on someone's hard drive. No mega-emails containing two dozen specific items. (Well, those still happen on occasion, but we now can push those into the intranet to continue discussion.) We love it. </p> <p>And now we love it even more.</p> <h3>Rethinking Open Atrium</h3> <p>We had been using almost all of Open Atrium's various features: messages, uploads, case tracker, books for documentation, and of course the groups functionality. Almost all of the features. The part that didn't really fit in with our communications strategy was the OA notion of "Projects". Until now.</p> <p>You see, in Open Atrium, the basic architecture is thus: You have Clients, which are defined by groups, and you have Projects, which are ways of grouping tickets within the group by project. It can make sense for a large organization using OA for internal communications to manage several projects. But for a professional services firm like a strategy and design company, or a software company, or any other kind of company that defines work by time-boxed iterations or sprints, breaking up stuff by "project" may not be that useful. <em>Projects projects projects blah!</em> At <a href="http://pingv.com">PINGV</a>, we rarely have a series of small projects with a client where it would make sense keeping them all together in one group; we tend to do bigger projects, projects that have phases of strategy, design and planning, and iterations of development. And when we have a new large-ish project with an existing client, we just spin up a new Atrium group. Project was that <a href="http://memory-alpha.org/wiki/Dunsel">dunsel</a> feature — the thing that for us had no real use. But—</p> <p><em>What if we use "Project" nodes to define phases and iterations?</em> </p> <h3>Wash that nomenclature right out of OA</h3> <p>Ignoring nomenclature, and just looking at what "Project" as a functionality in Open Atrium does for us, it provides a way to group tickets into clumps that you can define by anything. If we define those clumps as iterations, perhaps, or phases, we can organize and parse through backlog items, features, questions and other tickets by iteration, while providing some ready clarity as to how and when these items will be taken on. <em>(NB: It's an approach that works only with Tickets, not other node types, but in our mind that's a minor limitation.)</em></p> <p>What's really convenient is that Open Atrium provides via UI the means to rename "Project" to whatever you prefer to call it (e.g., "Iteration"). These string replacements, configured in the group feature settings available to site administrators from within each group's space, work almost everywhere in OA. (The "Add Project" button seems to be unaffected even by string replacements defined in settings.php. Something to investigate later.)</p> <p>Once we saw this potential for grouping issues into iterations, we ran with it.</p> <h3>Defining iterations in Open Atrium</h3> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/OAiterations-3.png" alt="Open Atrium screenshot" class="imagecache-teaser_full" /><span class="image-caption">Using "projects" in Atrium, we can define iterations by close date, and assign tickets to iterations.</span></p> <p>As you can see, the Iteration title is compressed down to an abbreviation or acronym in the icon in the tickets display. "Iteration 1" becomes "I1", "General" becomes "GENERA", and so on. After briefly considering using iteration numbers, which we rejected as too arbitrary, we opted to name iterations by the Iteration release date, or end date (<em>e.g.</em>, 08/17 or even 11/10/23), which can be abbreviated in a meaningful way in the Tickets views. This gives our clients added insight into our timetable planning at a glance.</p> <p>Adding a sortable Iteration column to the tickets view involves a simple override to the default ticket View. (If ever we need to revert that Feature during a site update, these changes are easily re-implemented in a few minutes. No actual data is affected.)</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/OAiterations-1.png" alt="Open Atrium screenshot" title="You can view all of the iterations planned, and see their descriptions. Each iteration is clickable for detailed viewing." class="imagecache-teaser_full" /><span class="image-caption">You can view all of the iterations planned, and see their descriptions. Each iteration is clickable for detailed viewing.</span></p> <p>This approach allows us also to focus just on the tickets that are relevant now, without having to sort through all the other tickets that are further down in the timetable, and without having to mark dozens (hundreds?) of individual tickets as "deferred" and then change those as they come available.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/OAiterations-2.png" alt="Open Atrium screenshot" title="Single iterations of backlog items can be viewed as well, and this is stock functionality for Open Atrium." class="imagecache-teaser_full" /><span class="image-caption">Single iterations of backlog items can be viewed as well, and this is stock functionality for Open Atrium.</span></p> <p>The bulk of communications still happens in the individual tickets. Questions, information, updates, concerns, notes can be tied to the ticket itself. New questions and bug reports can also be slotted for attention in a scheduled Iteration. So even though we're grouping our backlog items together, we still avoid the one-ticket-for-8-issues kind of communications that can lead to confusion, frustration and missed messages.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/OAiterationsX-3.png" alt="Open Atrium screenot" title="On any comment update, you can change the iteration assignment of a ticket" class="imagecache-teaser_full" /><br /> <span class="image-caption">On any comment update, you can change the iteration assignment of a ticket.</span></p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/OAiterationsX-1.png" alt="comment status change" title="And all changes are tracked in the comment metadata displayed right there in the thread." class="imagecache-teaser_full" /><br /> <span class="image-caption">All changes are tracked in the comment metadata displayed right there in the thread.</span></p> <p>We like this system so far because of this fact that all changes are tracked and visible in each ticket's thread. If we move up a backlog item to a higher priority, we simply do it with a comment and change in iteration designation. This flexibility with traceability provides a nice balance for communicating our planning.</p> <p><em>And it's all using stock Open Atrium!</em></p> <h3>Plan before communicating, and vice versa</h3> <p>I should add that this is not how we do our actual project management. Open Atrium is a great tool for project-related communications. We currently use <a href="http://pingv.com/staff/brian-vuyk">Brian</a>'s recommendation, we tried <a href="https://app.liquidplanner.com/signup_a/197/8b0f76e9013600f64f3ac66f188e99525b7945c6">Liquid Planner</a> (disclosure: affiliate link; go to liquid planner dot com to skip it if you like) for our internal planning. Liquid Planner has an API, and we're considering developing an integration with Open Atrium to allow us to push and pull info between the two. Might be a nice convenience. We do the translation manually now, and while it can take up time on occasion, it also provides an occasion to rethink and re-evaluate, so the manual process does have value.</p> <h3>Feature think, Feature do</h3> <p>Now for the road <em>not</em> taken:</p> <p>When first considering the challenge of better communicating our iterations plans, I imagined up a very simple Features-based solution using nodes and node reference, which resulted in <a href="http://drupal.org/project/oa_iterations">Open Atrium Iterations</a>. This module works as a drop-in extension to Open Atrium. Not touching any existing Atrium Features, OA Iterations defines a new content type with reference fields to call up tickets (cases), messages (blog posts) and documentation (books) that collectively define and describe an iteration of work. A dedicated view restricts the available referenced nodes to the current group's content.</p> <p>On Friday afternoon, this seemed like a fine way to communicate our iteration planning. Tickets, as well as blog posts and book nodes, could live on their own, with their own revisions and threads, while the Iteration node would group them into an iteration. Done. Time to relax and prepare for a weekend cleaning the garage.</p> <p>On Monday morning, however, when I sat down to start defining the iterations for one of our projects, I immediately questioned my own game plan. Open Atrium Iterations was an easy way to define iterations, but making changes would be difficult. What if I wanted to move a ticket from one iteration to another? Yes, this project was never intended for iteration <em>planning</em>, just iteration <em>communication</em>, but even just for communications this approach would mean editing at least two Iteration nodes just to "move" one backlog item. What's more, without implementing Reverse Node Reference and adding that block to one or more Contexts (and thus overriding stock Open Atrium Features), there was no way to look at a backlog item and see what iteration it's slotted for. The simple solution was not turning out to be so simple after all.</p> <p>And that's when the flicker of the idea described above came to mind. In hindsight, I can smack myself for not thinking of this before. I've been working with Atrium for two years. But I think I got stuck on nomenclature.</p> <h3>Contrib status</h3> <p>Meanwhile, despite our not using it as originally planned, <a href="http://drupal.org/project/oa_iterations">Open Atrium Iterations</a> will remain live on Drupal.org to see if it proves helpful to others. If the Feature can be improved upon to make it more broadly useful to serve more use cases, I look forward to suggestions in the issue queue.</p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/kit-best-practices-for-making-drupal-features">KIT: Best Practices for Making Drupal Features</a> </div> </div> </div> http://pingv.com/blog/open-atrium-and-iterations#comments Drupal development Drupal distributions Features Open Atrium Open Atrium Iterations project management Thu, 30 Jun 2011 17:19:56 +0000 Laura Scott 140 at http://pingv.com The best user interface is the one you don't notice http://pingv.com/blog/the-best-user-interface-is-the-one-you-dont-notice <p>We all want beautiful things. A beautiful graphic user interface is no exception. But how do you define beauty? Pretty colors? Balanced composition? Elegant typography? Appealing trimmings? Grid fidelity?</p> <p>Without diminishing those things, my feeling is that, when it comes to GUIs, the most beautiful are the ones you don't notice. The beautiful GUI is so useful, so understandable, so usable that you don't even think about the inteface — you're totally absorbed in <em>what you're doing via the interface</em>. This is true for simple devices as well as for complex expert apps where, once you get familiar with the tools, you just use them without thinking.</p> <h3>Expert interfaces are for experts</h3> <p>The thing about expert interfaces is that, while they are complex, they are optimized so that a well-trained user can use them efficiently. For example, non-linear video editing systems like Avid Media Composer are rather complex. They have lots of tools that bring great power to the editor. They also have keyboard shortcuts for nearly every function, and ready buttons for commonly needed items. Once the user is practiced on the system, the expert interface becomes much easier to use than the simple interface. For example, a professional video editor would go nuts trying to work in iMovie — it's just <em>too simple!</em></p> <p>And yet for the casual user, iMovie is much more useful, much more usable, much more transparent. In other words, the complexity of the interface depends upon the knowledge, experience and needs of the user.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/french-horn.jpg" alt="french horn" title="The expert interface requires many many hours of practice. Do you want your website to be as difficult as playing French horn?" class="imagecache-teaser_full" /><span class="image-caption">The expert interface requires many many hours of practice. Do you want your website to be as difficult as playing French horn?</span></p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/spacewalk.jpg" alt="astronaut spacewalking" title="Astronauts train every day so that they focus not on their gear but on what they need to do." class="imagecache-teaser_full" /><span class="image-caption">Astronauts train every day so that they focus not on their gear but on what they need to do.</span></p> <p>This is perhaps one reason why <a href="http://rarepattern.com/nodes/2011/video-professionals-just-get-new-life-already-apple-isnt-looking-you">Apple has gotten so much flack for reinventing the UI, among other things, of FInal Cut Pro</a>. Expert interfaces require hours of training and practice. Apple has ripped many tools out, changed much of the rest, and added yet new things. For the casual video editor, Final Cut Pro X may be like manna from heaven, but for video editing professionals it requires retraining, and the missing features may render such training not worth the investment. Meanwhile, if you have to <em>think</em> about <em>how</em> you're doing instead of <em>what</em> you're doing, you're simply not as productive.</p> <p>The same would be true for a feature-rich community site. Change how everything works and you'll have a riot from the community members. The features don't belong to the website, they belong to the users. "What happened to <em>my</em> sort button?" Suddenly they have to focus on the interface, not on what they are doing with it. </p> <h3>The unnoticed interface</h3> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/iStock_000012959689XLarge-cropped.jpg" alt="woman with eyeglasses" title="If you&#039;re focusing on your glasses, not the subject through the camera, your glasses are dirty." class="imagecache-teaser_full" /><br /> <span class="image-caption">If you can't get a camera to do what you want, your camera's user interface is getting in the way of what you're doing. If you're focusing on your glasses, not the camera settings and the subject through the camera, your glasses are dirty or they are the wrong prescription.</span></p> <p>What is the best user interface? I would argue that one example is a very low-tech object: eyeglasses. They are devices that are a means to an end — seeing. If they are dirty — that is, if you notice them — then they suck. All of us who wear glasses probably share the experience at one time or another of searching for the glasses that we were wearing at the time. (One time recently I was tearing the house apart. My glasses are for nearsightedness mostly; I can't see up close with them on. When I went to the couch to see if they got tucked into the cushions, I took off my glasses to see better— *facepalm*.)</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/old-woman-headphones-smile.jpg" alt="" title="The best design is the one you don&#039;t notice, you just use." class="imagecache-teaser_full" /><span class="image-caption">The best design is the one you don't notice, you just use.</span></p> <p>Other user interfaces we don't notice: doorknobs, the driving controls on our cars, water faucets, dresser drawers. All of these, except for the automobile controls, are simple, and the automobile controls are dependent upon some standardization and all of us sharing some basic training on their use. If a manufacturer came out with a new car that put steering in the pedals and throttle on a lever, never mind what governments would do, the buyers would stay away — their driving training would be of little use.</p> <p>On websites, most of which cater by necessity to the casual user — even regular visitors don't want to invest hours of training just to be able to post a comment — we're seeing much standardization in functionality, layout, even icons usage. Is this bad? Is this boring? Is this bad design? Or is it making these sites more usable, more transparent so users can focus on what they're doing, be it reading, posting, linking, uploading, liking, tweeting...? And isn't that what we want? Sites that make it easy for users to do the things they (and we) want them to do?</p> <p>What is a website but a means to an end? If the user is noticing the website, instead of doing what she needs to do, then it's quite possible that the website is non-optimal. Its UI lens is dirty.</p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/did-your-website-end-up-doing-the-wrong-job">Did your website end up doing the wrong job?</a> </div> </div> </div> http://pingv.com/blog/the-best-user-interface-is-the-one-you-dont-notice#comments design interaction design user experience Wed, 29 Jun 2011 16:46:13 +0000 Laura Scott 31 at http://pingv.com Lucidly Drupal: Setting up Ubuntu 10.4 Lucid LAMP stack for your Drupal site http://pingv.com/blog/lucidly-drupal-setting-up-ubuntu-10-4-lucid-lamp-stack-for-your-drupal-site <p>We're frequently setting up servers for development, for staging, for production. I've lately preferred the Debian flavor of Linux, but up until now that had been something of a problem because Debian and Ubuntu did not include the higher-quality php5-gd library, which meant that you either had to compile your own PHP, pull from an alternative source host, or cope with substandard image resizing with limited processing features.</p> <p>But now we have <a href="https://help.ubuntu.com/community/Server/TechSpecs/1004LTS">Ubuntu 10.4 LTS "Lucid"</a> and life is good. Lucid comes with PHP 5.3.x and the proper GD2 library! (Cheers. Applause.)</p> <p>Still, there's a lot of little steps to set up to get your server (or virtual private server) up and running and ready for Drupal. It's not hard, just detail-oriented work you don't want to do when you're bleary-eyed at the end of the day. In my repetitions of doing this over and over, I've collected some notes, and I thought I'd post them here for my own reference, and perhaps your reference as well. My thanks to our own Brian Vuyk for guidance on the APC installation.</p> <p><em>[Edit: Brian also pointed me to Taskel as another way to go. I've not tried it that way yet, so this post doggedly sticks to the step-by-step for now.]</em></p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/drupal-linux.jpg" alt="Ubuntu Linux + Drupal" title="" class="imagecache-teaser_full" /><span class="image-caption">Drupal requires some things, and likes some other things a lot. Here's how to configure the latest Ubuntu Linux to make Drupal happy.</span></p> <h3>Assumptions</h3> <ul> <li>You already have Ubuntu 10.4 installed on your server.</li> <li>You know your server's IP address.</li> <li>You already have root or sudo access.</li> <li>You want to set up for Drupal. (Of course, many CMSs and blog platforms will have similar requirements, and this post may have some appeal and relevance to people using those tools. But in this post I'm aiming at the particulars for Drupal.)</li> <li>You have a computer with shell access to your server, or a properly configured *AMP setup on your computer. (This post does not cover MAMP, WAMP, DAMP or commandline bootcamp.)</li> </ul> <h3>Step by Step</h3> <ol> <li> <h4>Initial Preparation</h4> <ol> <li> <h5>Create a public key.</h5> <p>If you do this, you can connect to your server without having to log in. It's also necessary if you want to deploy from a provisioning system or repository like GitHub.</p> <pre> ssh-keygen -t rsa -C "yourname@example.com" </pre><p> <em>Note: For deployment purposes, you need to generate the key as the user who will be executing the checkouts. For example, if you checkout as root, you will need to be logged in as root when generating the key.</em></p> <p>To print out the key (to copy and paste into GitHub, for example):</p> <pre>cat ~/.ssh/id_rsa.pub</pre></li> <li> <h5>Install security updates.</h5> <p> FIrst things first.</p> <pre> apt-get update apt-get upgrade --show-upgraded </pre><p> Note that if you are using a regular shell user account with sudo, you will want to prepend pretty much all commands in this guide with "sudo". For example: <code>sudo apt-get update</code> would be the first command above. </p></li> <li> <h5>Set your hostname</h5> <p>You should give your machine a name. This is a machine name for your server. It does mean anything about your domain or what URL you want to use for your site. For this example, we'll use the name "athena":</p> <pre> echo "athena" &gt; /etc/hostname hostname -F /etc/hostname </pre><p> Next, edit the file "<code>/etc/hosts</code>". There are a few options for text editor within Linux. I find <strong>nano</strong> to be easy to use.</p> <pre> nano /etc/hosts </pre><p> <em><strong>[NB: In these instructions, your server's IP address is represented by "12.34.56.78". Every time you see that sequence in the examples here, you should replace them with your server's IP address. Also replace "athena" everywhere it appears with your server's name, and "example.com" with your actual domain.]</strong></em></p> <p><div class="codeblock"><code>127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localhost.localdomain&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localhost<br />12.34.56.78&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; athena.example.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; athena</code></div></p> <p><em>athena.example.com</em> is your "fully qualified domain name" or FQDN. (You will come across this from time to time.) </p></li> <li> <h5>Set your server's base timezone</h5> <p>This part is easy:</p> <pre>dpkg-reconfigure tzdata</pre><p> You will get pop-up prompts for country, etc. and that's done! </p></li> </ol> </li> <li> <h4>Set up VirtualHost stuff</h4> <ol> <li> <h5>Install Apache</h5> <p>First things first.</p> <pre>apt-get install apache2</pre></li> <li> <h5>Edit <code>/etc/apache2/ports.conf</code></h5> <pre> nano /etc/apache2/ports.conf </pre><p> Replace *:80 with your IP address, so it looks like this:</p> <p><div class="codeblock"><code>NameVirtualHost 12.34.56.78:80</code></div> </p></li> <li> <h5>Edit <code>/etc/apache2/sites-available/default</code></h5> <pre> nano /etc/apache2/sites-available/default </pre><p> Edit as such:</p> <p><div class="codeblock"><code>&lt;VirtualHost 12.34.56.78:80&gt;</code></div></p> <p>You will also want to update the DocumentRoot value to where you intend to install your Drupal root.</p> <p><div class="codeblock"><code>DocumentRoot /var/www/example.com/html</code></div> </p></li> <li> <h5>Configure name-based virtual hosts</h5> <p>Create a file in </p> <pre>/etc/apache2/sites-available/</pre><p> for each of your sites on the server.</p> <pre> nano /etc/apache2/sites-available/example1.com </pre><p> <div class="codeblock"><code>&lt;VirtualHost 12.34.56.78:80&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp; ServerAdmin <a href="mailto:admin@example1.com">admin@example1.com</a><br />&nbsp;&nbsp;&nbsp;&nbsp; ServerName example1.com<br />&nbsp;&nbsp;&nbsp;&nbsp; ServerAlias <a href="http://www.example1.com" title="www.example1.com">www.example1.com</a><br />&nbsp;&nbsp;&nbsp;&nbsp; DocumentRoot /var/www/example1.com/html/<br />&nbsp;&nbsp;&nbsp;&nbsp; ErrorLog /var/www/example1.com/logs/error.log <br />&nbsp;&nbsp;&nbsp;&nbsp; CustomLog /var/www/example1.com/logs/access.log combined<br />&lt;/VirtualHost&gt;</code></div></p> <p>Repeat this process for each site you are setting up. <em>Note that separate sites will have different DocumentRoot values, while a multisite setup will share the same DocumentRoot value.</em></p> <p><strong>Git note:</strong> If you are going to deploy using Git (covered in the next step below), you want to define your DocumentRoot to include your Git repository name and any internal paths to your Drupal document root. <em>For example</em>, if you are installing from a GitHub project titled "foobar" and inside of it you have a folder "html" that contains your Drupal installation, your DocumentRoot value would be /var/www/example.com/foobar/html/. </p></li> <li> <h5>Create your website folders</h5> <ul> <li> <h6>First, create the folder for your logs.</h6> <pre> mkdir -p /var/www/example.com/logs </pre><p> This command will create your logs folder, and the domain folder containing it. </p></li> <li> <h6>Now create your website html folder(s).</h6> <p>How you do this depends upon how you're going to install your site on the server.</p> <p><strong>If you are using <strong>scp</strong> or sftp or otherwise copying your Drupal code files onto the server</strong>, you will want to create the folder to hold them. Remember that your DocumentRoot value you entered above must match where your actual document root ends up being on the server.</p> <p><strong>If you are going to be deploying via Git</strong>, you don't need to do that: Git will create it when you <strong>git clone</strong> the repository onto the server into /var/www/example.com/.</p> </li> </ul> </li> <li> <h5>Enable the virtual domain</h5> <pre> a2ensite example.com </pre><p> Do this command for each domain or subdomain you're configuring here. </p></li> <li> <h5>Reload Apache</h5> <pre> /etc/init.d/apache2 reload </pre></li> </ol> <p>Assuming that you have configured the DNS for your domain to point to your server's IP address, virtual hosting for your domain should now work.</p> <p>Of course, there's still more server prep to do so you can run Drupal.... </p></li> <li> <h4>Build PHP, MySQL and the goodness Drupal loves</h4> <ol> <li> <h5>MySQL Installation</h5> <p>First install the thing.</p> <pre> apt-get install mysql-server </pre><p> You will be prompted to create the MySQL root password, and re-enter it.</p> <p>Now we secure the installation.</p> <pre> mysql_secure_installation </pre><p> You will be prompted to set/change the MySQL root password and other things. You won't need to change the MySQL root password, but you probably want to answer "Y" yes to the other questions. </p></li> <li> <h5>Create your database</h5> <p>Log into MySQL.</p> <pre> mysql -u root -p </pre><p> The -u defines the mysql user, which in this case is mysql root user, 'root'. You will be prompted for the MySQL root password. When you get a prompt like this:</p> <pre> mysql&gt; </pre><p> …you're in!</p> <p>Now create your database. [In this example, the database name is 'foobar', the database user is 'rumpole', and the user password is 'p4ssw0rd'. Change these to the actual database name, database user and passwords you want for your database. <em>Be sure to note these down, because you'll need this info when you set up your Drupal site.</em>]</p> <pre> create database foobar CHARACTER SET utf8 COLLATE utf8_general_ci; </pre><p> <em>[<strong>Update</strong>: You need to set the CHARACTER SET and COLLATE values, as shown above, or MySQL will default to non-recommended latin1 / latin_swedish_ci.] </em></p> <p>Note the ';' at the end of the line. That is required for MySQL to execute the command.</p> <p>Define the user and permissions for the database. I'll keep it easy here:</p> <pre> grant all on foobar.* to 'rumpole' identified by 'p4ssw0rd'; </pre><p> Now wrap this up and quit MySQL:</p> <pre> flush privileges; quit </pre></li> <li> <h5>Install PHP</h5> <p>Use apt-get to pull down the packages.</p> <pre> apt-get install php5 php5-dev php-pear php5-gd </pre><p> Note that php5-dev is not necessarily required, except you will need it later for the PECL installation of UploadProgress (which is very nice to have for the Drupal user interface). php5-gd is to enable nice image handling.</p> </li> <li> <h5>Configure the <code>php.ini</code> settings.</h5> <p>Edit the appropriate php.ini file:</p> <pre> nano /etc/php5/apache2/php.ini </pre><p> This is a big file. You will need to search through the file to find these value configurations.</p> <p>You will want to boost the default memory limit value.</p> <p><div class="codeblock"><code>memory_limit: 128M</code></div></p> <p>(128MB is the default for Lucid. If you're running a lot of modules, or some heavy processes, you may need to increase this memory_limit value even higher.)</p> <p>Now, while you in php.ini, make sure that the following lines are uncommented and have proper values established.</p> <p><div class="codeblock"><code>max_execution_time = 30<br />error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR<br />display_errors = Off<br />log_errors = On<br />error_log = /var/log/php.log<br />register_globals = Off<br />safe_mode = Off<br />session.cache_limiter: nocache</code></div></p> <p><s>You will also need to add lines for PDO support. Find the Dynamic Extensions area in the file, and add these lines:</s></p> <p><s>extension=php_pdo.dll</s><br /> <s>extension=php_pdo_mysql.dll</s></p> <p><em>[<strong>Edit:</strong> You don't need to add these in Ubuntu 10.04. As it happens, Lucid comes with PDO extensions already enabled. Thanks to Peter Wolanin for pointing out in comments below what should have been obvious about .dll extensions in Linux. #facepalm]</em></p> <p>Refer to <a href="http://drupal.org/requirements" title="http://drupal.org/requirements">http://drupal.org/requirements</a> for details and nuances on php settings.</p> <p>To have these take effect, restart apache.</p> <pre> /etc/init.d/apache2 restart </pre></li> <li> <h5>Install PHP MySQL and Security Packages</h5> <ol> <li> <h6>Let's start with MySQL.</h6> <pre> apt-get install php5-mysql </pre></li> <li> <h6>Update your sources.</h6> <p>Now be sure the following lines in <code>/etc/apt/sources.list</code> are uncommented:</p> <pre> nano /etc/apt/sources.list </pre><p> <div class="codeblock"><code>deb <a href="http://us.archive.ubuntu.com/ubuntu/" title="http://us.archive.ubuntu.com/ubuntu/">http://us.archive.ubuntu.com/ubuntu/</a> lucid universe<br />deb-src <a href="http://us.archive.ubuntu.com/ubuntu/" title="http://us.archive.ubuntu.com/ubuntu/">http://us.archive.ubuntu.com/ubuntu/</a> lucid universe<br />deb <a href="http://us.archive.ubuntu.com/ubuntu/" title="http://us.archive.ubuntu.com/ubuntu/">http://us.archive.ubuntu.com/ubuntu/</a> lucid-updates universe<br />deb-src <a href="http://us.archive.ubuntu.com/ubuntu/" title="http://us.archive.ubuntu.com/ubuntu/">http://us.archive.ubuntu.com/ubuntu/</a> lucid-updates universe<br /><br />deb <a href="http://security.ubuntu.com/ubuntu" title="http://security.ubuntu.com/ubuntu">http://security.ubuntu.com/ubuntu</a> lucid-security universe<br />deb-src <a href="http://security.ubuntu.com/ubuntu" title="http://security.ubuntu.com/ubuntu">http://security.ubuntu.com/ubuntu</a> lucid-security universe</code></div></p> </li> <li> <h6>Update what you have so far.</h6> <pre> apt-get update </pre></li> <li> <h6>Boost security a bit.</h6> <p> Now install the php5-suhosin package to provide additional security.</p> <pre> apt-get install php5-suhosin </pre></li> <li> <h6>Restart apache.</h6> <p>To have these take effect, restart apache.</p> <pre> /etc/init.d/apache2 restart </pre></li> </ol> </li> <li> <h5>Enable mod_rewrite</h5> <p>This is easy peasy in Ubuntu because the PHP module is already installed; you just need to enable it:</p> <pre> a2enmod rewrite </pre><p> And restart apache again:</p> <pre> /etc/init.d/apache2 restart </pre></li> <li> <h5>Install PECL UploadProgress.</h5> <p>This allows you to have that nifty upload progress display when uploading files. It's not required, but is useful user feedback, which I recommend highly.</p> <ol> <li> <h6>First, update.</h6> <pre> apt-get update </pre></li> <li> <h6>Run the PECL installation of UploadProgress.</h6> <pre> pecl install uploadprogress </pre></li> <li> <h6>Now save the setting.</h6> <p><em>Note: This is all one line!</em></p> <pre> echo "extension = uploadprogress.so" &gt; /etc/php5/apache2/conf.d/uploadprogress.ini </pre></li> <li> <h6>Reload Apache to have it take effect.</h6> <pre> /etc/init.d/apache2 reload </pre></li> </ol> <p><strong>Done!</strong></p> </li> </ol> </li><li> <h4>Optional</h4> <ol> <li> <h5>Install Git</h5> <p>If you want to use Git to deploy your site code, you will need to install Git itself.</p> <pre> apt-get install git-core </pre></li> <li> <h5>Install Drush and Drush Make</h5> <p>Drush installation instructions are in the <a href="http://drupalcode.org/project/drush.git/blob_plain/HEAD:/README.txt">Drush readme.txt file</a>.</p> </li> <li> <h5>Install APC</h5> <pre> apt-get install libpcre3-dev pecl install apc </pre><p> Then edit your php.ini file to add to the extensions area:</p> <p><div class="codeblock"><code>; APC<br />extension=apc.so;<br />apc.shm_size=64M;</code></div></p> <p>Then you can copy over a php file that offers some nice stats:</p> <pre> cp /usr/share/php/apc.php /var/www/example.com/html/apc.php </pre><p> Note that the path of the destination is your webroot.</p> <p>Then restart apache.</p> <pre> /etc/init.d/apache2 restart </pre><p> And you're done. You will be able to get some nice APC stats at <a href="http://example.com/apc.php" title="http://example.com/apc.php">http://example.com/apc.php</a>. (You can always protect that file via .htaccess to put an authentication password on it if you like.) </p></li> <li> <h5>Install fail2ban</h5> <p><a href="http://www.fail2ban.org/wiki/index.php/Main_Page">Fail2ban</a> is a nice little security addition.</p> <pre> apt-get install fail2ban </pre><p> That's all on that.</p> </li> <li> <h5>Install bash-completion</h5> <p><a href="http://linuxhelp.blogspot.com/2005/09/bash-completion-makes-life-easier-for.html">Bash-completion</a> is a new one for me, and is turning out to be very handy. How did I go so long in the dark?</p> <pre> apt-get install bash-completion </pre></li> </ol> </li> </ol> <p>And that's it. Now your system is ready for site deployment to the folder you defined. Note that after you've deployed your site you will also want to <a href="http://drupal.org/cron">set up a cron job</a>. </p> <h3>IANASA</h3> <p>I am not a sysadmin by profession. This is just documentation of what I do for my own projects, or when tossing up a staging server for one of our in-house or client projects. Any tips for improvement, corrections, etc. are <em>most welcome.</em></p> <h3>Update: Clean URLs problem?</h3> <p>Recently I've run into an added complication with setting up Lucid: clean urls were not working. rewrite_module was enabled, .htaccess was there, but no go. As it turns out, .htaccess was not being read by default. If this happens to you, here's a fix:</p> <p>Edit the default site configuration in sites-available:</p> <pre> nano /etc/apache2/sites-enabled# 000-default </pre><p> A few lines down, under the directory pointing to you docroot, you need to change "AllowOverride None" to "AllowOverride all".</p> <p><div class="codeblock"><code>&lt;Directory /var/www/[pathtoyourwebroot]&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options Indexes FollowSymLinks MultiViews<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride all<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order allow,deny<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow from all<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;</code></div></p> <p>Now restart apache.</p> <pre> /etc/init.d/apache2 restart </pre><p> And you're done. Clean urls should work for you now.</p> <p>For more information on this, see <a href="http://drupal.org/node/945860" title="http://drupal.org/node/945860">http://drupal.org/node/945860</a>. To read about other ways to configure Apache and avoid the performance hit of using .htaccess, see <a href="http://drupal.org/node/43788" title="http://drupal.org/node/43788">http://drupal.org/node/43788</a>.</p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/rethinking-the-lamp-stack-disruptive-technology">Rethinking the LAMP stack — Drupal Disruptive Open Source Part 2</a> </div> </div> </div> http://pingv.com/blog/lucidly-drupal-setting-up-ubuntu-10-4-lucid-lamp-stack-for-your-drupal-site#comments Drupal Drupal 7 LAMP Ubuntu Ubuntu 10.4 Lucid Wed, 16 Mar 2011 18:59:51 +0000 Laura Scott 123 at http://pingv.com A New Year. A New Drupal. (A New Era.) http://pingv.com/blog/a-new-year-a-new-drupal-a-new-era <p><a href="http://pingv.com/about"></a>2010 was an amazing year. But 2011 has come in with such a bang, it's impossible not to look forward.</p> <h3><strong>Drupal 7 is <a href="http://drupal.org/7" title="Get started with Drupal 7!">out</a>!</strong></h3> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/drupal-7-w-bg---offset.jpg" alt="Drupal 7" title="Drupal 7 is a whole new Drupal" class="imagecache-teaser_full" /><br /> <span class="image-caption">Drupal 7 is a whole new Drupal</span></p> <p>It has been a long time coming. Drupal 6 came out some 3 years ago. That in many ways was the time when Drupal emerged from relative obscurity, where it was known only by open source aficionados, PHP geeks and a few untold thousands of independent website owners who knew a good thing when they saw it, to a CMS recognized worldwide as one to be reckoned with. More powerful than Wordpress, more flexible than Joomla!, more affordable (and flexible and, in many ways, powerful) than proprietary systems like Vignette, Drupal 6 came on the scene the quiet hero to many site owners. <em>[Note: I mean no disparagement against Wordpress or Joomla!, which are active open source web software projects, and we like open source software! But each is different; describing how so is something to be left for another blog post another day.]</em></p> <p><a rel="lightbox[group1][954 people contributed to Drupal 7 in tangible ways. Brian &#039;brianv&#039; Vuyk can be found a little above Druplicon&#039;s right eye.]" href="http://pingv.com/f/blogimgs/d7-contributor-cloud-huge.png"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/d7-contributor-cloud-huge.png" alt="Drupal 7 Contributors" class="imagecache-teaser_full" /></a></p> <p>We here in this shop have had the great fortune of being able to work with Drupal 6 on a number of projects — and each of us individually beforehand — playing a small part in a very large and impressive community.</p> <p>Drupal 7 promises to step everything up a notch.</p> <p>Right now, we have a couple of Drupal 7 projects in house that are in the last strategic planning and architecture phases, which means that we — and especially <a href="http://pingv.com/staff/brian-vuyk">Brian Vuyk</a>, who contributed <strong>33 patches to Drupal 7</strong> and, last year, took over the <a href="http://drupal.org/project/primary_term">Primary Term module</a>, while offering up and testing patches for a number of contributed modules — will be bringing a lot of time and attention to some interesting modules needing upgrades, as well as perhaps a new one or two. </p> <p>Meanwhile, as announced here before, the <a href="http://drupal.org/project/squaregrid" title="a base theme for Drupal 7">Square Grid theme</a> and the <a href="http://drupal.org/project/floater" title="base theme for Drupal 7">Floater theme</a> are both available for Drupal 7. (Confession time: They're still not tagged as official stable releases, but Square Grid is actually quite stable currently; Floater has some sprucing up for its 1.0 release. Expect stable releases of each very soon!)</p> <h3>How far we've come in just a few years!</h3> <p>I first discovered Drupal in 2004. I joined the community in November of that year. Back then, Drupal 4.5 was new. Theming was an order of magnitude more difficult than it is today. Modules did not have installation routines, you had to manually execute MySQL commands to add or update tables. PHP 4.whatever was the standard. You had to get into the code quite a bit to set up any kind of site.</p> <p>Since then, Drupal has grown. Ultimately, the test for Drupal 7 is just beginning. My expectation is that people will respond with enthusiasm and delight, and Drupal will continue its phenomenal growth with every major release.</p> <p>And yet this is open source, and <strong>the drop is always moving</strong>. <a href="http://drupal.org/project/issues/search/drupal?text=&amp;assigned=&amp;submitted=&amp;participant=&amp;status%5B%5D=Open&amp;priorities%5B%5D=1&amp;priorities%5B%5D=4&amp;priorities%5B%5D=2&amp;priorities%5B%5D=3&amp;categories%5B%5D=bug&amp;categories%5B%5D=task&amp;categories%5B%5D=feature&amp;categories%5B%5D=support&amp;version%5B%5D=572834&amp;issue_tags_op=or&amp;issue_tags=" title="Drupal 8 features, tasks, bugs, etc.">Drupal 8 is coming</a>!</p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/on-grids-in-design-and-announcing-the-square-grid-drupal-theme">On grids in design (and announcing the Square Grid Drupal theme)</a> </div> <div class="field-item even"> <a href="/blog/floater-theme-to-get-away-from-columns">Floater Theme to get away from columns</a> </div> <div class="field-item odd"> <a href="/blog/a-peek-at-drupal-7-theme-system-changes">A peek at Drupal 7 theme system changes</a> </div> </div> </div> http://pingv.com/blog/a-new-year-a-new-drupal-a-new-era#comments Drupal Drupal 7 Wed, 05 Jan 2011 18:27:05 +0000 Laura Scott 132 at http://pingv.com PINGV Creative's DrupalCon Proposals http://pingv.com/blog/pingv-creatives-drupalcon-proposals <p>DrupalCon Chicago session proposal voting is open. This time around we've proposed a couple of sessions. If they sound interesting to you, please vote for them! To help ensure that DrupalCon is loaded with a nice variety of high quality presentations, the organizing team's curation process for the final slate of sessions is not solely based on the voting:</p> <blockquote><p>Once the voting closes the track chairs will use the voting results, limits on number of sessions a speaker can speak at, feedback from previous DrupalCons, input from the team for the track, their experience and expertise in the area to fill the available spots in their track.</p></blockquote> <p>…but the votes certainly help!</p> <h3><a href="http://chicago2011.drupal.org/sessions/client-provider-success-factors">Client-provider success factors</a></h3> <p class="image-resize-300-right"><img src="http://pingv.com/f/imagecache/resize-300/blogimgs/kate-2007.jpg" alt="Kate Lawrence" title="Kate Lawrence" class="imagecache-resize-300" /><br /> <span class="image-caption">Over the past five years, Kate has worked with clients of all sizes in the business, educational, non-profit and government/NGO sectors. Prior to that she was on the other side, managing vendors for startups and Fortune 50 companies.</span></p> <p>This one is for companies and organizations looking to engage a Drupal design or development shop for a project or projects, as well as for shops still feeling pressed by the client-vendor relationship dynamics. Kate Lawrence talks about success-factors, choices, and pitfalls both the client and provider face during a web development project.</p> <p>What is an effective RFP? What makes for a good project/vendor match? How do you define and manage scope, especially in projects lasting months? What are some of the best communication strategies? What are common mistakes that can endanger a project's success?</p> <p>The presentation will focus on real-life situations, not abstract or theoretical ones.</p> <p>On the Drupal side, it ranges from the solo-shop all the way to one where client relations are handled by a specialist. On the client side, it is from the one-person client all the way to the Fortune-50 firm.</p> <h3><a href="http://chicago2011.drupal.org/sessions/grok-drupal-theming">Grok Drupal Theming</a></h3> <p class="image-resize-300-right"><img src="http://pingv.com/f/imagecache/resize-300/blogimgs/laura-dcdc.jpg" alt="Laura Scott" title="Laura Scott" class="imagecache-resize-300" /><span class="image-caption">Laura has been theming Drupal since 2004. She's presented on theming fundamentals and design at DrupalCon San Francisco, DrupalCon Paris, DrupalCon Boston, OSCMS and DrupalCamp Colorado.</span></p> <p>This session is for web designers and front-end developers new to Drupal — it's an overview of how themes work in Drupal. The technical architecture may seem complex, but it's actually quite simple once you grasp the concepts and structures.</p> <p>What are the core templates, what do they do, and how they work together? What are Drupal design patters to be aware of? What is $content and why does it output different things in different templates? How can specific fields be displayed or suppressed? What happens in template.php? How does the parent-child theming thing work?</p> <p>And since we're talking about Drupal 7, this might also be of interest to experienced Drupal themers who haven't had a chance yet to dive into Drupal 7.</p> <p>A lot has changed since my presentation in San Francisco [<a href="http://www.slideshare.net/pingv/grok-drupal-7-theming">slides</a>]. Drupal 7 theming may seem incredibly complex, but once you grok the conceptual framework, it all starts to fall into place.</p> <h3>Voting closes soon!</h3> <p>You have until December 24th at 9am ET. So <a href="http://chicago2011.drupal.org/sessions">what are you waiting for</a>?</p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/a-peek-at-drupal-7-theme-system-changes">A peek at Drupal 7 theme system changes</a> </div> <div class="field-item even"> <a href="/blog/drupal-disruptive-open-source-part-i-from-brobdingnag-to-lilliput">Drupal Disruptive Open Source: Part I — From Brobdingnag to Lilliput</a> </div> </div> </div> http://pingv.com/blog/pingv-creatives-drupalcon-proposals#comments business Drupal Drupal theming DrupalCon DrupalCon Chicago 2011 Fri, 17 Dec 2010 07:54:00 +0000 Laura Scott 130 at http://pingv.com Resolving Door http://pingv.com/portfolio/resolving-door <div class="field field-type-text field-field-subtitle"> <p>The University of Colorado School of Journalism brings crowdsourced answers to students' pressing questions.</p> </div> <div class="field field-type-text field-field-sidebar"> <h3>A Web App (not a website)</h3> <p class="image-resize-770"><img src="http://pingv.com/f/imagecache/resize-770/portfolio/home-20101202.jpg" alt="New home page" title="The new site" class="imagecache-resize-770" /><span class="image-caption">The new site has streamlined navigation with a user-centric experience as its focus. Added colors add to differentiation of cont</span></p> <h3>The Challenge</h3> <p class="image-resize-770"><img src="http://pingv.com/f/imagecache/resize-770/portfolio/old-annotated.jpg" alt="Old Resolving Door home page" title="The net experience was overwhelming" class="imagecache-resize-770" /><span class="image-caption">The old site had been running for a while, but had some serious UX and functionality problems.</span></p> </div> University of Colorado School of Journalism Drupal Drupal 6 Solr search user experience web application Thu, 02 Dec 2010 23:25:42 +0000 PINGV Creative 117 at http://pingv.com Rethinking the LAMP stack — Drupal Disruptive Open Source Part 2 http://pingv.com/blog/rethinking-the-lamp-stack-disruptive-technology <h3>Is Drupal a Disruptive Technology?</h3> <blockquote><p>What if Harvard College takes on Notre Dame in football. <em>Of course we can beat them; after all, they're only men.</em></p> <p><cite>—Professor Harry H. Hansen, Harvard Business School, on understanding the limits of the possible.</cite> </p></blockquote> <p>There is a lot of talk, some would say <em>hype, </em> about Drupal being enterprise-ready.</p> <p>Certainly Drupal is no piker system. From a relatively unknown Content Management System (CMS), Drupal has burst on the scene and now accounts for one-percent of all websites, which to some might seems small until we stop to think how big the web is.</p> <p>Those in the Drupalsphere are quick point out our successes — whitehouse.gov runs on Drupal, as do scores of other sites with brand names that are household words.</p> <p>My business Partner, Laura Scott, and I have upgraded dozens of existing systems that are undeniably enterprise-level. I say "systems," here, because almost by definition, the enterprise-level clients, for better or worse, have been on the internet for some time prior to seeking our help in the move to Drupal. Enterprise-level clients have grown sites over years. Technologies, like geological layers, have been set down over time, depending on historic decisions that changed as time went on. </p> <p>In the year 2000, the Y2K problem surfaced when it was discovered that some legacy software was written in a way that did not allow the date to change from 1999 to 2000, since only the last two digits of the year were programmed to change. The programs, written in the 1960s and 1970s was still in use in 1999 running beneath spiffy new interfaces. Who would have thought mid-20th century software would be running in the year 2000, yet it was.</p> <p>This puts the enterprise-level projects in the category of "most demanding," as we will see, below, in the Disruptive Technology graph.</p> <p>As a Drupal shop, dealing with legacy systems comes with the territory. For example, in 2007, as pingVision, we migrated Popsci.com from Vignette, a leader in proprietary CMS software, to Drupal 5. The hitch was the Popular Science's Vingnette database was Oracle and not MySQL, the latter which is standard for the LAMP stack. Moreover, legacy features and already-existing third-party applications required integration of (sometimes) vaguely documented and fluid APIs, all of which is to say that it's a "jungle out there," once we get outside of the LAMP Stack.</p> <h3>Linux, Apache, and Bears ... oh my!</h3> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/WizardLAMP.png" alt="http://media.lawrence.com/img/croppedphotos/2009/08/21/Wizard-of-oz-lede-5k-col-" title="Linux Apache and Bears, oh my!" class="imagecache-teaser_full" /><br /> <span class="image-caption">The existing LAMP stack elements are seemingly inseparable</span></p> <p>Drupal has made impressive inroads and in numerous instances has competitors like Vignette. The plucky open source folks have built some superb software built on the bedrock of Linux and are taking on ever-bigger and ever-better.</p> <p>The entrenched competitors have heard of us, and they are taking notice. We might not dominate today, but mighty oaks grow from acorns and there are those who wonder if Drupal might be up to turning the market upside down, as is the case of a truly disruptive technology.</p> <p>In part one of this article, which appeared on the PINGV Creative website in July, 2010<a href="http://pingv.com/blog/drupal-disruptive-open-source-part-i-from-brobdingnag-to-lilliput" title="Link to Part One"> Drupal Disruptive Open Source: Part I — From Brobdingnag to Lilliput</a>, I addressed the rhetorical question posed by Drupal's Founder, <a href="http://buytaert.net/" title="Founder of Drupal">Dries Buytaert,</a> in his <a href="http://sf2010.drupal.org/conference/sessions/state-drupal" title="Video of Dries"> in his keynote at the 2010 San Francisco Drupalcon</a>: Is Drupal a <em>disruptive technology? </em></p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/Disruptivetechnology.png" alt="(c) Clayton Christensen" title="How disruptive Technology can be seen" class="imagecache-teaser_full" /><br /> <span class="image-caption">Product improves to serve more demanding markets. Image: <a href="http://blogs.sun.com/webmink/entry/the_wrong_end_of_the">Sun Blogs</a>.</span></p> <p>The term, "disruptive technology," was coined by Harvard Business School Professor <a href="http://www.claytonchristensen.com/" title="Christensen&#039;s Home Page">Clayton Christensen</a> and popularized in his <a href="http://www.amazon.com/gp/product/0060521996?ie=UTF8&amp;tag=claytonchrist-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0060521996" title="Buy the book">best seller</a>, <a href="http://www.businessweek.com/chapter/christensen.htm" title="Review of Innovator&#039;s Dilemma">"The Innovator's Dilemma." </a>(ISBN 0-06-662069-4)</p> <blockquote><p> In its lowest terms, a disruptor enters a marketplace with an alternative technology and "kills" the leader(s).</p></blockquote> <p>The oft-cited classic case-set (one of many examples of disruptive technology) tracks the growth of American minimill steel makers, such as Nucor and Chaparral. Over time steel minimills displaced traditional American steel-makers such as United States Steel and Bethlehem — the integrated mills. The minimills entered the market at the low-end in undemanding applications such as rebar. Over time, and incrementally, the minimills improved their manufacturing technology until they were capable of manufacturing top-quality, high profit, steel. Inasmuch as the minimills had a cost advantage relative to the integrated mills, the traditional steel companies closed their mills and were driven from the market.</p> <h3>LAMP Stack — the Minimill analogy</h3> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/aladdin-lamp_0.png" alt="http://www.longbeachballet.com/graphics/perfs/Aladdin-1999/Aladdin.htm" title="Behold Aladdin&#039;s Lamp" class="imagecache-teaser_full" /><br /> <span class="image-caption">The LAMP stack is the magic in some Open Source Segments. </span></p> <p>David Recordon of Facebook in his <a href="http://www.youtube.com/watch?v=GL6nxo7Yino" title="OSCON keynote by David Recordon">keynote</a> at the Open Source Convention (OSCON) in July, 2010, addressed the evolution of the LAMP stack. He <a href="http://www.scribd.com/doc/34726692/Today-s-LAMP-Stack-OSCON-2010" title="David Recordon&#039;s slides at OSCON 2010">traced the name</a>, LAMP, back to an article in <em><strong>magazin für computertechnik</strong></em> by Michael Kunze titled "Let There be Light." </p> <p>Published in April 1998, an <a href="http://web.archive.org/web/20071212203835/http://www.heise.de/ct/english/98/12/230/" title="Michael Kurtz article on LAMP translated from German to English"> English translation</a> appeared in December of the same year. The tout reads:</p> <blockquote><p>Web publishing is hip: Not only the media companies, but also many medium sized and small companies want to make their data available to customers or staff on the net. By choosing freeware components, this can be done in a very budget-friendly way. </p></blockquote> <p>The formula is similar to the minimills — it is "budget-friendly" and does not go after the big fish. It pieces together (modular) components that are open source, giving the LAMP stack a cost advantage. </p> <p>One model of disruption asks us to picture Drupal as the market/technology leader (more integrated) and WordPress as a disruptor (less sophisticated). Such an analysis makes sense inasmuch as Drupal is seen as more complicated and more suited to enterprise-level applications. WordPress is emerging with more sophistication, without the perceived "daunting" learning-curve of Drupal.</p> <p>Yet, such a view might be somewhat parochial, for these technologies compete within the LAMP-stack "pond," just as the minimill steel makers Nucor and Chaparral battled it out in the early rebar days, making steel with the least demanding performance specifications.</p> <p>The LAMP stack has been around for over a dozen years. What else happened in 1998? </p> <ul> <li>Microsoft launches Windows 98 </li> <li>Google is founded</li> <li>Paypal is founded</li> <li>Apple's iMac is introduced</li> </ul> <p>A lot has happened since then and surely the LAMP stack has evolved, but only now are the limits of the LAMP stack, testing its limits with enterprise systems. </p> <h3>Linux, Apache, MySQL, and PHP … our creed!</h3> <p>"The speed of the whole is the sum of its <em>moving</em> parts."</p> <p>We all have heard of the Stone Age, the Bronze Age, and the Iron (Steel) Age. </p> <p>Once ships were moved by paddles, later aided by wind, and finally fully by wind. Then came steam powered by coal and later petroleum. Now many are nuclear — though, looking closer, we see steam, internal combustion, and electric motors are still part of the equation.</p> <p>The 19th century was the heyday of mechanical engineering. The 20th century was dominated by electromechanical technology. By the 21st century, engineers have tried to minimize the traditional moving parts, preferring to move electrons and/or pieces at the nano-level. The payoff has been speed and reliability.</p> <p>For the most part, the LAMP stack is rugged and fast, with few moving parts — except for the Tin Man — the servers. This may change as the cost of use of solid-state drives (SSD) declines, but for the time being, even with SSDs, manipulating data remains the rate determining step. That is, in any system, the slowest step determines the over-all speed of the system.</p> <p>The old mainstay of the LAMP stack, MySQL, is being re-examined, more-so than most of the rest of the stack. At one point, MySQL ceases to scale linearly — not just theoretically, but from a practical standpoint in that the data itself is busting from its digital cabinets.</p> <h3>Sharks and Little Fish</h3> <p>Going from Brobdingnag, where everything is larger than Gulliver, to Lilliput, where everything is smaller than Gulliver, has been the story of the electronics revolution. The large contraption gets miniaturized, requires less power to operate, and yet achieves the same amount of output. Microcircuits and microprocessors are at the core of this example.</p> <p>On the other hand, this shrinking in processing power has afforded a low-cost means to preserve a lot data. Creating more and more while getting cheaper and cheaper.</p> <p>My previous article ended with a nod to "big data" and to Enterprise Content Management, ECM. I have linked to the original post for those who are interested, but in short ECM is,</p> <blockquote><p> [a] market, with $4 Billion of annual revenue, dominated by a few key players who are acquiring one another through a series of nine- to ten-figure buy-outs. For example IBM paid $1.6 Billion for FileNet. Documentum fetched $1.7 Billion when EMC2 added them to the corporate family. Just recently Open Text gobbled up Vignette to the tune of $321 Million. </p></blockquote> <p>It is almost certain that the capitalization of the Drupal ecosystem is small in comparison to the ECM market. Acquia, for example, received $7M of first round financing from North Bridge Venture Partners in 2007 and additional amounts in subsequent rounds. Though a respectable sum, it is dwarfed by the capitalization of the ECM market.</p> <p>The ECM customers are the Fortune 500 and the Dow-Jones 30, so that the number of instances is small compared to the number of Drupal and WordPress websites. However, the cost per enterprise-level site is large in comparison. The ECM suppliers have extensive SEC filings, not to mention press releases and PowerPoint presentations that give us significant insight into the enterprise market-place — and the conventional LAMP-stack would be hard-pressed to meet the requirements of the client-base.</p> <p>From the publicly available material, the "budget-friendly" aspect of the LAMP-stack has not excited the ECM market-place, nor has the benefit of an open source code-based maintained by a solid community.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/BigDataBowTie001.png" alt="Open Text Presentation" title="SCM/ERP/CRM — the internet business-to-business portion is small compared to the whole." class="imagecache-teaser_full" /><span class="image-caption">The Enterprise system must address all of the above.</span></p> <p>For ECM vendors, the actual sales transaction is small, relative to the what happens before and after.</p> <p>We as consumers — say, going to the mall — are offered a lot of merchandise, much of which we glance at without a second look. Then — something strikes our eye; the quality is good; the price is affordable; we take the purchase to cash-wrap and head to out next destination.</p> <p>But the transaction is only a part of the larger process where the mall store management chooses an item, warehouses it, ships it to store, sets up the display, and sells it – not to mention deals with defectives, returns, and items that simply do not "move."</p> <p>The enterprise-ready system has two tails — pre-transaction and after-purchase. That is, the purchasing transaction is not much more than an inflection point in the cycle, the "knot" of the bowtie.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/BigData80_20001.png" alt="Open Text -- Gartner Study" title="Much of the value chain lies outside the CMS as we see it in Drupal" class="imagecache-teaser_full" /><span class="image-caption">There is more to the transaction</span></p> <p>The ECM customers do not seem particularly bothered that their software is proprietary, or even customized. The key factor for the client seems to be on-going support all along the business transaction.</p> <h3>LAMP stack as disruptor</h3> <p>Historically the LAMP stack has served a market that for the most part does not have extreme performance criteria, but which is price-sensitive. The margins are not there for the kind of intensive customer service, support, and documentation offered by the ECMs.</p> <p>Briefly, let's compare and contrast the players and who is serving the high-end and how these deals size up.</p> <p>The ECM client engagement average is $250,000. About a half the revenues are from Customer Support, a quarter of that is for the software license, and a quarter is service. Maintenance contracts are for one to two years with a large majority being renewed.</p> <p>Annual industry sales in the ECM arena approach $4Billion. With the average deal-sizes of $250,000, that translates into 12,000 deals per year.</p> <p>Some ECMs are said to be making 25% gross margin. Of every revenue dollar, 15% is spent on software development, another 24% is spent on sales &amp; marketing, while 9% is expended on administration.</p> <p>If an ECM firm has annual revenues of $250M, this is equivalent to one thousand deals of $250,000 each, or three six-figure deal <em>every day.</em> SEC files indicate that firms of this revenue level employ about 1,000 people. Finance gurus and technical elves who look at these kinds of breakdowns will point out that the revenue-per-person of this hypothetical ECM is $250,000/employee/year. Billing that out over a man-year means that these firms are billing at the gross-equivalent of $125/hour.</p> <p>Data gathered by the Lullabots in their article <a href="http://www.lullabot.com/blog/show-me-money" title="Lullabot survey">"Show Me the Money"</a> suggests the better-known Drupal shops are billing at about the same rate — $125/hour, possibly a bit higher.</p> <p>The long-standing Drupal shops are making seven-figures, but few are making eight. That is, a few are breaking $10M annually, and there is no evidence that there are any players making $30M per year.</p> <p>In the Drupal world, the majority, if not all, of the hourly rate will be for implementation — not 15%. A Drupal shop doing $10M annually and billing at $125/hour, would require 38 fulltime coders working 40 hours a week, outside of breaks, lunch, or meetings (that is, 100% billable) to hit that number, which is about 1% of the annual volume of a large player such as Open Text.</p> <p>Put another way, if Open Text writes a $250,000 deal and only 15% is code-related, the coding "burden" is $37,500. At the $125/hour rate, this is a 300 hour coding assignment, a modest sized job for shops that do projects in the 1,000s of hours.</p> <p>And there are more ways that the Drupalsphere is different. </p> <p>There are the vaunted seven-figure-deals, but no shop is getting these on a weekly basis, nor is the Drupal community structured to handle such activity. </p> <p>Put this another way. Assuming a $4B yearly industry revenue with $125/hour average labor rate. This means 32,000,000 labor-hours are devoted to this sector each year. That's about 15,400 people working 40 hours a week.</p> <p>The value proposition for an enterprise-level site leveraging 32M labor-hours outside itself, is that the client will save even more, inside.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/BusinessBigData.png" alt="OpenText" title="The Value Proposition" class="imagecache-teaser_full" /><br /> <span class="image-caption">The Integrated Solution — an investment, not a cost</span></p> <p>Firms engaging an ECM justify their decision based on Return On Investment (ROI), which translates into increased productivity or other cost-saving measures.</p> <p>Throughout the era 1950 – 1975, what today we call the Information Technology (IT) group in most businesses was an offshoot of the Accounting Department or the Controller's office. International Business Machines, IBM, sold hardware with customize software packages to manage unique businesses. As one Harvard Business School classmate explained in Ken Hatten's "Management of Small Enterprises: Operating Problems,"</p> <blockquote><p> You could buy an IBM System 360 that would manage a New Zealand sheep ranch and also could buy [a System 360] to handle selling airplane parts in Seattle. The software would address the different products, but underneath it was pretty much the same basic software, customized and tailored to the end-user's product or business.</p></blockquote> <p>Starting in the mid-1970s, almost as an act of faith, businesses began to invest in business management hardware and software, especially integrated systems. Up to this point, in terms of workflow, departments within a company were largely self-standing, if not quasi-antonymous. For example, a sales department might received a sales order for a specific type of thing, for a certain amount, at a certain price. This order would be manually transmitted to the fulfillment area — a warehouse, assembly line, production facility, what-have-you — and then the shipping department or traffic department would (again) enter in the name, destination, and delivery information. Also, somewhere along the line, invoicing and collecting payment and replenishing raw materials or inventory also took place, the latter usually handled by the purchasing department.</p> <p>Integrating the information into a single system made logical sense, but making it all work required more than logic — it required sustained investment into the business infrastructure.</p> <p>New words entered the lexicon. Some from Japan, like <em>kaizen</em> and <em>kanban. </em> Others, acronyms like JIT — Just In Time — were bandied about. Software, such as ManMan, was introduced by ASK Computers. The lineage of acronyms continued: Material Requirements Planning (MRP) and Manufacturing Resource Planning, (MRP2), which gave way to Advance Planning and Scheduling (ASP) and more recently Enterprise Resource Planning (ERP).</p> <p>Business economists say that for the first five to ten years of this period, businesses continued to invest in systems, not just hardware or software, that would allow them to increase their productivity. By the 1990s, productivity gains of about 20%, sometimes more, were being realized and the faith in the new systems was finally justified, because the productivity increase tended to fall through to the bottom line.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/ECM2009.png" alt="ECM " title="Slide" class="imagecache-teaser_full" /><br /> <span class="image-caption">ECM Players compete in a $4 Billion market. Image: <a href="http://www.cmswatch.com/Blog/1698-2009-ECM-Market-Overview">CMS Watch</a>.</span></p> <p>The client firms handle a great many transactions of all shapes, sizes, and forms, and the data generated as part of doing business is growing in proportion to the computing power of the microprocessors running the systems.</p> <h3>From jawbones to backbones</h3> <p>Of late there has been a lot of discussion of "Big Data," and how to handle it. </p> <p>Big data flows mainly from big business. In the 1980s the patient data at a typical medical facility was legion — cabinets full of handwritten notes recording visits, laboratory results, and x-rays — much of how this was handled was a matter of law and statues, filling room after room.</p> <p>Today a great deal of this information is stored electronically, because it can be.</p> <p>The information highway might be a great idea, but as we have learned with most highways, they soon get clogged and the information highway sometimes seems more like the information traffic jam.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/2001_obelisk.jpg" alt="http://moviesineedtosee.wordpress.com/2009/09/19/2001-a-space-odyssey/" title="9 black box" class="imagecache-teaser_full" /><br /> <span class="image-caption">2001: a Dataspace Odyssey — I think the server's front panel is in the dirt.</span></p> <p>We are learning new numbers. In a <a href="http://www.reuters.com/article/idUSTRE68R66Y20100928" title="trillion, trillion, trillion">recent Reuters article</a>, an author tells us the iPv6 standard will allocate a "trillion, trillion, trillion." addresses. Wisely, the author did not use the word <em>"unodecillion."</em></p> <p>We have rapidly moved from thinking of data in megabytes to gigabytes to terabytes, and beyond:</p> <ul> <li>1,000 terabytes = 1 petabyte</li> <li>1,000 petabytes = 1 exabyte</li> <li>1,000 exabytes = 1 zettabyte</li> <li>1,000 zettabytes = 1 yottabyte</li> </ul> <p>And these numbers are finding their way into the way we measure — sometimes daily,</p> <blockquote><ul> <li>Google processes about 24 petabytes of data per day.</li> <li>AT&amp;T has about 19 petabytes of data transferred through their networks each day.</li> <li>4 experiments in the Large Hadron Collider will produce about 15 petabytes of data per year, which will be distributed over the LHC Computing Grid.</li> <li>The German Climate Computing Center (DKRZ) has a storage capacity of 60 petabytes of climate data.</li> <li>As of June 2010, Isohunt has about 10.8 petabytes of files contained in torrents indexed globally.</li> <li>The Internet Archive contains about 3 petabytes of data, and is growing at the rate of about 100 terabytes per month as of March, 2009.</li> <li>World of Warcraft utilizes 1.3 petabytes of storage to maintain its game. </li> <li>The 2009 movie Avatar is reported to have taken over 1 petabyte of local storage at Weta Digital for the rendering of the 3D CGI effects. </li> </ul> <p><cite>—http://en.wikipedia.org/wiki/Petabyte</cite></p></blockquote> <blockquote><p>In a 1999 website, Roy Williams of Cal Tech, offered that 2 petabytes could hold all US academic research libraries. 200 petabytes could hold all printed material. </p></blockquote> <h3>Every year the data mass increases 60-percent</h3> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/Exabyteslinear.png" alt="PINGV Creative" title="Upward ski-jump" class="imagecache-teaser_full" /><br /> <span class="image-caption">Digital Data; Linear Graph</span></p> <p>In 2007, the digital universe was 281 exabytes. That is: 281 billion gigabytes, and in that year, for the first time, the data generated exceeded storage capacity. Next year, one prediction says it will be 1,800 billion gigabytes. That is 1.8 zettabytes — a number so unfamiliar that Microsoft Word spellchecker does not recognize it.</p> <p>A <a href="http://en.wikipedia.org/wiki/Zettabyte" title="Wikipedia entry">zettabyte</a> is a billion terabytes.</p> <p>The data universe will have increased 10-fold from 2006 to 2011. Taking the 5th root of 10 (fold) gives just under 60% compound growth — we'll contrast that to Moore's Law, in a later section.</p> <blockquote><p>Not all information created and transmitted gets stored, but by 2011, almost half of the digital universe will not have a permanent home.</p> <p>Fast-growing corners of the digital universe include those related to digital TV, surveillance cameras, Internet access in emerging countries, sensor-based applications, datacenters supporting “cloud computing,” and social networks.</p></blockquote> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/800px-Charlton_Heston_in_The_Ten_Commandments_film_trailer.jpg" alt="10 Commandments" title="Exodus and Exaflood" class="imagecache-teaser_full" /><br /> <span class="image-caption">Exaflood of Data — we're talking of millions of terabytes of drive space.</span></p> <h3>Some call it the Exaflood. </h3> <p>How dire it all is has been debated. Some studies say that data is being generate faster than there is capacity to store it. Others say that this is alarmist, and that there are solution that avert a data storage disaster. </p> <p>It is a valid concern as to whether there is enough storage space, but focusing only on space, and not on retrievability, let alone what problems are in fathoming the relationship of the various datum, can overshadow what the implications, both good and bad, of having so much data with which to deal.</p> <h3>Moore's Law</h3> <p>In April, 1965, still a relatively unknown physical chemist, Gordon Moore, wrote a three-and-a-half page article in the journal, "Electronics." The tout said the writer "is one of the new breed of electronic engineers, schooled in the physical sciences rather than in electronics."</p> <p>Hardly 2000 words in length, it gets right to the point,</p> <blockquote><p>The future of integrated electronics is the future of electronics itself. The advantages of integration will bring about a proliferation of electronics, pushing this science into many new areas….</p> <p>Integrated circuits will lead to such wonders as home computers or at least terminals connected to a central computer, automatic controls for automobiles, and personal portable communications equipment. </p></blockquote> <p>But then the enduring insight,</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/MooresLawLogLogRevB.png" alt="ftp://download.intel.com/museum/Moores_Law/Articles-Press_Releases/Gordon_Moore_" title="Moore&#039;s Law circa 1965" class="imagecache-teaser_full" /><br /> <span class="image-caption">The initial picture of Moore's Law, as it appeared in "Electronics Magazine," did not have the grid-lines of the log-log function. A copy of the original graph was overlaid on a log-log graph, with some unanticipated registration issues. The grid-lines add some "drama" to the shrinking of traces-and-spaces as more and more is placed onto less and less.</span></p> <p>Machines capable of processing data faster will also generate data more quickly. Moore's Law suggests computer power that grows geometrically will produce data geometrically.</p> <blockquote><p> The complexity for minimum component costs has increased at a rate of roughly a factor of two per year</p></blockquote> <p>IDC in 2008 provided some data about the growth of data. In a 2008 <a href="http://www.emc.com/collateral/analyst-reports/diverse-exploding-digital-universe.pdf" title="IDC study, 2008">study,</a> IDC states that from 2006 to 2011 — five years — that data will increase 10-fold.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/Exabytesln.png" alt="Data from IDC, 2008" title="Semi-log graph is more or less straight line" class="imagecache-teaser_full" /><br /> <span class="image-caption">Digital Information Created, Captured, Replicated, Worldwide Exabytes Log</span></p> <h3>The venerable LAMP stack</h3> <p>The pressure on the database piece of the LAMP stack is only increasing. The database piece is not only being strained, but it is being rethought. </p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/ManBehindTheCurtain.png" alt="http://minnesotansforglobalwarming.com/m4gw/ManBehindTheCurtain.jpg" title="The four comrades find the Wizard" class="imagecache-teaser_full" /><br /> <span class="image-caption">Pay to attention to the data structure behind the curtain</span></p> <p>The LAMP stack is not a monolithic thing, and probably never has been. Andrew Astor in his August, 2005, article, "<a href="//linux.sys-con.com/node/117902" title="Astor argues the LAMP stack is not a static thing.">LAMP's Dark Side</a>," says, in part,</p> <blockquote><p> [LAMP's] open source components are well known, readily available, and work well together for many tasks, particularly for serving Web sites without update-intensive database requirements. However, LAMP's role as a merely illustrative stack of open source offerings is hardly ever acknowledged; in reality, each layer of the LAMP stack is fungible. No one layer was expressly designed to work with the others, and neither do any of them work better with the others than do alternatives. For example, the PostgreSQL and EnterpriseDB databases work just as well with "L," "A," and "P" as does MySQL. Similarly acceptable substitutions are, of course, available for each other layer in the stack …</p> <p>… The danger is that this specific software combination will become so institutionalized that an enterprise finding one layer of LAMP unsuitable will end its inquiry, declaring that "the" open source stack cannot meet its needs. That's bad for Linux, bad for open source software, and bad for enterprises. </p></blockquote> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/LampStackPlus2_0.png" alt="scribd.com/doc/34726692/Today-s-LAMP-Stack-OSCON-2010" title="David Recordon (Facebook) Talk" class="imagecache-teaser_full" /><br /> <span class="image-caption">David Recordon (Facebook) "Today's Lampstack"</span></p> <p>Breaking out of the LAMP stack may be inevitable. In a July, 2010, article titled, "The Next LAMP Stack: Hadoop Platform for Big Data Analytics," author Brett Shepherd writes</p> <blockquote><p>Many Fortune 500 and mid-size enterprises are intrigued by Hadoop for Big Data analytics and are funding Hadoop test/dev projects, but would like to see Hadoop evolve into a more fully integrated analytics platform, similar to what the LAMP (Linux, Apache HTTP Server, MySQL and PHP) stack has enabled for web applications.</p> <p>As Michael Dell, founder and chief executive of Dell, told the Financial Times:</p> <blockquote><p>We are still in the early stages of our industry in terms of how do organizations take advantage of, and tap into, the power of the information that they have. The IT revolution is just beginning”, May 19, 2010 </p></blockquote> <p>As the Hadoop data stack becomes more LAMP-like, we get closer to realizing Jim Gray’s vision and giving enterprises an end-to-end analytics platform to unlock the power of their Big Data with the ease of use of a Lotus 1-2-3 or Microsoft Excel spreadsheet.</p> </blockquote> <p>The early data systems were built around some captive servers and stored what the IT Department was charged to manage, almost Ptolemaic view where, like the universe orbited Earth, everything revolved around the central computer and was very ordered.</p> <p>Today that is no longer the case. There is data and lots and lots of it, and with the web, even quasi-Luddites are searching the web and adding to the collective storage.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/flammarion_halfcolor_big.gif" alt="http://antwrp.gsfc.nasa.gov/htmltest/rjn.html" title="Moving beyond traditional Relational Database Management Systems (RDBMS) can happen when the data base has non-traditional relationships." class="imagecache-teaser_full" /><br /> <span class="image-caption"> Moving beyond traditional Relational Database Management Systems (RDBMS) can happen when the data base has non-traditional relationships. Like Ptolemy where the universe orbited Earth, everything revolved around the central computer, rational databases revolving around them, and everything was very ordered. With databases existing outside of traditional scheme of things, we are entering more of a Copernican view of the world.</span></p> <p>To many, if not most people working in Open Source, the "M" in the LAMP stack acronym stands for: MySQL — a so-called Relational Database Management Systems (RDBMS).</p> <p>Traditional RDBMS work well where the data relationships are believed to be well thought out and believed well understood, or at least well-defined. </p> <p>At one time, it was widely held that the sun, moon, and stars revolved around the Earth, which was the center of the universe; and that system worked. Clocks, seasons, festivals, horoscopes, and navigation all worked with a model of the Earth at the center of all things. The RDBMS related the celestial and physical worlds to a central point of Earth-at-the-center.</p> <p>Snigger though we might today, setting the Earth at the center worked. Only in 1543, about 50 years after Columbus discovered North America, was Copernicus' "De revolitionibus orbium coelestium" published, and even then, celestial motion was not fully explained. It would be another fifty years, 1598, when Kepler would make his breakthrough and discover planetary orbits were not circular, but elliptical.</p> <p>One way to think about what these discoverers did was to change the reference frame — the relationships — and for many, this shift did not come easy. In fact, others prior to these individuals, had gone outside of the Ptolemaic system. Yet, something was happening in the world, where things came together and built upon one another — a recurring pattern in technological breakthroughs to the present day.</p> <p>This isn't a question confined just to the LAMP stack or open source.</p> <p>Drupal may well end up being a disruptor of ECMs in so far as it can adapt itself to arcane databases and the other "geological layers" of what has come before.</p> <p>As we saw a decade ago, when Y2K caused consternation and panic in some circles, that what we are given isn't always what's pretty, neat, and tidy, or as Emma, the Regent of Japanese-Buddhist hell complained, <em>a ruler can't always chose his kingdom,</em> meaning every terrain has its immutable rules.</p> <p>Coming full-circle regarding disruption, the LAMP-stack's next challenge will be the shift from what "plays nice" database-wise, to being an adaptive platform that can interact with large datasets of different types.</p> <p>This takes us deeper into what databases mean and how open source might uniquely play a role.</p> <p>This will appear as part 3 of this series.</p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/drupal-disruptive-open-source-part-i-from-brobdingnag-to-lilliput">Drupal Disruptive Open Source: Part I — From Brobdingnag to Lilliput</a> </div> <div class="field-item even"> <a href="/blog/the-state-of-drupal-building-the-future">The State of Drupal: Building the Future</a> </div> </div> </div> http://pingv.com/blog/rethinking-the-lamp-stack-disruptive-technology#comments Acquia Andrew Astor ASP Big Data big data hourly rate Brett Shepherd David Recordon disruptive technology Drupal Drupal hourly rate ECM Enterprise Content Management ERP Exaflood Hadoop Jim Gray LAMP ManMan Michael Kunze Moore's Law MRP MRP2 MySQL North Bridge Venture Partners Open Text Vignette website ROI Thu, 02 Dec 2010 22:17:25 +0000 Katherine Lawrence 121 at http://pingv.com The National Interest http://pingv.com/portfolio/the-national-interest <div class="field field-type-text field-field-subtitle"> <p>With an archaic website that was virtually non-functional, <em>The National Interest</em> magazine needed to (re)invent its online presence</p> </div> <div class="field field-type-text field-field-sidebar"> <h3>New home page</h3> <p class="image-resize-770"><img src="http://pingv.com/f/imagecache/resize-770/nationalinterest.org-20100813074317.png" alt="The National Interest home page, nationalinterest.org" title="The new home page features a configurable carousel" class="imagecache-resize-770" /><span class="image-caption">The new website was designed to emphasize both daily web content and the print magazine articles.</span></p> <h3>The Challenge</h3> <p><em>The National Interest</em>, the Washington, DC foreign policy magazine, needed a new website, one that better spoke to their established brand and that functionally addressed the needs of staff and readers both. The magazine had long since outgrown their previous content management system and each issue's publication made the discrepancy more apparent.</p> </div> The National Interest Magazine Drupal Memcached Pantheon Mercury Pressflow publishing RDFa Solr search Varnish Voxel Fri, 17 Sep 2010 01:50:19 +0000 PINGV Creative 116 at http://pingv.com Weavolution http://pingv.com/portfolio/weavolution <div class="field field-type-text field-field-subtitle"> <p>A robust online crafts community needed a site with the beauty and functionality to match that of their own work</p> </div> <div class="field field-type-text field-field-sidebar"> <h3>The New Site</h3> <p class="image-resize-770"><img src="http://pingv.com/f/imagecache/resize-770/weavolution.com-20100817170322.png" alt="Weavolution.com" title="The new site showcasing projects and people" class="imagecache-resize-770" /><span class="image-caption">The new Weavolution represented a re-architecting and redesign, as well as refactoring of broken code.</span></p> <h3>The Challenge</h3> <p class="image-resize-770"><img src="http://pingv.com/f/imagecache/resize-770/portfolio/weavolution-old.jpg" alt="Weavolution.com old site" title="" class="imagecache-resize-770" /><span class="image-caption">The old site was running a hacked Drupal implementation that posed many problems.</span></p> <p>The original site was not serving its community well. Usability and aesthetics were a concern, especially for a community of craftspeople and artists, many of whom spend very little time on the web.</p> </div> Weavolution community Drupal Tue, 14 Sep 2010 18:00:29 +0000 PINGV Creative 118 at http://pingv.com HTML5 + RDFa = time to get rid of that 20th century furniture http://pingv.com/blog/html5-rdfa-time-to-get-rid-of-that-20th-century-furniture <p>We're entering a new era of the web. To the ignorant masses, this transition will go largely unnoticed; they'll enjoy increased usability and convenience, with more robust functionality and more relevant data at hand. And they'll mostly just take it for granted.</p> <p>However, for web designers, front-end developers and data system programmers, we have a lot of work to do.</p> <h3>Why HTML5?</h3> <p>Why indeed? As someone who's worked almost exclusively with Drupal since 2004, my nose has been pretty much in xhtml 1.1. Back then, moving to xhtml took some learning and patience on my part, having played with basic HTML since 1995. Now xhtml feels like the familiar friend and HTML the ugly cousin.</p> <p>But then I started really looking at HTML5. And the more I am learning about it, the more I am appreciating how HTML5 looks to be a real game-changer.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/druplicon-html5.png" alt="HTML5" title="Hope and Change in HTML5" class="imagecache-teaser_full" /><span class="image-caption"></span></p> <h4>DOMinate the web</h4> <p>Most of the buzz you see online about HTML5 focuses on the particulars — with the plurality of coverage over how HTML5's media tags stand to push most uses of Flash out to pasture. And that's certainly big.</p> <p>However, there's something more fundamental in the change HTML5 is bringing to the web. I quote from <a href="http://www.amazon.com/gp/product/0321687299?ie=UTF8&amp;tag=rarepattern-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0321687299">Introducing HTML5 (Voices That Matter)</a>, by Bruce Lawson and Remy Sharp: </p> <blockquote><p>Many of our current methods of developing sites and applications rely on undocumented (or at least unspecified) features incorporated into browsers over time. For example, <code>XMLHttp-Request</code> (XHR) powers untold numbers of Ajax-driven sites. It was invented by Microsoft, and subsequently reverse engineered and incorporated into all other browsers, but had never been specified as a standard…. So one of the first tasks of HTML5 was to document the undocumented, in order to increase interoperability by leaving less to guesswork for web authors and implementors of browser.</p></blockquote> <p>This is big in itself. But it's not even the biggest thing, imho.</p> <blockquote><p>It was also necessary to unambiguously define how browsers and other user agents should deal with invalid markup…. The barrier to entry to publishing on the Web was democratically low, but each browser was free to decide how to render bad code. Something as simple as <code>&lt;b&gt;&lt;i&gt;Hello mum!&lt;/b&gt;&lt;/i&gt;</code> (note the mismatched closing tags) produces different DOMs in different browsers. Different DOMs can cause the same CSS to have a completely different rendering, and they can make writing JavaScript that runs across browsers much harder than it need be….</p> <p>…HTML5 specifies new DOM APIs for drag and drop, server-sent events, drawing, video, and the like. <strong>These new interfaces that HTML pages expose to JavaScript via objects in the DOM make it easier to write such applications using tightly specified standards rather than barely documented hacks.</strong></p></blockquote> <p>In other words, by clarifying specifics — especially in error handling — HTML5 stands to open the doors for much more efficient and effective JavaScript, heralding a new era for robust interactivity with dynamic interfaces and rich user experiences that would be too heavy and difficult, or impossible, to implement in xhtml or HTML4.</p> <p>Suddenly that existing markup you have is starting to look kind of musty.</p> <h4>With new language comes new ways of thinking</h4> <p>The other thing to consider is how the web, and the nature of websites themselves, will change as the collective creativity of web designers worldwide starts to not just understand the syntax of HTML5 but also grok on an intuitive, subconscious level how websites can really let go of being collections of pages and embrace their web application natures.</p> <p>There's a lot of old conventional thinking that is suddenly up for question. For example, while a website as a "navigation menu," an application may instead have a "toolbar": Does that change how you think about those links at the top of your page? People may be less interested in browsing, more interested in searching: Does that affect the role the search form plays in your interface layout? </p> <p>Of course, for those of us who've been working building software-driven sites (you know, the "Web 2.0" things), this kind of thinking may have been percolating for a while.</p> <p>Hopefully we'll also have learned the lessons taught by the untold numbers of Flash website designers, who gave us splash pages, annoying, gratuitous motion effects (with obnoxious sound effects), and user interfaces more focused on dazzling the user with the creator's cleverness rather than on serving the user with an interface that serves the user's needs. Here's hoping that HTML5 does not bring us into a new age of craptastic blinky poppy wooshy buzzy design.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/we-can-do-html5.jpg" alt="We can do it" title="It will take work, but work will not daunt us!" class="imagecache-teaser_full" /><span class="image-caption"></span></p> <h4>HTML5 and Drupal</h4> <ul> <li>The Manifesto: <a href="http://groups.drupal.org/node/82664">http://groups.drupal.org/node/82664</a> </li> <li>HTML5 Tools module: Module: <a href="http://drupal.org/project/html5_tools">http://drupal.org/project/html5_tools</a></li> <li>A base theme: <a href="http://drupal.org/project/html5_base">http://drupal.org/project/html5_base</a></li> <li>Another effort: <a href="http://drupal.org/project/boron">http://drupal.org/project/boron</a></li> <li>And <a href="http://drupal.org/project/html5">http://drupal.org/project/html5</a></li> <li>The community discussion: <a href="http://groups.drupal.org/html5">http://groups.drupal.org/html5</a> &amp; in IRC at #drupal-html5</li> </ul> <p>This is a lively and ongoing process that, so far, has <s>few allies — mostly I think because of the relative obscurity of HTML5 and the design affordances it brings in relation to the world of PHP/Drupal developers. Hopefully that's changing</s> a small but rapidly growing core of themers and developers interested in making this happen, <a href="http://twitter.com/jensimmons/statuses/21857623619">especially in the past few days</a>. Very exciting.</p> <h3>Wither RDFa?</h3> <p>The other side of this revolutionary coin (how many metaphors can I mix into this post?) is the growth and real-world application of RDFa.</p> <p>In case you didn't know it, RDFa is already here. Google is consuming it where it finds it, using it to generate more accurate and relevant search results. Best Buy is now famous for having enjoyed a 30% increase in sales since incorporating RDFa into their online shopping site. </p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/drupal-rdfa-picture.jpg" alt="RDFa" title="Data is in the air" class="imagecache-teaser_full" /><span class="image-caption"></span></p> <h4>Robots speaking in complete sentences</h4> <p>That's the net effect of RDFa. You see, currently hyperlinks, to robots, are analagous <a href="http://en.wikipedia.org/wiki/Mystery_meat_navigation">mystery meat navigation</a>. To the human reader, the nature and location of a hyperlink may make total sense in context — even the mouse-over reveal of the hyperlink URL can yield meaning to us cerebral bipeds. But all a plain hyperlink says to a robot is "follow me." The robot doesn't know who made the link (or the destination site), what the destination is, why the link is there — just where the link is going, and that only by its URL.</p> <p>RDFa changes that by providing syntax, often abbreviated and/or abetted by libraries such as Dublin Core, to add meaning to the link.</p> <h4>Excuse me, did I say something?</h4> <p>One event happening (almost certainly) this year that could make for some very interesting RDFa developments will be the launch of Drupal 7. Historically, the Drupal user base, community and number of downloads have doubled with each major release of Drupal. And there are a number of factors that suggest that Drupal 7 will be no exception. </p> <p>What's interesting about this is that Drupal 7 core implements RDFa. This means there are going to be <em>umpteen oodles</em> of websites and web apps out there talking RDFa — and, for most of them, without understanding the language. The amateurs are going to be joining the RDFa party. And that could become cacophonous.</p> <p>This can mean an RDFa-enabled Tower of Babel. And that prospect has prompted some skeptics to argue against the semantic web. As they see it, we should make robots understand how we make the web, rather than try to remake the web so robots understand. It's an interesting topic, and I recommend <a href="http://vimeo.com/kateray" title="Kate Ray's Video page">Kate Ray</a>'s short video on the subject:</p> <p><iframe src="http://player.vimeo.com/video/11529540?color=ffffff" width="620" height="465" frameborder="0"></iframe> <p>[Source: <a href="http://vimeo.com/11529540">Web 3.0, on Vimeo</a></p> <p>From where I sit, perhaps the ideal falls somewhere in a combination? There's no question that Open Data, for example, benefits from semantics. But on the other hand, it would be great to develop parsers that can interpret in existing contexts the underlying semantics of existing content, much like HTML5 provides for the kinds of sloppy markup errors that happen in the web (especially with user-generated content).</p> <p>Nevertheless, it's hard to dismiss the potential of RDFa when there are be thousands of web developers bringing their creativity and initiative to the rave. For example, in Drupal, one project with interesting potential is <a href="http://drupal.org/project/autordf">AutoRDF</a>, a <a href="http://code.google.com/soc/">Google Summer of Code project</a> by <a href="http://drupal.org/user/398572">Tushar Mahajan</a>, that promises to "automatically tag node content. It will find important words and patterns in a node to tag important keyword and Rdf'ing it. It will build a taxonomy tree."</p> <h4>The SPARQLy Views</h4> <p>The fact that Drupal 7 will play a role in this democratized explosion of RDFa-related endeavors is itself very exciting. And that's not just in the RDFa structure on publishing content, but also in reaching out and pulling in structured RDFa data from elsewhere.</p> <p>In other words, the web can be like one big website. Jane's site could query Joe's site's data <em>without having any direct access to Joe's database.</em></p> <p>One example is the a module (still in development) that leverages the power and flexibility of the Views module to consume and present SPARQL query data. </p> <p>The <a href="http://drupal.org/project/sparql_views">SPARQL Views module</a> by <a href="http://drupal.org/user/396253">Lin Clark</a> will likely be a first introduction for many to the kinds of wondrous things RDFa on the web can enable. Its drag-and-drop query builder will empower people with ability to plug SPARQL queries into Views for customized presentation. Awesome! (Disclosure: I am a <a href="http://code.google.com/soc/">Google Summer of Code mentor on this project</a>, so feel free to take my enthusiasm with a grain of salt.)</p> <h4>I want my SEO</h4> <p>Ultimately a — if not <em>the</em> — big convincer for adoption of RDFa will be its effectiveness in getting content noticed. Years ago, Drupal seemed natively and naturally to beat other CMSs when it came to SEO. Drupal sites rose quickly to the top. Will it happen again with Drupal 7 and RDFa? We assume so, but the proof is in the results, and those are still many weeks, perhaps months, away yet.</p> <p>But imagine what the web will be like when so many sites can be queried and polled from the outside. Information is power, shared information is empowering. When the World Wide Web becomes the World Wide Database, watch out. We'll look back at 2010 as the quaint time of horse and buggy.</p> <h3>Out with the old, in with the new</h3> <p>What this all means is that change is upon us. And all of us web designers, programmers, database administrators, information architects, strategists, and front-end developers need to get busy. We have some learning to do. Some new skills to perfect. Some new thinking to explore. Some new best practices to embrace.</p> <p>The end user may not really notice as these improvements in user experience roll out. But the end user will notice if you're <em>not</em> rolling with these improvements. Just as a "Web 1.0" site from 1999 stands out to us today as an archaic relic, today's "Web 2.0" sites are going to feel very outdated a few years from now. And just as sites with table-based layouts or built in Flash can make for frustrating user experiences (or out and out inaccessibility) on today's delivery platforms like handhelds and tablets, websites built without the front-end affordances made possible with HTML5 may seem limited to end users, and websites without semantic metadata layers on their content may come off as rather opaque.</p> <p>As a Drupal aficionado, I'm delighted to have Drupal 7 leading the way on RDFa. However, Drupal is still deeply entrenched in xhtml. The HTML5 phenomenon, while a long time coming, really sparked to life only in the last year — too late to be embraced and incorporated into Drupal 7's core.</p> <p>But perhaps that's a good thing, because things can happen rapidly in Drupal contrib, and HTML5 is still evolving. So there's a new <a href="http://groups.drupal.org/HTML5">HTML5 working group</a> on g.d.o to drive towards an HTML5 module (to transform all the markup of Drupal into HTML5-valid code) and an HTML5 base theme.</p> <p>It's all very exciting. We are in interesting times. Don't stand still. The Drop is always moving.</p> <h3>For further reading:</h3> <p>If you're an Amazon shopper, here's a handy link to Lawson and Sharp's excellent book:</p> <p><iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;nou=1&amp;bg1=FEDE29&amp;fc1=000000&amp;lc1=6B292A&amp;t=rarepattern-20&amp;o=1&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=10FE9736YVPPT7A0FBG2&amp;asins=0321687299" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p> <div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/the-state-of-drupal-building-the-future">The State of Drupal: Building the Future</a> </div> </div> </div> http://pingv.com/blog/html5-rdfa-time-to-get-rid-of-that-20th-century-furniture#comments Drupal Drupal 7 HTML5 RDFa semantic web Tue, 24 Aug 2010 03:20:33 +0000 Laura Scott 77 at http://pingv.com Floater Theme to get away from columns http://pingv.com/blog/floater-theme-to-get-away-from-columns <p>As a part of wanting to throw out some of the outdated design furniture of the 20th century, I created a new theme to simply float content elements against each other.</p> <p>Contributed in a stripped-down version to the Drupal community as the <a href="http://drupal.org/project/floater" title="Official Drupal.org project page">Floater Theme</a>, this theme is about embracing the various kinds of devices and resolutions which people use to access the web. After all, your site could be viewed on a little crap handheld or a big screen 2550 pixels wide. And in theory you want everyone to be able to see what you're offering.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/lsnet-dev.png" alt="LauraScott.net" title="Screenshot to illustrate the layout of the Floater Theme" class="imagecache-teaser_full" /><span class="image-caption">This screenshot is from the soon-to-be-launched LauraScott.net</span></p> <p>The first Alpha 1 release of this theme for Drupal 7 has just a few basics:</p> <ul> <li>The main content area is a fixed width.</li> <li>Blocks in the "right sidebar" (as Drupal 7 currently calls the region) are of fixed width and height, so they float cleanly and line up well with the content.</li> <li>Narrower-resolution screens get an alternative stacked layout of all the content.</li> <li>Generic styling (assuming the primary use case will be using this theme only as a base theme).</li> </ul> <p>Once <a href="http://drupal.org/project/issues/search/drupal?version[0]=156281&amp;status[0]=1&amp;status[1]=8&amp;status[2]=13&amp;status[3]=14&amp;priorities[0]=1&amp;categories[0]=bug&amp;categories[1]=task" title="Current Critical Issues for Drupal 7">Drupal 7 stabilizes</a> into a Release Candidate, I plan to step into the regions definitions and simplify the regions in this theme. I've generally stayed away from all that for now simply because there's still too much change happening in Drupal 7.</p> <p>I've been working with Drupal nearly six years now, designed and created dozens of Drupal themes, helped people with theming questions in IRC, and presented on Drupal theming at DrupalCons, but only now have I risen to the CVS challenge and contributed a theme (or any project). CVS is that notorious bugaboo (and barrier to entry) for many designers, but even so I don't know why CVS daunted me so much. I used Subversion (which is quite similar) for years. At PINGV we use Git for versioning. Even so, I was tempted to just wait until <a href="http://drupal.org/community-initiatives/git" title="All about this momentous effort">the Drupal community gets onto the Git footing</a> later this year. </p> <p>But today I decided I'd waited long enough. Too long. So there it is. I hope people like the theme. At this point, I have no firm plans on where to take it in terms of features and characteristics. I'm <a href="http://drupal.org/node/add/project-issue/floater">open to ideas</a>.</p><div class="field field-type-nodereference field-field-related"> <div class="field-label">Related:&nbsp;</div> <div class="field-items"> <div class="field-item odd"> <a href="/blog/on-grids-in-design-and-announcing-the-square-grid-drupal-theme">On grids in design (and announcing the Square Grid Drupal theme)</a> </div> <div class="field-item even"> <a href="/blog/a-peek-at-drupal-7-theme-system-changes">A peek at Drupal 7 theme system changes</a> </div> </div> </div> http://pingv.com/blog/floater-theme-to-get-away-from-columns#comments Drupal Drupal 7 Drupal community Drupal theming Floater theme Sun, 25 Jul 2010 22:15:04 +0000 Laura Scott 76 at http://pingv.com