PINGV Creative Blog Feed http://pingv.com/blog/featured en 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> 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> http://pingv.com/blog/floater-theme-to-get-away-from-columns#comments Sun, 25 Jul 2010 22:15:04 +0000 Laura Scott 76 at http://pingv.com What's your brand? Do you have a brand? (Do you want one?) http://pingv.com/blog/whats-your-brand-do-you-have-a-brand-do-you-want-one <p>In <a href="http://www.press.uchicago.edu/presssite/metadata.epl?mode=synopsis&amp;bookkey=3622630"><em>The Rhetoric of Fiction</em>, the late Wayne C. Booth</a> discusses a concept of the "implied author." </p> <blockquote><p>The implied author, according to Booth, is a "second self" from the actual historical person who wrote the work in question, not the flesh-and-blood being but a hypothetical entity that includes "not only the extractable meanings [of the text] but also the moral and emotional content of each bit of action and suffering of all the characters" (73). To rely solely on extratextual sources that will verify an author’s "intention" is at least problematic, if not a "fallacy." The implied author, though, is a construct prompted by the text itself. The implied author, Booth asserts, is responsible for the "norms" and "values" that seem to be expressed in the work but cannot necessarily be attributed to a narrator and should not be attributed to the historical author.</p> <p><cite>From <a href="http://www.english2.mnsu.edu/larsson/agency3.html">"Every Picture Tells A Story: Agency And Narration In Film," Panel: Movies as Paradigmatic Narratives. Modern Language Association Annual Conference, Washington, D.C., December, 2000</a></cite></p></blockquote> <p>In other words, you can't know the "real" author of a book by reading the text. The <em>implied author</em> is the author as perceived by the reader, the audience, based upon perceptions of the text. The implied author is not the same as the actual author. Quite often that's deliberate. But it's also a matter of perceptions, and how imperfect the text can be in communicating intended meaning. All you can do is extrapolate an "implied" author: the person who <em>seems</em> to be who wrote the text. The text is the lens, and who you see as its author is not the same person as the actual author, it's a reflection. A projection.</p> <p>This concept translates to branding quite easily.</p> <h3>Brand Intentions vs. Brand Perceptions</h3> <p>When we see a disaster like the broken underwater oil well in the Gulf of Mexico, consider that to be "the text." Whether you believe BP or Halliburton or the government is responsible, your perspective of those entities is guided — defined, in fact — by their outward appearances to you. Such views may be closely aligned with the true characters of those entities, or you may be way off. You can't know. We can't know. All we can go by is what we see. The actions. The text. –And third-party descriptions (by the media, friends, persons with axes to grind) of the text. The brand ends up being defined by perceptions, not simply the brand-maker's intentions.</p> <p>Flip that around now.</p> <p>How misunderstood does an author feel when her book is interpreted in ways she never intended? Writers will often blame the reader for misunderstanding a text. Samuel Beckett wryly commented, "No pun where none intended." This consummate self-reflexive author who always seemed so aware of the implied author his texts projected would steadfastly refuse to explain his texts, yet seemed not to want to accept it when people took the wrong meaning. </p> <p>But how can there be no pun where none intended? Whether intended or not, a pun is in the ear of the beholder. If there's a pun, and nobody's around to hear it, is there a pun after all?</p> <p>And yet, and yet, Beckett's work was about how author and implied author were rarely, if ever, the same. Take the opening lines of <a href="http://www.amazon.com/Worstward-Ho-Samuel-Beckett/dp/039462064X"><em>Worstward Ho</em></a>:</p> <blockquote><p>On. Say on. Be said on. Somehow on. Till nohow on. Said nohow on.</p> <p>Say for be said. Missaid. From now say for missaid.</p></blockquote> <p>To be said. To be missaid. Your intentions are for naught.</p> <p>Let's take this back to brands. No matter what a company may intend, what people react to is the company they see through an imperfect lens, colored by their biases, attitudes, expectations, prejudices, politics.... What they react to ends up defining the brand. It ends up being the brand.</p> <p>The brand is the implied company.</p> <h3>Personal Brands, Personal Intentions</h3> <p>On BlogHer recently, Maureen Johnson declared in her <a href="http://www.blogher.com/manifesto">Manifesto</a>:</p> <blockquote><p>I am not a brand….</p> <p>I am not saying that it is a bad or dishonest thing to try to sell your work. It is not. What I am saying is that I am tired of the rush to commodify everything, to turn everything into products, including people. I don’t want a brand, because a brand limits me. A brand says I will churn out the same thing over and over. Which I won’t, because I am weird.</p></blockquote> <p>But what Maureen is describing — this churning over and over — is not branding, this is factory work. Branding is not about being a factory. Branding is about being aware that <em>you have an image</em>, and that image may have <em>little or nothing</em> to do with who <em>you</em> really are. And if you have a reality out there where people don't know the real you, just this impression of you from your logo and/or ads and/or website and/or blog and/or tweets and/or news profile, guess what!</p> <p><em>You have a brand.</em> Or at least an <em>implied</em> you that is not your own <em>real</em> you.</p> <p>Maureen's manifesto starts off:</p> <blockquote><p>The Internet is made of people. People matter. This includes you. Stop trying to sell everything about yourself to everyone. Don’t just hammer away and repeat and talk at people -— talk TO people. It’s organic.</p></blockquote> <p>I agree. But that is not a negation of branding.</p> <p> But I will say that even the most seemingly transparent, honest, heart-opening writer ends up projecting an image that is only a facsimile of the actual person doing the writing.</p> <p>Call it a brand.</p> <p>Call it an implied author.</p> <p>Call it an image.</p> <p>A rose by any other name smells just as sweet. So let's cut the baloney.</p> <p>(To be fair, Maureen's post seems to be, at least in part, a rebuttal to a woman who, as she describes her, could play straw-woman in any branding discussion — huckster, pushy, microphone hog.)</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/3173436256_08490d3153_b.jpg" alt="PINGV Creative" title="//www.flickr.com/photos/caveman_92223/3173436256/" class="imagecache-teaser_full" /><span class="image-caption">Brands have a way of happening whether you want them to or not. It's not about selling. It's about perception.<br /> Fake Brands Image by <a href="http://www.flickr.com/photos/caveman_92223/3173436256/">Chuck Coker</a></span></p> <p>Tara Hunt, in a blog post last year, <a href="http://www.horsepigcow.com/2009/12/who-am-i/">takes a slightly different tack</a>:</p> <blockquote><p>We talk about authenticity, but people rarely want to see the negative side of a person. When I’ve been truly honest – angry, sad, scared, belligerent, grumpy, negative, depressed or anxious (and I keep it under control, but I have terrible anxiety) – people get nervous. I lose followers. I get long emails from people asking me to stop being self-indulgent. I get messages from concerned friends saying, “Don’t you worry about damaging your brand?”</p> <p>And that’s it. Do we want authenticity? Or do we want branding? One of the most memorable lines in a movie for me is from <a href="http://www.imdb.com/title/tt0175880/">Magnolia</a>, where Claudia says to Jim:</p> <p>“I’ll tell you everything, and you tell me everything, and maybe we can get through all the piss and shit and lies that kill other people. ”</p> <p>I love that line because I think it’s what we all want to do, but are afraid to do it. We love people who represent the ideal, the perfect, the imperfectly perfect, the happy, the successful, the amazing, positive, go-for-it, wa-hoo in life. And I’m not saying those people don’t exist. They just don’t exist as much as we think they exist because there are so many bloomin personal brands out there that are inspiring the crap out of us that we lose the fact that behind the scenes, they are probably falling apart now and then….</p> <p>I don’t have a personal brand, I have a personality – complete with crazy moments and drunken nights, super highs and heartbreaking lows. And every single one of those moments define who I am. Now. Who are you? A personal brand or a personality?</p></blockquote> <p>Tara's awareness that the image we project, or even the image simply perceived by others, can be at odds with the <em>real</em> us, gets at part of what I'm saying. She rejects the word "brand," but is a "personality" as perceived by others really that much different? Especially when you consider that brands can have personality?</p> <p>Of course we are more than our public persona. That's true for everyone — even companies … even BP.</p> <p>But maybe the issue, then, is not about whether we have a "brand" but rather how authentic is our brand. How much does your "brand" — your public image, your persona, your personality as perceived by others — truly reflect who you really are?</p> <p>And is that even the goal? Do we really want everyone to know about our phobias, our weaknesses, our cravings, our petty jealousies, our financial worries, our medical concerns, our family aggravations? If I know all about the fungus between your toes, do I now know the "real" you? Or does that fungus just distort my image of you? To you, that fungus may be a minor pain in the arse annoyance, but to me, if every time I see you I think about the fungus between your toes, am I now seeing the real you?</p> <p>My point is that what you choose to project ends up influencing how people perceive you. And being more "honest" or "transparent" is not necessarily going to lead to people seeing the real you. Or liking you more. Or even understanding you better.</p> <h3>The Unnamable</h3> <p>When Samuel Beckett said, "No pun where none intended," he was in effect declaring that critical interpretations, or for that matter any reader's views, of his text were secondary to his own intentions. He was, in a way, trying to take charge of his image, his brand — even while he generally shunned publicity. For him, greater transparency in his life did not mean he would enjoy a truer public image. The uncontrollable nature of identity as perceived worked at the center of his writings. And if you'll forgive me one more quotation, Beckett touches on this theme in the opening paragraphs of <a href="http://www.amazon.com/Three-Novels-Molloy-Malone-Unnamable/dp/0802144470/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1278108795&amp;sr=1-1"><em>The Unnamable</em></a>:</p> <blockquote><p>I am not I.</p></blockquote> <p>Or: <em>I am not the "I" you read here.</em></p> <p>Doc Searls writes, in <a href="http://blogs.law.harvard.edu/doc/2010/04/12/brands-are-bull">Brands are Bull</a>, that brands are by definition non-human:</p> <blockquote><p>The man is not only the closest any golfer has ever come to walking robotics, but his whole golf persona has always been remarkably mechanical as well.</p> <p><em>Turn a person into a brand</em> [emphasis mine], and what do you get? Something incomplete at best, and fake at worst. Borrow that human brand to represent your company, and you take some risks. Your branded celebrity might actually be a fine human being. Or they might be a philandering scumbag. Either way, the brand is a paint job. It’s not real except in the commercial dimension, and only in a narrow way even there.</p> <p>The only advertiser that has stuck with Tiger since the bimbo bombs started going off is another landmark brand: <a href="http://www.nike.com/">Nike</a>. The <a href="http://www.thedailybeast.com/blogs-and-stories/2010-04-08/how-nike-exploits-tiger-woods-dead-father/">latest Nike/Tiger ad</a> features the golfer’s sad face, staring at the camera, while the voice of his dead father speaks. “I want to find out what your thinking was,” Earl Woods says.”I want to find out what your feelings are. And did you learn anything.” Well, one thing the rest of us learned was that Tiger was <a href="http://www.nypost.com/p/news/national/mistress_romp_as_father_died_hxVt1ZiFSS7vp14SiUsDMI">with one of his mistresses</a> on the night he got word that his father had died.</p></blockquote> <p>To me, this only emphasizes that you can't always control your brand. Accenture and Nike did not turn Tiger Woods into a brand. Tiger Woods already was a brand. These two corporations simply tried to hitch their brands onto the shining image of Tiger's own brand. That they suffered when Tiger's brand crashed and burned is merely guilt by association.</p> <p>Every professional athlete is a brand — not because they are selling something (even if they are), but because they have public images driven by media, surrounding hype, lockerroom talk, as well as their own actions, interviews, tweets, whatever.</p> <p>And when you pull the scope back from the spotlight and turn it on "regular" folks, the same is true — not on the same level, but still true. We have reputations, grades in school, credit ratings, driving records, things people say about us, perceptions drawn from things we do (almost always taken devoid of a larger context). Don't call it a brand, call it an image, call it a reputation, call it buzz, call it karma — it's expressing the same thing.</p> <p>We are not our image. Our image to others is not necessarily similar to who we really are. And if not, the problem may not be not enough transparency but perhaps the wrong transparency, or too much surrounding noise.</p> <p>Or poor management of getting out your message, whatever it is, in business or in your personal life.</p> <h3>The Bigger Picture</h3> <p>All this is not to say that we should focus on brand at the exclusion of all else. There's no question that, in our culture, there seems to be a real obsession with brands. For example, in politics one could say the mainstream media have been focusing on political brands far too much, when you consider things like the press coverage of the recent national healthcare reform debate in Washington, which <a href="http://pewresearch.org/pubs/1634/media-coverage-health-care-reform-debate-review">a recent Pew study found</a>:</p> <blockquote><p>Fully 41% of health care coverage focused on the tactics and strategy of the debate while various reform proposals filled another 23%. But only 9% of the coverage focused on a core issue -- how our health care system currently functions, what works and what doesn't.</p></blockquote> <p>For which we can all collectively thank the press for focusing on brand battles rather than what the legislation was actually about. (How many of us understand that even now?)</p> <p>No, focusing on brand is not the only thing.</p> <p>But it's something to be aware of. Even if you don't want one.</p> http://pingv.com/blog/whats-your-brand-do-you-have-a-brand-do-you-want-one#comments blogging branding business Doc Searls Maureen Johnson Samuel Beckett Tara Hunt the Implied Author The Rhetoric of Fiction Wayne C. Booth Tue, 06 Jul 2010 13:01:27 +0000 Laura Scott 50 at http://pingv.com Drupal Disruptive Open Source: Part I — From Brobdingnag to Lilliput http://pingv.com/blog/drupal-disruptive-open-source-part-i-from-brobdingnag-to-lilliput <h3>Is Drupal a Disruptive Technology?</h3> <p>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">keynote at the 2010 San Francisco Drupalcon</a>, asked the rhetorical question: 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" /><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>But killing the market leader is not easy. The leader will defend its leadership position in the market. That strategy is called, simply, "defense."</p> <p>Almost always leaders easily beat-back challengers because the leaders have the motivation and the resources — know-how, talent, organizations, capital reserves, and client relationships — which entrants must more or less replicate. The entrant must overcome what business schools call the <em>barriers to entry.</em></p> <p>Yet sometimes leaders are toppled. Just last year, the American auto industry collapsed. GM and Chrysler faced bankruptcy. Were American automobile manufactures leaders any longer?</p> <h3>Leaders</h3> <p>Who can rightfully be called a leader?</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/MarketingWarefare003_2.jpg" alt="Cover art" title="The battle of hearts and minds" class="imagecache-teaser_full" /><span class="image-caption">Ries &amp; Trout, <em> Marketing Warfare</em></span></p> <p>In their classic book, <a href="http://books.google.com/books?id=3h4xi-38i58C&amp;printsec=frontcover&amp;dq=%22Marketing+warfare%22+trout&amp;source=bl&amp;ots=HF7nE-3-fZ&amp;sig=Dl6BguWAjcrCorVs6RT959cfmZw&amp;hl=en&amp;ei=AsYjTOfwIpntnQf7mMEm&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=2&amp;ved=0CB0Q6AEwAQ#v=onepage&amp;q&amp;f=false" title="Google book">Marketing Warfare</a>, (updated and reprinted in 2006, ISBN 0-07-146082-9) co-authors <a href="http://www.quickmba.com/marketing/ries-trout/marketing-warfare/" title="Book summary"> Al Ries and Jack Trout </a> observe,</p> <blockquote><p>We've never met a company that didn't consider itself a leader. But most companies base their leadership positions more on creative definitions than on market realities. Your company may be the leader "east of the Mississippi on Monday morning," but the customer doesn't care.</p> <p>Companies don't create leaders—customers do.</p></blockquote> <p>Market leadership is not linked just to dollar volume, either.</p> <blockquote><p> Size, of course, is relative. The smallest automobile company (American Motors) is considerably larger than the largest shaving company (Gillette). Yet American Motors should fight a guerrilla war and Gillette should fight a defensive war.</p> <p>What's more important than your own size is the size of your competition. The key to marketing warfare is to tailor your tactics to your competition, not to your own company …</p> <p>… history teaches the power of a guerrilla movement. In business, too, a guerrilla has a reservoir of tactical advantages that allows the small company to flourish in the land of the giants. </p></blockquote> <p>So, there is hope for players, other than giants. </p> <h3>The Lay of the Land in Brobdingnag</h3> <p>Actually, the Ries-Trout model lays out four segments, each one relative to the other players in a specified market:</p> <ol> <li>Defense — leader</li> <li>Offense — challenger</li> <li>Flanking — dark horse</li> <li>Guerrilla — niche player</li> </ol> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/guerrilla.jpg" alt="Che" title="The guerrilla bugs out when there is a larger force" class="imagecache-teaser_full" /><span class="image-caption">The guerrilla must not mimic the leader. Image: <a href="http://thecia.com.au/reviews/c/images/che-part-2-guerrilla-8.jpg">The Cinematic Intelligence Agency</a>.</span></p> <p>Christensen's disruptor, at least in the early stages, does not fit into the role of a leader (defense) nor challenger (offense). Rather, the disruptor better fits the definition of either a "guerrilla" or a "flanker." The advice Ries-Trout give each of these categories, respectively, is:</p> <blockquote><p>Guerrilla:</p> <ol> <li>Find a segment of the market small enough to defend.</li> <li>No matter how successful you become, never act like a leader.</li> <li>Be prepared to bugout at a moment's notice.</li> </ol> </blockquote> <blockquote><p>Flanking:</p> <ol> <li>A good flanking move must be made into an uncontested area.</li> <li>Tactical surprise ought to be an important element of the plan.</li> <li>The pursuit is as critical as the attack itself.</li> </ol> </blockquote> <p>Strictly speaking, the Ries-Trout model is marketing focused — positioning, if you will — while the Christensen model is technological innovation focused. For example, the Ries-Trout analysis aptly applies to brand battles among beers, among colas, and among hamburgers; and while lite beer might be a "technological innovation" of sorts in the "beer wars," it is not epic in the way that transistors displaced vacuum tubes in the electronics industry. On the other hand, when it comes to handheld devices, the battle for the hearts and minds of consumers can be addressed by both models — brand and technology.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/paratroopers.jpg" alt="Paratrropers" title="Plane dropping airborne soldiers" class="imagecache-teaser_full" /><span class="image-caption">Flanking moves must be made into uncontested area. Image: <a href="http://outontheporch.org/page/169/?archives-list&amp;archives-type=cats">Out on the Porch</a></span></p> <p>With this in mind, let us look at Christensen's concept of a disruptive technology.</p> <blockquote><p>A disruptive technology provides a product or solution that is <em>not quite good enough</em>; it is a technology that enters the market at the low end where expectations are modest, or even non-existent — often competing against non-consumption. </p></blockquote> <p>An entire class of low-end electronic products came from Japan in the 1950s and 1960s. In 1950 the label, <em>Made in Japan,</em> was synonymous with poor quality. Thirty years later it meant cutting-edge — top quality. The crummy transistor radio that teens bought in the 1950s gave way to state-of-the-art transistor-based electronics in many fields — televisions, audio equipment, cameras, copiers, and cars.</p> <p>Christensen points out that in the 1950s, transistor-based technology was on the "radar" of the big American electronics manufacturers. The leaders used vacuum tubes to run the electronic systems. The leaders knew transistors would eventually replace the vacuum tubes, but at the time the transistors were not powerful enough to run the large console televisions and console home entertainment systems.</p> <p>In 1975 the head of General Electric research addressed Professor Richard Rosenbloom's "Management of Technological Innovation" class at the Harvard Business School. He was asked by students why GE had not developed computers. Computers would seem a "natural" for GE. In part the reason was that IBM accounted 25% of GE's vacuum tube business. GE wanted to profit from that business and did not wish to alienate IBM.</p> <p>Nevertheless, the leaders in electronics, according to Christensen, invested the equivalent of at least $3 billion of today's dollars in transistor technology, hoping to make transistors good enough to run the console-sized systems.</p> <p>The Japanese transistor radios were not created to compete with the consoles. They found a niche among teens who could listen to their kind of music on something they could afford. Transistor radio performance was not as good as the expensive upmarket consoles, but the consoles were largely controlled by grownups who usually would police what got played.</p> <p>For the teens, essentially it was the transistor radio or nothing. The alternative was non-consumption.</p> <p>The leaders in the market did make some transistor radios, but they largely left the market to Sony, and others, who targeted the low-end market, and in this way the entrants established a beachhead, from which they worked their way upmarket. </p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/disruptiveinnovation.png" alt="PINGV Creative" title="Clayton Christensen&#039;s concept" class="imagecache-teaser_full" /><span class="image-caption">When the "not quite good enough" technology displaces the leader. Image: <a href="http://www.ctitek.com/">CTI Tek</a></span></p> <h3>Disruptive Technology is not a technology problem</h3> <p>Professor Christensen recounts that shortly after the Innovator's Dilemma was published, he gave a top level presentation to Intel management in which he introduced the concept of disruptive technology. It was Andy Grove who pondered briefly, then said that it was not the technology that was disruptive, but the marketing that was disruptive.</p> <p>In another lecture, Professor Christensen observed, in the case of the vacuum tube manufacturers, that the electronics market leaders had framed transistors as a "technology problem" — <em>i.e.</em> as a technology that would replace the vacuum tube, outright.</p> <p>As described above, the Japanese transistor product was not framed as a technology problem. Instead, it was sold for what it was — <em>i.e.</em> hence a marketing strategy.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/JobsIsland.jpg" alt="Various sources" title="Gilligan meets Jobs" class="imagecache-teaser_full" /><span class="image-caption">Not-quite-good-enough technologies evolve. Images: <a href="http://open.salon.com/files/radio1252981380.jpg">Salon.com</a>, <a href="http://insideview.ie/photos/covers/ipodthereforeiam.jpg">Inside View from Ireland</a> </span></p> <p>In another example, in 2007-2008, Professor Christensen describes a very low-end, low-cost, solar technology developed at Hewlett-Packard (HP) that could barely run a light bulb. The idea for using it for a product first found acceptance in not-yet industrialized countries in locations that have no electricity or appliance that need electric power. Again, competing against non-consumption.</p> <p>In 2010, the HP technology is being developed to provide solar power to wrist watches, and likely a host of other applications. The technology developed for the non-industrialized world finds a host of uses worldwide.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/Solar.jpg" alt="CNN News article" title="From third-world to your wrist" class="imagecache-teaser_full" /><span class="image-caption">HP's thin-film solar technology is being used in small, undemanding applications, competing against non-consumption. Image: <a href="www.cnn.com/2010/TECH/05/19/plastic.military.watch.hp/index.html">CNN</a>.</span></p> <p>Christensen gives example after example of technologies that mirror that model — technologies that entered down-market in undemanding applications — again, competing against non-consumption — and he traces how these entrants "killed" the leader(s) and ended up with the lion's share of the market. Inspired by a <a href="http://mfinley.com/experts/christensen/Christensen_Precis.htm" title="Disruptive Technologies">report by Michael Finley</a>, here are a few other examples:</p> <blockquote><p><strong>e-commerce. </strong>Amazon.com redefined books-selling and beyond.</p> <p><strong>Automotives.</strong> When Datsun entered the US market Detroit laughed. Today Lexus gets top dollar.</p> <p><strong>Modular computers.</strong> Dell started in a dorm room. Computers used to be large integrated systems. Today computer systems are assembled from interchangeable parts.</p> <p><strong>Handhelds.</strong> The Newton was an underpowered flop. Today iPod, iPhone, and iPad rule!</p> <p><strong>Internet telephony.</strong> Not good enough before, now VOIP providers such as Skype, are mainstream.</p> <p><strong>Twitter.</strong> Competing against non-consumption, Twitter has changed the shape of how we communicate. So has YouTube, for that matter.</p></blockquote> <h3>Drupal</h3> <p>So to Dries' question: Does Open Source, especially Drupal, represent a disruptive technology? Looking to the bottom of the "food chain," is Drupal at least a guerrilla?</p> <p>Recall, again, the hallmarks of the guerrilla:</p> <blockquote><ol> <li>Find a segment of the market small enough to defend.</li> <li>No matter how successful you become, never act like a leader.</li> <li>Be prepared to bugout at a moment's notice.</li> </ol> </blockquote> <h4>Find a segment of the market small enough to defend.</h4> <p>Drupal became popular in a small market that was largely invisible. In 2006, when my firm at the time approached Rackspace to provide Drupal hosting for one of our enterprise-level clients, Rackspace said that we were the first firm to approach them for Drupal hosting. A year later, when that same client went looking for venture capital, VC-financing, the folks on Sand Hill Road told the client that they should switch out of Drupal because Drupal was "limited," "brittle," "does not scale well," "rinky-dink," "too new," "too small" "unproven," and "open source."</p> <p>Ironical though it might be, this dismissal by the VCs meant that the technology was coming in under the radar, so to speak. Like the Borg in Star Trek who ignore "irrelevant" intruders on their cube, Drupal was too small to be assimilated.</p> <p>Thus, if Drupal was a guerrilla, it met the first criterion.</p> <h4>No matter how successful you become, never act like a leader.</h4> <p>By this, Ries-Trout, seems to mean that the guerrilla should not follow the business model of the leader, nor is it advisable to structure the organization in the same way. Be a guerrilla, not a gorilla.</p> <blockquote><p> We would have won the war in Vietnam if we could have persuaded the Viet Cong to send their officers to West Point to learn how to fight like we do. </p> <p>Successful guerrillas operate with a different organization and a different timetable. </p></blockquote> <h4>Be prepared to bugout at a moment's notice.</h4> <p>However, it does not say you <em>have</em> to bugout.</p> <h3>Disruptor as flanker </h3> <p>I suggest Drupal has started to move from a guerrilla strategy to the flanking strategy.</p> <p>Christensen's classic case of the steel minimills is the story of the flanking strategy where the guerrilla took the battle to the next step.</p> <p><strong>Briefly:</strong> In 1975 minimills made cheap, low profit, low-spec steel, rebar — steel re-enforcing which is buried in concrete. No one expected that the minimills would ever be able to manufacture anything but rebar. The giant integrated mills produced high profit, high quality steel, whose properties were imparted in the rolling process. Since the minimills did not have a rolling process, they were shut out of the profitable sheet steel at the upper end of the market. The integrated mills were not worried.</p> <p>But then, over a period of about 15 years, the minimills continued to make profit-driven technological leaps and they moved from making rebar to making bars and rods, to making structural steel, and finally to making sheet steel. At every stage, the integrated steel manufacturers abandoned the less profitable lines to the minimills and focused on the higher tech, higher margin business. When in the last stage, the minimills figured out how to make sheet steel, the barbarians were indeed at the gate, because the minimill technology was more cost efficient. There was nowhere for the integrated mills to go. The minimills had moved from being flankers to being challengers, to being leaders. The integrated mills were beaten at their own strength. Christensen tells us that "Bethlehem [Steel] closed its last structural beam plant in 1995, leaving the field to the minimills." p. 105.</p> <p>Most of Christensen's disruptors more or less fit the Ries-Trout model of the flanker.</p> <p>In Christensen's case studies, he deals largely with organized firms and corporations that pursue coordinated marketing strategies. In the minimill case the big minimill companies Nucor and Chaparral pursued concerted strategies to go after high profit market niches.</p> <p>Nevertheless, Christensen points out that the integrated steel makers became very efficient.</p> <blockquote><p> USX, for example, improved the efficiency of its steel making operations from more than nine labor-hours per ton of steel produced in 1980 to just under three hours per ton in 1991. It accomplished this by ferociously attacking the size of its workforce, paring it from more than 93,000 in 1980 to fewer than 23,000 in 1991, and by investing more than $2 billion in modernizing its plant and equipment.</p></blockquote> <p>One logical strategy for the integrated mills was to abandon low-margin segments such as rebar. Professor Christensen tells us: </p> <blockquote><p> [the rebar] market was the least attractive of those served by established steel makers. And not only were margins low, but customers were the least loyal: They would switch suppliers at will, dealing with whoever offered the lowest price. The integrated steel makers were almost relieved to be rid of the rebar business....</p> <p>...The minimills, however, saw the rebar market quite differently. They had very different cost structures than those of the integrated mills: little depreciation and no research and development costs, low sales expenses (mostly telephone bills), and minimal general managerial overhead. They could sell by telephone virtually all the steel they could make — and sell it profitably. </p></blockquote> <h4>Has Drupal moved from being a guerrilla to being a flanker?</h4> <p>Guerrilla or flanker, the Drupal shops share a lot of similarities with the minimills as described above:</p> <ol> <li>little depreciation.</li> <li>no research and development costs.</li> <li>low sales expenses (mostly telephone bills).</li> <li>and minimal general managerial overhead.</li> </ol> <p>With Drupal accounting for one percent of websites, and the high profile sites being too numerous to mention, Drupal can rightly be classified as a flanking technology, possibly more.</p> <p class="image-resize-300 right"><img src="http://pingv.com/f/imagecache/resize-300/blogimgs/LinuxUprising_0.jpg" alt="Business Week Cover" title="Open source disruptor Linux takes on leader, Microsoft" class="imagecache-resize-300" /><span class="image-caption">Open source disruptor Linux takes on leader, Microsoft. Image: <a href="http://www.businessweek.com//magazine/content/03_09/art03_09/09covdc.jpg">Business Week</a>.</span></p> <p>CMS Wire in cooperation with Water &amp; Stone published the "<a href="http://www.cmswire.com/downloads/cms-market-share/">2009 Open Source CMS Market Share</a>" report, which runs just under 100 pages. The report says that Open Source CMS is dominated by Joomla!, WordPress, and Drupal.</p> <p>Dries in <a href="http://sf2010.drupal.org/conference/sessions/state-drupal">his DCSF keynote</a> reported that 10% of all websites are WordPress to Drupal's 1%.</p> <p>Yet, is this the ultimate market? Are these top three players just top players in the "rebar" market?</p> <h3>ECM, Enterprise Content Management</h3> <p>At the beginning of this essay, Ries and Trout were quoted, "we've never met a company that didn't consider itself a leader."</p> <p>Open source is not the driving factor in the enterprise-level marketplace, known as ECM, Enterprise Content Management. </p> <p>This market, with $4 Billion of annual revenue, is 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> <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" /><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>A recent press release from Open Texts describes the firm as earning just under $180M annually, with a customer-base in the tens of thousands, installations approaching 50,000, and millions of seats. Their staff is over 2,000 strong serving over a hundred countries.</p> <h3>Coming Full Circle Until Next Time</h3> <p>To answer Dries' original question, <em>is Drupal a disruptor?</em> gets down to who it is that is being disrupted. If Drupal sees itself as the market leader against other open source CMS, then Drupal is not. Yet if the ECM players are in the lead, Drupal would be a disruptor.</p> <p>Forrester Research calls the ECMs "integrated players" Their clients are large corporations with heavy database and process management needs — clients who want the "whole solution," or "end-to-end."</p> <p>And yet, as the worldwide web continues to evolve, data handling and storage becomes a less erudite field. When the web itself becomes the "whole solution," the competitive advantage that the ECMs currently have will be less of an advantage.</p> <p>We will look in detail at these players and modularity in the upcoming essays.</p> http://pingv.com/blog/drupal-disruptive-open-source-part-i-from-brobdingnag-to-lilliput#comments Al Ries Bethlehem Steel business Chaparral Clayton Christensen disruptive technology Documentum Dries Buytaert Drupal Enterprise Content Management FileNet GE Harvard Business School Hewlett-Packard IBM Jack Trout Management of Technological Innovation Marketing Warfare minimills Nucor open source Open Text Richard Rosenbloom solar energy Sony The Innovator's Dilemma transistor radios USX Vignette Mon, 05 Jul 2010 03:28:18 +0000 Katherine Lawrence 70 at http://pingv.com KIT: Best Practices for Making Drupal Features http://pingv.com/blog/kit-best-practices-for-making-drupal-features <p>So you're building a Drupal Feature! Woohoo! Okay, so…. What to include? What to leave out? How to structure the thing so it doesn't conflict with other Features? How to avoid known issues? Where to start?</p> <p>When, in theory at least, you can make an entire site into one big Feature, these questions become extremely important.</p> <p>If you're using Features simply to help facilitate your own site-building workflows, this <em>may</em> be something you can pretty much ignore. When dealing with Features you've made for yourself, you may remember your thinking, you may follow your own logic, you may be using Features as a blobby deployment system for all kinds of stuff glommed together. Whatever works. It's all good.</p> <p>But that approach won't fly with publicly shared Features. In fact, it won't work too well for teams either, probably. Without best practices, clearly laid out and understood by all, Features can trend towards amorphous nightmares. Features might conflict with each other, undoing each other. Improperly utilized, Features can easily become a nightmare that slows you down, undoes your hard work, and leaves you ready to scream and throw your computer out the window. </p> <h3>Enter KIT</h3> <p><a href="http://drupal.org/project/kit">The KIT Specification</a> clearly lays out requirements for building clean, discrete Features.</p> <blockquote><p>This document provides recommendations and requirements for Drupal features to ensure the interoperability of features between different distributions and prevent conflicts between features themselves and between a compliant feature and a distribution….</p> <p><cite>–<a href="http://drupalcode.org/viewvc/drupal/contributions/modules/kit/kitf.txt?view=co">KIT Feature Specification 1.0-draft</a></cite></p></blockquote> <p>The specification goes through terminology, namespaces, inclusion of user roles and permissions (and what not to include), working with variables, paths and menu items, blocks and dependencies.</p> <p>Not all Features have to be KIT compliant, of course. But having a good, clear specification for self-contained Features that mostly likely will not break other things in your site is a great thing.</p> <p>If this topic interests you, be sure to visit the <a href="http://drupal.org/project/issues/kit?status=All&amp;categories=All">KIT issue queue</a>, where there are several discussions on clarifying, adjusting and improving the KIT spec. Good stuff is happening.</p> http://pingv.com/blog/kit-best-practices-for-making-drupal-features#comments best practices Drupal Features KIT Feature Specification Mon, 07 Jun 2010 15:12:25 +0000 Laura Scott 67 at http://pingv.com Announcing our Feature server: downloads.pingv.com http://pingv.com/blog/announcing-our-feature-server-downloads-pingv-com <p>Over the weekend we launched a Feature server at <a href="http://downloads.pingv.com" title="http://downloads.pingv.com">http://downloads.pingv.com</a>.</p> <p>Currently it has but one simple Feature: an initial release of "<a href="http://downloads.pingv.com/node/5">Photo Essay</a>," for posting images inline in the text of an essay. We hope some people may find it useful. Or informative. Or inspiring to go make their own Features.</p> <p>We see a bright future for <a href="http://drupal.org/project/features">Features</a>. As strategists and designers, we embrace systems and practices that increase the speed and efficiency of development. Features are a great way for people to be able to mix and match components to build sites to suit their needs, without having to install and configure everything by hand, and without needing to embrace a whole website strategy inherent in a full-blown Distribution.</p> <p>This is a new area of growth and rapid change in the Drupal community. It's very exciting. </p> <p>So far it seems like most of the Features that people have released are designed to serve use cases more on the advanced, complicated side — with a goodly proportion of those targeted specifically for installation in <a href="http://openatrium.com">Open Atrium</a>, which in many ways has been the proof of concept for Features in the first place. </p> <p>We feel there's room for Features solving more basic and common use cases, to encourage more site builders to try them out and (hopefully) get hooked on the concept. Features may seem to some like stuff for experts to dabble with, but Features are for everyone. Features can make things easier.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/druplicon-features-2.png" alt="Druplicon Features" title="Different Features from different sources can comprise a single site&#039;s functionality." class="imagecache-teaser_full" /><span class="image-caption">Features are fully formed, preconfigured functionality that can be "plugged in" to Drupal.</span></p> <p>We had wanted to do this server months ago — soon after starting up the new company — but the best laid plans of mice and cats and all that…. Anyway, when we finally got around to it, the handy <a href="http://code.developmentseed.org/featureserver/node/163">Feature Server profile</a> shared by Development Seed made the setup easy. We also ended up building the site on <a href="http://getpantheon.com">Pantheon</a> using a sweet <a href="https://www.linode.com/stackscripts/view/?StackScriptID=353">Linode StackScript written by Justin Ellison</a>, which worked really well. Yes, Pantheon is total overkill for a small Features server, but it was there, so what the heck! When we have more than one Feature, maybe it will make sense to let loose the SOLR search.</p> <h3>Other Feature Servers</h3> <p>There are a few Feature servers out there, but so far there doesn't appear to be any comprehensive list anywhere, and as far as I know no p2p way for them to discover each other. </p> <p>Here are some directories I've found:</p> <dl> <dt><a href="http://groups.drupal.org/node/50278">Directory of Public Features Servers</a></dt> <dd>A wiki page with links to servers and projects, posted on Groups.Drupal.org in the Packaging &amp; Distributions group.</dd> <dt><a href="https://community.openatrium.com/documentation-en/node/441">Community features</a></dt> <dd>A wiki in the Open Atrium Community site, with links to many features for Open Atrium.</dd> <dt><a href="http://community.featureservers.org/feeds">community.featureservers.org</a></dt> <dd>A community Features server and directory hosted by <a href="http://www.mig5.net">Miguel "mig5" Jacq</a>.</dd> </dl> <p><strong>Are there other resources?</strong> <em>Please</em> share them in comments and I'll update this post.</p> http://pingv.com/blog/announcing-our-feature-server-downloads-pingv-com#comments Drupal Feature server Features Sun, 06 Jun 2010 22:49:39 +0000 Laura Scott 69 at http://pingv.com The State of Drupal: Building the Future http://pingv.com/blog/the-state-of-drupal-building-the-future <h3>Half dozen of the other</h3> <p>Has it been six years already? I'm astounded. Drupal in 2004 was really really <em>really</em> different. It's been quite a ride. And it's getting better and more fun and more interesting with every passing moment. And that's because of the stellar contributions of the dozens of core developers on Drupal 7 (and 6 and 5 and 4.7 and 4.6 and 4.5), the leadership of people and companies in the Drupal community, and all the people who contribute back — whether it's out of the notion of "giving back" or out of the self-interest of inviting the rest of the community to help them on their project.</p> <p>Always kind of an open secret living in the obscurity of web geekdom, Drupal has had some heady mainstream buzz these past few months. As adoption of Drupal continues to increase, and open source gains "acceptance" [read: understanding] in corporate, educational and governmental realms, this trend has some legs, I think. Expect the buzz to bump up louder a notch when Drupal 7 comes out in the next few weeks (or so). Back in 2006, <a href="http://buytaert.net/drupal-site-statistics" title="Check out the charts and graphs!">Dries Buytaert noted that the Drupal community doubles with every major release</a>. Will the community double again this year? I guess we'll find out soon enough.</p> <p>But there are a few really good reasons that it will. Here are a few of them.</p> <h3>Not a conventional convention (or maybe more conventional)?</h3> <p><a href="http://sf2010.drupal.org" title="DrupalCon San Francisco 2010">DrupalCon this spring</a>, the biggest Drupal event ever (so far), simply rocked. 3000 attendees, a Tim O'Reilly keynote, White House-generated buzz, trainings, code sprints....</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/4540438530_23526b5b54_b.jpg" alt="Photo of Dries Buytaert giving keynote at DrupalCon San Francisco" title="Photo by muir.ceardach flickr.com/photos/ceardach/4540438530/" class="imagecache-teaser_full" /><span class="image-caption">The State of Drupal keynote that Dries Buytaert gives at every DrupalCon this time focused on Drupal's role in CMS market disruptions ... and RDFa. Where is the web going? Will Drupal lead the way?</span></p> <p>DrupalCons have changed quite a bit since my first "major" Drupal event: the 300-person OSCMS gathering back in 2007. Things have gotten pretty sharp, corporate and professional in the Drupal conference world. For some, "corporate" and "professional" are dirty words. But I feel that this professionalism in the Drupal ranks has helped Drupal disrupt some dominant players in the enterprise web market.</p> <p>Without a doubt, Drupal is changing the web world. And it's happening ... openly.</p> <h3>Profile Tracings</h3> <p>From the kind of swiss-army-knife-like hosted Drupal services like Buzzr and Drupal Gardens to the extremely specialized distributions like Open Publish and Managing News, Drupal is being packaged in new ways, offering new affordances for target markets.</p> <p>The real power, though, is in Installation Profiles, which are like coded, self-cooking recipes for fully realized Drupal sites. </p> <p>Combined with <a href="http://drupal.org/project/drush_make">Drush Make</a>, which can go and get various modules, themes and libraries from a variety of sources (not just Drupal.org), Drupal Installation Profiles can empower site builders to create complex, configured sites in minutes. The challenge is not in using Profiles for site building: it's in creating the Profiles in the first place. <a href="http://drupal.org/node/67921">It takes hand coding</a>. There have been some "profile builder" projects spun up <a href="http://drupal.org/project/install_profile_api">here</a> and <a href="http://drupal.org/project/profile_generator">there, but none seems to have traction today.</a></p> <p>Which is why distributions, which already contain all the modules needed, can hold such appeal. (Of course, many distributions are installed and configured via an Installation Profile.)</p> <p>When I first got into Drupal in 2004, CivicSpace was a popular Drupal distribution designed primarily for non-profit communities. While it rocked if it already did what you wanted, I ultimately grew tired of the large integrated nature of maintaining a distributed version of Drupal plus modules. Inevitably the distribution lagged behind the various module updates and even security releases from the Drupal community, leaving me with the question, "Do I go ahead and update the modules myself? Should I wait for the next full release of the distribution?" As a designer and site builder, I ended up moving away from dabbling in CivicSpace, preferring to work with Drupal a la carte. It wasn't because I disliked CivicSpace; rather I preferred the flexibility of solving my own use cases through my own module selections. But the experience left me with this caveat: a distribution is only as good as its maintained state. It can be awfully difficult to keep up with the Drupal community. So I always recommend caution and consideration before adopting a distribution for a site. [See <a href="http://buytaert.net/drupal-distributions">Dries' thoughts on this from 2006</a>.]</p> <p>Nevertheless <a href="http://groups.drupal.org/distributions">the power of Profiles is real</a>. And <a href="http://drupal.org/project/installation+profiles">the number of Installation Profiles is growing</a>. And <a href="http://groups.drupal.org/node/63653#comment-206028">Drupal.org can now build Installation Profiles into distributions automatically</a>. Despite having been around since Drupal 5, this is a new frontier for Drupal. Expect this to go places.</p> <p>And go there openly.</p> <h3>Features, Spaces … Chaos in a Kit</h3> <p>All the amazing site administration power you have in Drupal means that a lot of what makes your Drupal-powered site do what it does is not written in code but stored in the database. And that means it can be very hard to deploy a set of site functionality from one server to another.</p> <p><a href="http://drupal.org/project/features">Features</a> changes all of that by providing a way to write configuration settings in various Drupal modules into one custom-generated "feature" module that can be distributed as code.</p> <blockquote><p>A feature is a Drupal module that provides a collection of Drupal entities which taken together satisfy a certain use case. A feature module differs from a standard Drupal module in several ways:</p> <p>- A feature is built to target one or more use cases - concrete, task-specific functionality - not address a general problem space.<br /> - The bulk of a feature's work is to provide exported configuration, either in the form of exportables or scripted configuration of components.<br /> - A feature provides no API of its own. Any custom code and hooks it may implement are targeted at addressing user stories.</p> <p><cite>—<a href="http://drupal.org/project/kit">KIT Feature Specification 1.0</a></cite></p></blockquote> <p>What does this mean? It means, ultimately, the ability to install new features feature by feature, rather than having to install and configure several modules for each feature you want.</p> <p>The advent of Features has brought about a nascent scattered network of "features servers" hosted here and there. What's needed is some kind of peer-to-peer way to make these findable. Meanwhile there are manually compiled attempts <a href="http://groups.drupal.org/node/50278" title="on Groups.Drupal.org">here</a> and <a href="http://community.featureservers.org/feeds" title="a community site hosted by mig5">there</a>.</p> <p>It's a new way of sharing in the Drupal community. So expect this, too, to go places. And go there openly.</p> <h3>Build in a Drush</h3> <p>What can I say? <a href="http://drupal.org/project/drush">Drush</a> is for everyone. This command line tool (don't look way, you designers) saves a ton of time in basic site-building chore of downloading and installing modules. But really that's just the start. Drush (<strong>Dru</strong>pal <strong>sh</strong>ell) affords new power in streamlining the Drupal development process, from helping to make (as in <a href="http://drupal.org/project/drush_make">Drush Make</a> … okay, sorry) those Features and Installation Profiles to updating modules and even deploying them on remote servers.</p> <p>If you can type, you can save time.</p> <p>(<a href="/blog/video-installing-drush-on-mac-os-x">My recent post</a> (with <a href="http://www.youtube.com/watch?v=eHWTOeOSgEA" title="Install Drush on Mac OS X in three easy steps">video</a>!) walks through the easy steps to install Drush on Mac.)</p> <p>Of course the code is open sourced. (Thank you, <a href="http://www.tejasa.com/">Moshe Weitzman</a>, <a href="http://greenknowe.org/">Greg Anderson</a>, <a href="http://drupal.org/user/19668">Owen Barton</a>, and Adrian Rossouw [who is truly in fact <a href="http://drupal.org/user/1337" title="If you don&#039;t get the reference, look it up on Wikipedia">1337</a>]!)</p> <h3>Drops in Aegir's Sea</h3> <p>As someone who finds Drupal deployment chores something of a bore, <a href="http://groups.drupal.org/aegir/overview">Aegir</a> is the bee's knees.</p> <p>Point. Click. <em>Voila!</em> A new site is deployed! This isn't site building — it's site <em>provisioning</em>. And it's just about as easy as creating a node on a Drupal site. In fact, that's pretty much what you're doing, in a way, because Aegir itself is built in Drupal.</p> <p>So when you have your Installation Profiles ready (or found the ones you want), with Drush and Drush Make at hand, Aegir provides the GUI for managing those deployments.</p> <p>Of course the code is open sourced. (Thank you, <a href="http://www.mig5.net/">Miguel Jacq</a>, <a href="http://anarcat.koumbit.org/">Antoine Beaupré</a>, <a href="http://drupal.org/user/41517">Lior Kesos</a> and the 1337 Adrian (again)!)</p> <h3>As Fast as Mercury</h3> <p>Now I <em>am</em> going to talk about some Distributions.</p> <p>The whole <a href="http://www.getpantheon.com/">Pantheon Mercury</a> stack is pretty impressive. I'm not quite sure which is what between Pantheon and Mercury, so I just call it Pantheon Mercury … or simply Pantheon for short.</p> <p>What it <em>is</em> is what counts.</p> <ul> <li><a href="http://pressflow.org/">Pressflow</a>, the distribution of Drupal with some nice code optimizations to improve performance across the board.</li> <li><a href="http://memcached.org/">Memcached</a>, the tried and true caching system to reduce strain on the database.</li> <li><a href="http://varnish-cache.org/">Varnish</a>, the kick-ass http accelerator.</li> <li><a href="http://lucene.apache.org/solr/">Solr</a>, the awesome search engine, powered by the awesome Apache Lucene project, that gives us fuzzy search, faceted search, and generally just <em>smarter</em> search than what Drupal offers up by default.</li> </ul> <p>Taking these all together: Can you say screaming performance? We've gone with Pantheon on just two smallish deployments so far, just to try it out.</p> <p>And it. </p> <p>Is. </p> <p><em>Fast!</em></p> <p>And you get SOLR search on top of all that. We love it so much, we're implementing it on two more sites, and Pressflow-sans-Pantheon for a third that is in a more rigid hosting environment.</p> <p>Of course the code is open sourced. (Thank you, <a href="http://fourkitchens.com">Four Kitchens</a> (for Pressflow) and <a href="http://chapterthree.com">ChapterThree</a> (for Pantheon)!)</p> <p>Stay-in-the-community folks should know that Pressflow involves no database schema changes, so you're not really going down a forked path by opting for this Distribution. And the rest of Pantheon is just gravy. You can always take your site later and migrate it back to stock Drupal with no pain. —That is, if you wanted to.</p> <p>But why <em>would</em> you?</p> <h3>Working in the Open Atrium</h3> <p>I've been a huge fan of <a href="http://openatrium.com" title="It&#039;s a free download">Open Atrium</a> since it came out last year. Now in a Beta-6 release, Open Atrium is rapidly becoming a richly featured project that can offer a serious alternative to <a href="http://basecamphq.com/">Basecamp</a>. We use it here for our client support desk, as well as basic ticket tracker and communications center. </p> <p>Infrastructure is always a potential resource hog and time suck for a web company. The last thing we want to do is have to build and maintain our own homegrown Basecamp. And Basecamp is yet another paid service that, in the end, doesn't quite have the flexibility and power Open Atrium offers. Recently, <a href="http://twitter.com/technosophos/statuses/14718749242" title="read his tweet">Matt Butcher tweeted</a> a link to <a href="http://github.com/technosophos/bc2oa" title="the GitHub repository">his QueryPath script on GitHub</a> that he used to migrate 3 years of Basecamp data into Open Atrium. It is possible to move on from old ways.</p> <p>Of course the Open Atrium code is open sourced. (Thank you, <a href="http://developmentseed.org">Development Seed</a>!)</p> <p>Just last month the Development Seed team led an effort to provide <a href="https://community.openatrium.com/documentation-en/">some truly outstanding documentation</a> on how to use, manage and customize Open Atrium.</p> <h3>Making Drupal Classes</h3> <p>So many of us love Drupal so much, is it time to objectify Drupal? By "objectifying Drupal" I don't mean placing Drupal on some sort of pedestal for self-gratification activities (though I suppose in a way we do that, too), but rather taking the organically evolved Drupal code from its almost biological interconnectedness of everything to everything towards an object-oriented model. </p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/Drupal-mud-by-crell.png" alt="Drupal mud" title="Graphic courtesy of Larry Garfield." class="imagecache-teaser_full" /><span class="image-caption">"Drupal mud." Each major part of Drupal core overlaps several other parts. Every change in one component cascades throughout.</span></p> <p>Sometimes Drupal gets a little dirty to get things done. And we love it for getting things done. But Drupal can mature now, and perhaps benefit from a focused, high-level, directed approach towards refactoring to take advantage of the great benefits afforded by PHP 5.</p> <p><a href="http://drupal.org/user/26398">Larry "Crell" Garfield</a> described Drupal's current code as "mud" in <a href="http://sf2010.drupal.org/conference/sessions/objectifying-php">his DrupalCon SF presentation presenting a vision of Object Oriented Drupal</a>. He throws down a compelling challenge for the future. Drupal 8 is already in development, and starting to classify certain components of Drupal is on the agenda for many ... as <a href="http://groups.drupal.org/node/63708">part of what is likely a longer-term project</a>.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/OO-Drupal-by-crell.png" alt="Object Oriented Drupal" title="Graphic courtesy of Larry Garfield." class="imagecache-teaser_full" /><span class="image-caption">Object Oriented Drupal. Clean. Each class contained. With this structure, without all the interlinked entanglements, Drupal core components can evolve more quickly.</span></p> <p>Imagine a more modular, OO Drupal.</p> <h3>Letting Data Roam Free</h3> <p><a href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a> is the future. With Drupal 7, it's becoming the now.</p> <p>One of the biggest barriers to a truly open, interconnected web is siloed data. Last year at SxSW, <a href="http://scobleizer.com/">Robert Scoble</a> told me that he was seeing increased open API development as the big thing then. And it's been great to see the various closed social networks developing APIs to allow interconnection and integration with other systems. This interconnectedness of separate systems is a start.</p> <p>RDF is something different. But it can be much more profound, and have an impact greater by orders of magnitude, because it's about structuring data in meaningful ways so that site A can consume structured data from site B <em>without having any access to site B's database</em>. No API necessary for that.</p> <p>RDF sets data free.</p> <p>One immediate application of this is that RDFa is now being consumed by Google and other search engines, resulting in more meaningful search results for those sites feeding out RDFa-structured content. The web is ready for RDFa.</p> <p>Somewhat difficult and time-consuming to implement in Drupal 6, RDFa is part of Drupal 7 core. That means all sites built in Drupal 7 will have RDFa support! (That is, unless the developer or themer disables it out of ignorance, negligence or choice.)</p> <p>This topic is a particular passion of mine, which is why I'm thrilled to be "mentoring" [read: collaborating with] <a href="http://groups.drupal.org/node/60453" title="description and discussion">Lin Clark on her Google Summer of Code project on RDFa</a>.</p> <p>Of course, all of the RDFa efforts for Drupal are open sourced. (Thank you [for the Drupal 6 efforts], <a href="http://drupal.org/user/26089">Arto Bendiken</a>, <a href="http://drupal.org/user/18741">Miglius Alaburda</a>, <a href="http://drupal.org/user/186547">Ben Lavender</a>, <a href="http://drupal.org/user/31731">Jeff Miccolis</a>, <a href="http://drupal.org/user/43670">Frank Febbraro</a> and <a href="http://drupal.org/user/52142">Stéphane Corlosquet</a>, <a href="http://www.openbandlabs.com/">OpenBand</a> and <a href="http://www.makalumedia.com/">MakaluMedia</a>. Thank you [for getting RDFa into Drupal 7 core], everyone who participated in <a href="http://drupal.org/project/issues/search/drupal?text=&amp;assigned=&amp;submitted=&amp;participant=&amp;status%5B%5D=1&amp;status%5B%5D=13&amp;status%5B%5D=8&amp;status%5B%5D=14&amp;status%5B%5D=15&amp;status%5B%5D=2&amp;status%5B%5D=4&amp;status%5B%5D=16&amp;status%5B%5D=3&amp;status%5B%5D=5&amp;status%5B%5D=6&amp;status%5B%5D=7&amp;priorities%5B%5D=1&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=156281&amp;issue_tags_op=or&amp;issue_tags=RDFa%2C+RDF+RDFa%2C+rdf_db_create_repository%2C+rdf_get_prefixes%2C+rdf_schema_get_entities%2C+rdf_unserialize%2C+rdf_uri%2C+RDF" title="all Drupal 7 issues tagged with RDF somehow">these issue queues</a>!)</p> <h3>777</h3> <p>In short, these examples demonstrate that, with Drupal, you can read, write and execute in all kinds of ways.</p> <p>And as powerful as Drupal has been up through Drupal 6, even more power is unlocked with Drupal 7, which has a bunch of usability improvements, <a href="/blog/a-peek-at-drupal-7-theme-system-changes">huge steps in the theming system</a>, some important changes in the way the code loads and executes, a new database abstraction layer opening the doors to potentially running Drupal on all kinds of databases, and so much more.</p> <p>I've seen some big changes in Drupal over the years, but Drupal 7 stands out as the biggest single leap in a major Drupal release. A big part of that is thanks to <a href="http://drupal.org/user/24967">Angie Byron</a>, who has proved to be cat herder extraordinaire in her role as Drupal 7 co-maintainer.</p> <p><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="critical bugs in Drupal 7">Everyone can help with Drupal 7</a> by reading up on what's still needed, writing patches and documentation, and executing patch tests.</p> <p>And six years from now, we'll perhaps look back at these days as the quiet times in relative obscurity. Because....</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/site-activity-history-absolute.jpg" alt="Drupal adoption curve" title="Graphic by Dries Buytaert." class="imagecache-teaser_full" /><span class="image-caption">Graphic by Dries Buytaert showing Drupal.org activity through 2007. As I write this, the node count is in the 811,000s. My first user account in 2004 was in the 14,000s. Nearly 800,000 users have registered since then to participate in the community in some way. (Okay, I was one of them by registering again [for reasons off-topic from this post].) Throughout this time, from Drupal 4.5 through 4.6, 4.7, 5.x and 6.x, Drupal's adoption as pretty much doubled with each release. Imagine the community doubling in 2010 with Drupal 7!</span></p> <p>...growth happens.</p> <p>You see, the great thing about all these fabulous, powerful things coming out of the Drupal community is that they make developing easier, so that you — we — can spend more time on strategy, on design, on content, and less time on reinventing the wheel or riding the bicycle up that same hill over and over again.</p> <p>It's a good time to be working and playing with Drupal. Let's make the future together.</p> http://pingv.com/blog/the-state-of-drupal-building-the-future#comments Aegir Dries Buytaert Drupal Drupal 7 DrupalCon Drush Features KIT Feature Specification Object Oriented Drupal Open Atrium open source Pantheon Mercury Pressflow RDFa Solr search Thu, 03 Jun 2010 05:02:54 +0000 Laura Scott 60 at http://pingv.com A Roadmap for Success: The Design Brief http://pingv.com/blog/a-roadmap-for-success-the-design-brief <p>Described succinctly by Tad Crawford in <em>AIGA Professional Practices in Graphic Design</em>, the design brief “digs deep into a project and identifies the main factors that drive the entire creative strategy.”</p> <p>Indeed, a well-crafted brief is invaluable for most any sizeable design project. It functions like a compass, allowing client and design team to ascertain periodically that north is still north, and that everyone is headed in the same direction. A design brief will clearly state, for both client and design team, the expectations and objectives of the project, and as such, it is a critical tool, laying the groundwork for what is to be done, why it is needed, and how success will be measured.</p> <p>The brief is thus part business strategy and part design strategy. To the design team, it points the way ahead, answering the basic questions necessary to inform the design process and keep the project on track. To the client, this early articulation of goals will assure that the project purpose and needs are clearly articulated and understood be everyone. This in and of itself is project gold, as the early discovery of fuzzy goals allows for immediate clarification and, if necessary, course correction. Many a project has been caught between the Scylla and Charybdis of unclear purpose and unidentified goals. The brief is a map for safe sailing.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/map.jpg" alt="An illustration fron a 1948 children&#039;s book described by H.J. Deverson and drawn" title="The Map That Came To Life" class="imagecache-teaser_full" /><span class="image-caption">A Design Brief keeps the project on track. [Illustration: Children's book from 1948 explaining how maps work, "Described by H.J. Deverson and drawn by Ronald Lampitt." Photo: <a href="http://www.flickr.com/photos/ilike/2863068137/">I like</a>.]</span></p> <p>The design team will work with the client to create the brief, based on the RFP, the design proposal, the kick off meeting and additional interviews as neceassary. A formal review of the design brief should be held as the project gets underway in earnest.</p> <p>The following questions are a guide for creating a thorough and effective design brief. Questions with fuzzy answers can lead to better defining project needs; or they can identify new needs, such as additional branding or strategy work. Some of the questions are really just conversation starters and idea generators. The list that follows is loosely organized by importance, but is by no means comprehensive or conclusive. Every project will need tailoring.</p> <h3>About the Project</h3> <ul> <li>Why are we doing this project?</li> <li>Why are we doing this project now?</li> <li>What are the goals of the project?</li> <li>What do we expect to have achieved at the end of the project?</li> <li>Who are the stakeholders and the decision makers in the process?</li> <li>What deadlines or timeframes must be adhered to?</li> <li>What is the budget?</li> <li>How will the success of the project be evaluated?</li> </ul> <h3>About the Market</h3> <ul> <li>How is your organization perceived today?</li> <li>Are there aspects of your market perception that need improvement?</li> <li>Who are your competitors?</li> <li>How are they perceived in the marketplace in relation to your organization?</li> </ul> <h3>About the Target Audience</h3> <ul> <li>Who is the target audience? As specifically as possible, note the age, income, location, lifestyle, occupation, gender ratio, et cetera of the intended audience. </li> <li>Are there additional, currently-untapped audiences that would benefit from the project if their needs and goals were taken into account?</li> </ul> <h3>Branding &amp; Inspiration</h3> <ul> <li>Do you have marketing collateral to provide for this project, such as photos, brand guidelines or messaging?</li> <li>Are there words, colors, metaphors that convey the feel you are looking for?</li> <li>Are there websites/brands/campaigns/publications/paintings/movies/other media that could provide inspiration ? Or that you specifically dislike/would like to avoid. Jot down why (color, content, typography, overall look and feel, imagery, etc.)</li> </ul> <h3>About the Organization in General</h3> <ul> <li>What is your business?</li> <li>How old is your company?</li> <li>How do your employees dress for work?</li> <li>Is there an object/animal/building/metaphor that resonates with your organization's identity?</li> </ul> <p>Preparing a design brief will help keep the process on track, giving the design team a point of reference, and helping to clarify client goals in a concrete way that sets the project up for happy success all around.</p> <h3>Want more information on creating a design brief? </h3> <ul> <li>Check out this<a href="http://www.designcouncil.org.uk/About-Design/Design-Techniques/Briefing-by-Peter-L-Phillips/Reasons-for-a-design-brief/"> blog post by Peter L. Phillips</a>, the man who wrote the book (literally) <strong><em>Creating the Perfect Design Brief</em></strong>.</li> <li>Look at this <a href="http://books.google.com/books?id=3MF6JRGUOAAC&amp;printsec=frontcover&amp;source=gbs_navlinks_s#v=onepage&amp;q=&amp;f=false" title="Google Books Overview">Google Books overview of <em>AIGA Professional Practices in Graphic Design</em> by Tad Crawford</a>.</li> </ul> http://pingv.com/blog/a-roadmap-for-success-the-design-brief#comments branding design design brief goals information architecture strategy user experience Tue, 25 May 2010 13:23:51 +0000 Jen Schultes 41 at http://pingv.com A peek at Drupal 7 theme system changes http://pingv.com/blog/a-peek-at-drupal-7-theme-system-changes <p>Every major release has introduced significant changes to the core API. There's no backwards compatibility between major Drupal releases; you can't run Drupal 7 modules on a Drupal 6 site, for example. In fact, if you tried you'd likely end up with the white screen of death. This willingness to let go of past thinking and old code has allowed Drupal to be as awesome as it is today.</p> <p>For theming, fortunately, the changes have usually been rather incremental — a short checklist of minor changes to themes to get them working in the newer Drupal. And none was as radical or challenging as the change from Drupal 4.5's xtemplate theming engine to the phpTemplate engine that emerged around Drupal 4.6 and became part of Drupal 4.7's core. That "upgrade" actually required total reimplementation. You simply could not just tweak an xtemplate-powered theme into a phpTemplate-powered theme. Thankfully, since then it's been a much easier road for theme upgrades. </p> <p>That is, until now.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/Grok-Drupal-Theming.010.png" alt="PINGV Creative" title="Drupal 7 theming rocks!" class="imagecache-teaser_full" /><span class="image-caption">Many Drupal themers will be daunted by the changes in Drupal 7. But we're excited about the new power.</span></p> <h3>50 (or so) drops make for an ocean of changes</h3> <p><a href="http://drupal.org/project/drupal">Drupal 7</a> represents just about as big of a theme refactoring as possible, without replacing the core phpTemplate theming engine. I won't say this upgrade is harder than the xtemplate-phpTemplate migration. No, we're still working with the same basic concepts, same general approach — in theory, anyway. But the changes are still enough that anyone looking at doing a theme upgrade from Drupal 6 to Drupal 7 might seriously consider simply rebuilding it from the bottom up, rather than trying to apply this change here, that change there … for 50-something changes.</p> <p>At <a href="http://sf2010.drupal.org/conference/sessions/grok-drupal-7-theming">my Drupal theming presentation at DrupalCon San Francisco</a>, I touched upon some of the big things that D7 theming is introducing. There's <a href="http://sf2010.drupal.org/conference/sessions/grok-drupal-7-theming">video</a> on the DCSF site. Here are my slides:</p> <div style="width:425px" id="__ss_3892142"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/pingv/grok-drupal-7-theming" title="Grok Drupal (7) Theming">Grok Drupal (7) Theming</a></strong></p> <object id="__sse3892142" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=grokdrupaltheming-100428210319-phpapp02&stripped_title=grok-drupal-7-theming" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse3892142" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=grokdrupaltheming-100428210319-phpapp02&stripped_title=grok-drupal-7-theming" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/pingv">PINGV Creative</a>.</div> </div> <p>But a more detailed rundown of the changes are (mostly) detailed at <a href="http://drupal.org/update/theme/6/7">drupal.org/update/theme/6/7</a>. </p> <p>There are <strong>49 changes</strong> documented <em>so far</em>, as I write this (with Drupal 7 still in alpha), and a few others to boot. In fact, <em>some changes are not documented there yet </em>— <em>or are actually</em> incorrect. (See bottom of this post for links to issues where I and others are working to correct some of these.) </p> <p>So without trying to be comprehensive, here is an introduction to some of the Drupal 7 theming changes that will make Drupal theming even more powerful:</p> <h3>html.tpl.php</h3> <p>As I write this, nothing about <code>html.tpl.php</code> is documented in "<a href="http://drupal.org/update/theme/6/7">Convert 6.x themes to 7.x</a>" in the Drupal.org handbooks (and this is something <a href="http://drupal.org/node/579698#comment-2911348">I'm working to change</a>). <strong>html.tpl.php</strong> is now the new page wrapper for your theme. Here you have the DOCTYPE declaration, the <code>&lt;head&gt;</code> info, and page closer.</p> <h4>modules/system/html.tpl.php contents</h4> <p>Here's a marked-up image of what you find in <strong>html.tpl.php</strong>:</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/screenshot-html-tpl-php.png" alt="" title="" class="imagecache-teaser_full" /><span class="image-caption">The html.tpl.php template in Drupal 7 takes over the webpage container duties previously managed by page.tpl.php in Drupal 6. In Drupal 7, the latter template contains pretty much all of what you see on the screen; the <code>&lt;head&gt;</code>, <code>&lt;html&gt;</code> and <code>&lt;body&gt;</code> tags, as well the DOCTYPE declaration, are all moved to the html.tpl.php file. The page.tpl.php template is actually called from within the html template. <strong>Note:</strong> You can always find the base templates Drupal is sending your way by finding the <strong>*.tpl.php</strong> files within Drupal core's modules' folders, and in most of the contributed modules.</span></p> <p>As you can see, this template has taken up the markup and renderings for pretty much all of the meta wrapping around the actual page that gets displayed, including new items <code>$page_top</code> and <code>$page_bottom</code>. <strong>page.tpl.php</strong> gets called this way:</p> <div class="codeblock"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /> </span><span style="color: #007700">print </span><span style="color: #0000BB">$page</span><span style="color: #007700">; <br /></span><span style="color: #0000BB">?&gt;</span></span></code></div> <p>This template is pretty straightforward, and something most themers won't even have to deal with. <s>But if you forget this template, you're going to run into some problems. So remember to include it.</s> But if you include it for the purposes of override, be careful or you could run into problems. <em>[Thanks to Pasqualle's comment for correcting me on this!]</em></p> <p><em><strong>More:</strong> <a href="http://api.drupal.org/api/drupal/modules--system--html.tpl.php/7">api.drupal.org documentation on html.tpl.php</a> and an <a href="http://drupal.org/node/579698">issue for documenting html.tpl.php implementation and changes</a>.</em></p> <h3>region.tpl.php</h3> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/d7-templates-regions.051-001.png" alt="diagram of nested templates" title="" class="imagecache-teaser_full" /><span class="image-caption">Regions templates contain the content area, sidebars, footer, etc. By default, they follow Drupal core's <strong>region.tpl.php</strong> template.</span></p> <p>Yes, regions now have templates. The active code Drupal 7 core provides for <strong>region.tpl.php</strong> is this:</p> <div class="codeblock"><code>&lt;div class=&quot;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$classes</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&quot;&gt;<br />&nbsp; <span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$content</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span><br />&lt;/div&gt;</code></div> <p>As usual, you declare your regions in the theme's .info file. If you don't declare regions, you will get these by default:</p> <ul> <li>header</li> <li>help (yes, <a href="http://drupal.org/update/theme/6/7#help-region">help is now a region of its own</a>)</li> <li>highlight (this <a href="http://drupal.org/update/theme/6/7#highlight-region">replaces <code>$mission</code></a>)</li> <li>content (which is <a href="http://drupal.org/update/theme/6/7#content-region">required in all themes</a>)</li> <li>sidebar_first (whose naming reflects a generally more semantic approach to Drupal theming)</li> <li>sidebar_second</li> <li>footer</li> </ul> <p>The various regions are called out and rendered by code in the page template, <strong>page.tpl.php</strong>, by using a syntax identifying the region as a variable, e.g.:</p> <div class="codeblock"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$page</span><span style="color: #007700">[</span><span style="color: #DD0000">'help'</span><span style="color: #007700">]); </span><span style="color: #0000BB">?&gt;</span></span><br /><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$page</span><span style="color: #007700">[</span><span style="color: #DD0000">'sidebar_first'</span><span style="color: #007700">]); </span><span style="color: #0000BB">?&gt;</span></span><br /><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$page</span><span style="color: #007700">[</span><span style="color: #DD0000">'sidebar_second'</span><span style="color: #007700">]); </span><span style="color: #0000BB">?&gt;</span></span></code></div> <p>Of course, to conditionally print the region only if it has stuff to display, it might look something like this:</p> <div class="codeblock"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">if (</span><span style="color: #0000BB">$page</span><span style="color: #007700">[</span><span style="color: #DD0000">'highlight'</span><span style="color: #007700">]): </span><span style="color: #0000BB">?&gt;</span></span>&lt;div id=&quot;highlight&quot;&gt;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$page</span><span style="color: #007700">[</span><span style="color: #DD0000">'highlight'</span><span style="color: #007700">]); </span><span style="color: #0000BB">?&gt;</span></span>&lt;/div&gt;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">endif; </span><span style="color: #0000BB">?&gt;</span></span></code></div> <p><em><strong>More:</strong> <a href="http://api.drupal.org/api/drupal/modules--system--region.tpl.php/7">api.drupal.org documentation on region.tpl.php</a>.</em></p> <h3>Hidden regions</h3> <p>This is a neat little one. It's a way to define regions that are available for modules but are not available in the blocks administration area. Why would you want to do that? The <a href="http://drupal.org/update/theme/6/7#closure">Drupal.org Handbook's theme update page</a> explains a use case:</p> <blockquote><p>The page_top and page_bottom regions are hidden, which means they will not show up on the blocks administration interface. When doing site-specific themes, it might also be useful to add more hidden regions (to provide ways for modules to add output to more places in the theme without defining blocks showing up on the blocks interface), you can do that via the regions_hidden[] .info file array which is new to Drupal 7:</p> <p>theme .info file extract:</p> <div class="codeblock"><code>regions[content] = Content<br />regions[help] = Help<br />regions[page_top] = Page top<br />regions[page_bottom] = Page bottom<br />regions[indicators] = Indicators<br />regions_hidden[] = indicators</code></div> </blockquote> <p>In this above example, the region named "indicators" is additionally defined as a hidden region.</p> <h3>Two ways of hiding elements with CSS</h3> <p>Speaking of hiding things, there are now two standard ways to hide content using CSS:</p> <ol> <li><code>.element-hidden</code> — to hide an element from all users. ("An example would be a collapsible fieldset that will be expanded with a click from a user. The effect of this class can be toggled with the jQuery show() and hide() functions" — <cite><a href="http://drupal.org/update/theme/6/7#element-hidden">handbook</a></cite>.)</li> <li><code>.element-invisible</code> — to hide an element visually, but keep it available for screen-readers. ("This class should be used for information required for screen-reader users to understand and use the site where visual display is undesirable.... This class must not be used for focusable elements (such as links and form elements) as this causes issues for keyboard only or voice recognition users" — <cite>Ibid.</cite>)</li> </ol> <p>It's extremely handy to have these predefined, especially as browser-viewed design patterns get increasingly complex and specific to particular use cases. All themers have to recognize that they are implementing an application interface, not a "web page" as conceived by many since the advent of Netscape in 1994.</p> <h3>All titles in templates get prefix and suffix</h3> <p>Thusly:</p> <div class="codeblock"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$title_prefix</span><span style="color: #007700">); </span><span style="color: #0000BB">?&gt;</span></span><br /><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">if (</span><span style="color: #0000BB">$title</span><span style="color: #007700">): </span><span style="color: #0000BB">?&gt;</span></span>&lt;h1 class=&quot;title&quot; id=&quot;page-title&quot;&gt;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$title</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&lt;/h1&gt;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">endif; </span><span style="color: #0000BB">?&gt;</span></span><br /><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$title_suffix</span><span style="color: #007700">); </span><span style="color: #0000BB">?&gt;</span></span></code></div> <p>Why? </p> <p>One reason is to generate contextual links — such as a handy block edit link right there where the block is displayed, visible to and accessible by users with appropriate permissions.</p> <h3>Granular display of <code>$content</code> info in <strong>node.tpl.php</strong></h3> <p>Now this part is really cool. It no longer requires preprocess to break apart node <code>$content</code> output. Of course, you could print each field on its own, but what a pain in the ass!</p> <p>But in Drupal 7, you <em>now</em> have <em>two new functions</em> for printing out content in a node or user profile:</p> <ul> <li><code>render()</code></li> <li><code>hide()</code></li> </ul> <p>Let's look at an <a href="http://drupal.org/update/theme/6/7#granular">example</a> taken from <strong>node.tpl.php</strong>:</p> <div class="codeblock"><code>&lt;div class=&quot;content&quot;&gt;<br />&nbsp; <span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #FF8000">// First we hide the comments and links now so that we can render them later.<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000BB">hide</span><span style="color: #007700">(</span><span style="color: #0000BB">$content</span><span style="color: #007700">[</span><span style="color: #DD0000">'comments'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000BB">hide</span><span style="color: #007700">(</span><span style="color: #0000BB">$content</span><span style="color: #007700">[</span><span style="color: #DD0000">'links'</span><span style="color: #007700">]);</p> <p>&nbsp;&nbsp;&nbsp; </span><span style="color: #FF8000">// Then we print the content. Comments and links end up not included here.<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$content</span><span style="color: #007700">);<br />&nbsp; </span><span style="color: #0000BB">?&gt;</span></span><br />&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; // Then we print the links and comments separately</p> <p><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$content</span><span style="color: #007700">[</span><span style="color: #DD0000">'links'</span><span style="color: #007700">]); </span><span style="color: #0000BB">?&gt;</span></span></p> <p><span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$content</span><span style="color: #007700">[</span><span style="color: #DD0000">'comments'</span><span style="color: #007700">]); </span><span style="color: #0000BB">?&gt;</span></span>.</code></div> <p>What this means is that you can pull components or fields out of your template's big <code>$content</code> blob and display them in a more controlled way — e.g., to split them out of the "content" div, as illustrated above.</p> <h3>Fields are in core</h3> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/fields-are-in-core.047-002.png" alt="Photo of a field" title="Make your fields feel welcome" class="imagecache-teaser_full" /><span class="image-caption">With fields now in core, if you weren't CCK-prolific, you have more theme components to account for by default.</span></p> <p>This isn't so much a theming-specific thing, but it's really cool! The field.tpl.php template is pretty straightforward:</p> <div class="codeblock"><code>&lt;div class=&quot;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$classes</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span> clearfix&quot;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$attributes</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&gt;<br />&nbsp; <span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">if (!</span><span style="color: #0000BB">$label_hidden</span><span style="color: #007700">) : </span><span style="color: #0000BB">?&gt;</span></span><br />&nbsp;&nbsp;&nbsp; &lt;div class=&quot;field-label&quot;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$title_attributes</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&gt;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$label ?&gt;</span></span>:&amp;nbsp;&lt;/div&gt;<br />&nbsp; <span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">endif; </span><span style="color: #0000BB">?&gt;</span></span><br />&nbsp; &lt;div class=&quot;field-items&quot;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$content_attributes</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&gt;<br />&nbsp;&nbsp;&nbsp; <span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">foreach (</span><span style="color: #0000BB">$items </span><span style="color: #007700">as </span><span style="color: #0000BB">$delta </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$item</span><span style="color: #007700">) : </span><span style="color: #0000BB">?&gt;</span></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div class=&quot;field-item <span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$delta </span><span style="color: #007700">% </span><span style="color: #0000BB">2 </span><span style="color: #007700">? </span><span style="color: #DD0000">'odd' </span><span style="color: #007700">: </span><span style="color: #DD0000">'even'</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&quot;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$item_attributes</span><span style="color: #007700">[</span><span style="color: #0000BB">$delta</span><span style="color: #007700">]; </span><span style="color: #0000BB">?&gt;</span></span>&gt;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$item</span><span style="color: #007700">); </span><span style="color: #0000BB">?&gt;</span></span>&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; <span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">endforeach; </span><span style="color: #0000BB">?&gt;</span></span><br />&nbsp; &lt;/div&gt;<br />&lt;/div&gt;</code></div> <p>In there, like in Drupal 6's filefield module template, it's pretty clear where the <code>&lt;div&gt;</code>s are, so you can get at your markup output.</p> <h3>The box is dead</h3> <p>Ding dong! <strong>box.tpl.php</strong> is no more. What was the box for? Good question! Moving on….</p> <h3>Search in the theme is dead! Long live search in a block!</h3> <p>Because it seemed silly to have search live in both places, the search form call in page.tpl.php is no more. You can place the search form using its available Drupal block.</p> <h3>Template suggestions' delimiter change</h3> <p>Template suggestions now use a '--' delimiter rather than the '-' that was used in Drupal 6. To illustrate:</p> <ul> <li>page--front.tpl.php</li> <li>node--blog.tpl.php</li> <li>node--event-performance.tpl.php</li> </ul> <p>Note that word separations within an element remain '-'. This allows for cleaner logic in handling instances of hyphenated elements, so the double hyphen always indicates a more targeted override of what comes before the '--'.</p> <h3>preprocess, process and process_html</h3> <p>This is a change that really deserves its own blog post (and a long one at that). Suffice to say that preprocess no longer stands alone as a high-power tool for themers.</p> <blockquote><p>There are now two sets of variables process functions. The first are the existing "preprocess" functions. The second are "process" functions which are run after preprocessors. All the various prefixes and suffixes apply to this second phase in the exact same way. This is useful when certain variables need to be worked on in two phases.</p> <p>For example, adding classes into an array for the "preprocess" phase then flattening them into a string in the "process" phase so it's ready to print within a template.</p></blockquote> <p>Also there's now <a href="http://api.drupal.org/api/function/template_preprocess_html/7">preprocess_html</a>. Documentation issue: <a href="http://drupal.org/node/579698">drupal.org/node/579698</a></p> <p>This alone should be enough to inspire the dedicated Drupal themer to brush up on her PHP chops.</p> <h3>RDFa</h3> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/be-nice-to-robots.080-001.png" alt="Robots kissing" title=""Oh Servo! I'm so happy you're here!"" class="imagecache-teaser_full" /><span class="image-caption">RDFa is here to stay. Robots will love it. You should just stay out of the way.</span></p> <p>Providing extra rich robot food in every pageload is one of Drupal 7's big improvements, and that means <a href="http://drupal.org/update/theme/6/7#rdfa_header">new RDFa requirements</a> for themers so that this layer of robot food gets loaded into the page. Here's what you want to make sure you do in your <strong>html.tpl.php</strong> template :</p> <ol> <li>Declare the appropriate "<code>XHTML+RDFa</code>" doctype:</p> <div class="codeblock"><code>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML+RDFa 1.0//EN&quot;<br />&nbsp; &quot;http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd&quot;&gt;</code></div> </li> <li>Print appropriate <code>&lt;html&gt;</code> info, language attribute, and RDF namespaces:<br /> <div class="codeblock"><code>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$language</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">language</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&quot; version=&quot;XHTML+RDFa 1.0&quot; dir=&quot;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$language</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">dir</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&quot;<br />&nbsp; <span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$rdf_namespaces</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&gt;</code></div> </li> <li>Print the <strong>GRDDL profile</strong> to facilitate consumption of this RDFa metadata:<br /> <div class="codeblock"><code>&lt;head profile=&quot;<span style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">print </span><span style="color: #0000BB">$grddl_profile</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></span>&quot;&gt;</code></div> <p><em><strong>See:</strong> <a href="http://en.wikipedia.org/wiki/GRDDL">Wikipedia info on GRDDL</a>.</em> </li> </ol> <p>Yes, I know, this may not seem like it's relevant to a themer, but this is the future. Drupal is leading the way in CMS adoption of RDFa, which will lead to a future where the web increasingly behaves like one big machine with one big database of information. So feed the robots.</p> <h3>A couple of open issues</h3> <h4>Conditional stylesheets</h4> <p>This is a <strong>big issue</strong> for me, and I believe for all Drupal themers: There's a question whether <a href="http://drupal.org/node/522006">themers should be able to declare conditional stylesheets in the theme's .info file</a>. </p> <p>The alternative, placing code in a preprocess function, requires a modicum of PHP knowledge, which is not ideal for front-end development. Yes, there is a lot in Drupal 7 theming where PHP knowledge is extremely helpful, I know.</p> <p>But conditional stylesheets, in this day and age of multiple platforms, are such a common use case it would be great not to have to bury that implementation in preprocess. <em><strong>Conditional stylesheets should be easy peasy to declare!</strong></em> </p> <p>If you think so, too, please let it be known on <a href="http://drupal.org/node/522006" title="your voice counts!">this issue</a>.</p> <h4>Documenting all of this</h4> <p>This blog post is I hope a helpful read for Drupal themers and front-end developers interested in working with Drupal. But it is not documentation. The documentation on Drupal.org is incomplete and inaccurate in places. Here are some issues where you might help.</p> <ul> <li>The Drupal 7 theming guide is outdated. In fact, it really doesn't exist except as an add-on to the Drupal 6 theming guide. <a href="http://drupal.org/node/740194">drupal.org/node/740194</a></li> <li>Documentation on html.tpl.php is missing or misplaced as "changes" to page.tpl.php. <a href="http://drupal.org/node/786312">drupal.org/node/786312</a></li> <li>There's discussion on documenting html.tpl.php clearly, with all the various changes: <a href="http://drupal.org/node/579698">drupal.org/node/579698</a></li> <li>And where themer help is needed: working on and testing patches for <a href="http://drupal.org/project/issues/search/drupal?text=&amp;assigned=&amp;submitted=&amp;participant=&amp;status%5B%5D=1&amp;status%5B%5D=13&amp;status%5B%5D=8&amp;status%5B%5D=14&amp;priorities%5B%5D=1&amp;priorities%5B%5D=2&amp;categories%5B%5D=bug&amp;categories%5B%5D=task&amp;version%5B%5D=156281&amp;component%5B%5D=theme+system&amp;component%5B%5D=markup&amp;component%5B%5D=drupal.css&amp;component%5B%5D=Garland+theme&amp;component%5B%5D=Minnelli+theme&amp;component%5B%5D=Seven+theme&amp;component%5B%5D=Stark+theme&amp;component%5B%5D=user+interface+text&amp;issue_tags_op=or&amp;issue_tags=">theming-related critical and normal issues.</a></li> </ul> <h3>This is only a start</h3> <p>In the coming weeks, I hope to find the time between client work and company business (and helping with testing and documentation of Drupal 7) to follow up on this post with more highlights and tips on Drupal 7 theming. If you've come across other really cool bits, please share them here.</p> http://pingv.com/blog/a-peek-at-drupal-7-theme-system-changes#comments Drupal Drupal 7 Drupal front-end development Drupal theming RDFa semantic web Mon, 03 May 2010 06:42:31 +0000 Laura Scott 59 at http://pingv.com Mood Boards? Welcome Aboard! http://pingv.com/blog/mood-boards-welcome-aboard <p>Taking a step back to review methodology every so often is a great way of keeping work fresh, as it means you don't slip into a routine. Lately here at PINGV, we have been looking for ways to streamline projects and enhance how we communicate conceptual ideas to our clients.</p> <p>At one point in the discussions, thinking about how we create and present visual design comps, we all remembered Mood Boards. Oh, wonderous Mood Boards....such utility! such style! the way you perk up the grayscale sketchiness of wireframing with a burst of ideas and colors....where have you been all our lives? Actually, we had each used them before, but they had not been part of our PINGV team process. Until recently! And now, we can happily report that their integration has been a smashing success.</p> <h3>First Off: What Is a Mood Board?</h3> <p>Everyone needs inspiration to make and communicate design proposals. Architects use a process called <em>Charrette</em>, in which they gather up and throw around ideas, obstacles and solutions to the project at hand. Interior and Fashion Designers create <em>Swatch Panels</em> to visualize solutions and work through possibilities. In Web Design, the <em>Mood Board</em> (sometimes called Inspiration Board) is our tool of choice. </p> <p>Mood Boards allow one to create broad stroke representations of look and feel, free from structural distractions, similar to the way that wireframes allow one to sketch out page architecture without broaching visual design. The Boards are collages or templated representations which can indicate typography, imagery/photography style, color palette, use of space and iconography. </p> <p>Here are two examples, one collage-style and one template-style.</p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/mood02_forblog.png" alt="A Mood Board in collage style" title="the collage composition hints at whitespace" class="imagecache-teaser_full" /><span class="image-caption">A Mood Board in collage style</span></p> <p class="image-teaser_full"><img src="http://pingv.com/f/imagecache/teaser_full/blogimgs/mood01_forblog.png" alt="A Mood Board in template style" title="a vertical composition eliminates resemblance to an actual design comp" class="imagecache-teaser_full" /><span class="image-caption">A Mood Board in template style</span></p> <p>Our process now is this: as wireframing begins to wind down and most structural elements are falling into their general places, we take our first foray into the visual elements of the site. Generally, we have been snipping images from websites and magazines, gathering elements and inspiration ever since the project started. We now gather those files and clippings into 3 directions (more or less).</p> <h4>The Directions</h4> <ol> <li>The look we feel instinctually is best</li> <li>A more conservative or more formal approach </li> <li>A more extreme or more casual approach</li> </ol> <p>(At the <a href="http://boagworld.com/design/mood" title="Paul Boag on the utility of Mood Boards">Boagworld</a> blog Paul Boag writes that his shop creates a 4th Board which is way out in left field and intended as a creative, idea-generating activity. The formal inclusion of a push-the-boundaries Board makes a lot of sense, and we will definitely be giving this a whirl for our next site.)</p> <h3>How to Create a Mood Board </h3> <h4>Template versus Collage</h4> <p>Now that we have our buckets of styles, we need to choose whether we need to present them in a loose or structured format. Depending on the temperament of the designer and the type of client you are working with, this is usually a simple decision. Some clients are very adept at looking at a collection of images grouped and scattered across a page, while others will really need to have a Board in which different items are clearly labelled (Palette, Icons, etc). By now, you probably have a good feeling as to what sort of client you are working with ;)</p> <p>At PINGV Creative, we tend towards collage style, as the layout of the Board itself gives you an additional tool to indicate mood. For example, you can create an open collage with a lot of white space or a densely layered one with patterned backgrounds. As you are talking your client through the Boards, these details open points of discussion which can illuminate future decisions.</p> <h3>Things to Watch Out For</h3> <p>Be sure you don't make your Boards look too much like a web page. This defeats the whole purpose and can actually confuse the client. To avoid this, there are a number of strategies:</p> <ol> <li>Spend less time on the individual Boards. It's easy to get fussy and what we are wanting is fresh and fast. The longer you push pixels around in this particular process, the more likely you are to create a DESIGN, rather than a collage of inspirational images.</li> <li>Make a physical Board...get out the scissors and the glue stick and print out those digital images, snip snip the magazine pages. Not only can this be a truly satisfying way to spend a few hours, but you are very unlikely to glue together a web site ;) </li> <li>Use a different aspect ratio or size. Make them square or tall or long and narrow.</li> </ol> <h3>How to Present a Mood Board</h3> <p>If you have done your job and your Board does not look like a web page, you will most likely have few problems talking through the Boards with your client. Many designers attach a few adjectives to each Board, almost as talking points. Or you can title them. You will want to point out regardless that these are NOT comps, but rather conversation starters. Welcome their first impressions, listening for what they like and what they dislike, as both pieces of information are important. At the end of the session, ask your client to look at the Boards again the next day and report any additional thoughts. </p> <h3>Why Have We Found Mood Boards Invaluable?</h3> <h4>Mood Boards Focus the Approach</h4> <p>With a Mood Board, we are focusing on site aesthetics not structure or content. Breaking the process up into these chunks, just as we do with Wireframes, unmuddles the decision-making and discussion. </p> <h4>Mood Boards are Quick and Disposable</h4> <p>The process allows for rapid prototyping in the visual design process. Mood Boards can (and should be) quick to produce, somewhere between and hour and 3 hours, depending on the style you are using. Moreover, if after you have gathered and grouped your inspirational elements, it becomes apparent you are barking up a barren tree, you can file the ideas away without tears. </p> <h4>Mood Boards Enhance Creativity</h4> <p>The process allows you to work through ideas in an unstructured way that encourages experimentation and does not punish trying to push the envelope here and there. Even if all your Mood Boards are rejected, its totally ok! You have gained a better idea of the look and feel directions your client is NOT looking for, and you have lost only a few hours...much better than discovering the same information after several days of design work. </p> <p>Here at PINGV Creative we are happily embracing our long lost friend the Mood Board. We love how it has opened up our creative process and stream-lined the acceptance of design comps. Designers, if you are looking for a new approach, give Mood Boards a try. We think you'll like 'em.</p> http://pingv.com/blog/mood-boards-welcome-aboard#comments design mood boards process tips and tricks Thu, 29 Apr 2010 18:20:31 +0000 Jen Schultes 56 at http://pingv.com