Drupal
RDFaification of Drupal
Shelley on Sunday, 2008-11-09Don't you love it when people take bits and pieces of different words, creating a new word that manages, somehow, to be understandable? A word like RDFaification?
But the RDFa beautification of Drupal is upon us, helped along by writings such as A Roadmap for RDFa in Drupal 7, based, in part, on this previous post and discussion, kicked off by Drupal's Dries Buytaert.
Years ago, we used to talk about the "ugly" serialization of RDF (RDF/XML at the time) and how the serialization technique really didn't matter, because one day, the metadata annotation of a site would be handled automatically via whatever content management tool people used.
Future, meet Drupal.
Atom XHTML Patch
Shelley on Saturday, 2008-11-08- Content Management: Drupal
Created my first formal Drupal patch, providing an XHTML content type to the Atom module. Once I walked through the module, and the procedure to apply a patch, it really wasn't all that difficult to both create the patch, and submit it for review. And the feed validates, though with a warning because of the object element in the last post.
I was surprised at how easy it was to modify the administration form for the module— a couple of lines of code, and that's it.
Separating Presentation from Semantics
Shelley on Wednesday, 2008-08-20- Content Management: Drupal
- Semantic Web: Semantic Markup
After all these years, we have finally reached the point where we've separated page organization from presentation, and now we're about to embark on the same mistakes again, but this time with presentation and semantics.
I've been following the issues associated with the vocabindex Drupal module, including one where the person submitting the bug stated the vocabindex use of UL was incorrect. We're supposed to, MXT writes, use definition lists rather than unordered lists for any lists of terms with associated definition.
At first glance, it does seem as if the vocabindex module is using the unordered list incorrectly. After all, look at any of my category pages (such as the one for the Semantic Web)—what you see is a list of "terms" and their associated definitions. An obvious candidate for definitions lists.
Look more closely, though. In my sidebar menu I list the vocabindex terms as links to web page URIs, but there is no definition attached to any item. The description, if one is given, is, instead, added as a title attribute to the item and displayed only when the item has cursor focus. Yet, it's the same data. Does this mean, then, I'm somehow not properly displaying my menu items? Should I have a huge sidebar, with the item description given underneath?
More importantly, whether I have a given text description for each item is purely optional, some do, some don't. Yet the items in the list have meaning without any associated description. In fact, each item in the list is really nothing more than a label for a bucket to hold content. I could just as easily use foo, bar, silly, putty as labels, except that I'm trying to use "meaningful" labels in order to enable you all to better find past content.
In the absolutely ancient W3C page where lists are covered a list of ingredients is given as an example of an unordered list:
- 1 cup sugar
- 1 cup oil
- 2 cups flour
However, I don't see that anyone would have a problem with adding parenthetical information to this list in order to further clarify the items:
- 1 cup sugar (light brown granulated by C & H)
- 1 cup oil (canola or corn, but not olive)
- 2 cups flour (white or mixed white and whole wheat)
This is really nothing more than what the vocabindex is doing with the vocabulary index terms within both the index pages and my sidebar menu: a listing of items and a (parenthetical) description to clarify what that item is. However, it's only when the description is displayed as a "tooltip" that one sees the item as a clarification phrase, only. When presented in the index pages, it "looks" like a definition list, and so we want to have it marked up this way— mixing up semantics and presentation.
A definition list is assumed to have two pieces of information; the term or phrase and an associated definition. Even when not present, the definition is still assumed to be forthcoming at some point— not having it is the exception, not the rule. An unordered list is just that: a list of items. They can be a list of items to buy at the store, select from in a form, or click on in a web page. There's no assumption that any additional information is necessary for the item. If there was, Drupal would make this information mandatory rather than optional. The application and associated developers would definitely discourage the use of the items in a tag cloud or other format where only the term is given because the term, by itself, would be meaningless.
Yet we look at how the terms are portrayed in a page like the vocabindex page I linked above, and that's enough for us to say we should use one form of markup over another because it's more "semantical". Further exploration online at other sites who attempt to define the differences between unordered lists and definition lists shows the same thing: if we see two pieces of data, we're assuming a definition list, because that's what it looks like—not what it is.
The HTML5 document adds another key element to the discussion of definition lists by stating that definition lists are name-value pairs. From this can we deduce, then, that the name has no meaning without the value. That's my interpretation: that a definition list is the proper semantic markup only when data is defined within a context of names and associated values, both of which are meaningless without the other. If, however, *HTML5 allows us to list the names without values, or the values without the names, than the HTML5 document is imprecise, and we should just use whatever we want to use— semantics can not be derived from imprecision.
Currently in Drupal, vocabulary terms are discrete labels, nothing more. Any description is for clarification not definition, and isn't essential to the meaning of the term. Forget how the vocabindex pages "look", and focus on what the data means. If we can't do that, then this whole semantic markup thing is a bit of a farce, really.
*Confirmed: it doesn't
Creating Social Networks Few Want
Shelley on Friday, 2008-08-15- Content Management: All CMS, Drupal, Planet Drupal Entries
- Semantic Web: RDF
- The Web: The Networks
There has been considerable discussion this week on Techmeme about weblogging tool as social networking platform, based on Six Apart's release of Movable Type Pro 4.2. The announcement was still wet from its birth when the Wordpress folks started touting BuddyPress, a variation of social networking based on Wordpress.
Among the social networking requirements for a weblogging tool are:
- Support for FriendFeed and other feed aggregation
- Support for Twitter
- Forum support
- Creating user accounts, with profiles and avatars
- Enabling community-driven content
- Content voting, ala Digg
I waited for the Drupal folks to tick off each of these, as this type of behavior is already built into Drupal, or provided via plug-in. For instance, support for the just given list can be met by Drupal via the following:
- Aggregation support is a module included with the Drupal installation. In addition, the FriendFeed Drupal module provides two-way FriendFeed communication.
- Ditto with the Twitter Drupal Module
- Forum support is another module included with the Drupal installation, though it doesn't have a traditional forum look and feel. The upcoming Advanced Forum module supposedly provides the missing pieces for a standalone forum.
- All of the user functionality is also built-in, or provided as installation module, including adding users, profiles (with avatars), as well as being able to create user profiles with differing permissions. For instance, registered users to this site who I know are given a "Trusted user role" wherein they can post comments without the comment going into moderation. I could also allow users to post photos, in addition to posts of their own — it's all role-based.
- You can use the Voting API module with Drupal for content voting, and there have been other efforts to create a Digg-like functionality, though there just doesn't seem to be much interest in this within the Drupal community.
In fact, Drupal began its life as a bulletin-board system, adding weblogging functionality at a latter time. It is "community-based" from the ground up. Knowing all of these, I watched Planet Drupal for someone to mention about all of this already existing capability in Drupal. And I watched. And I watched.
Nothing. Not a word. Oh, there may be those who are in the process of writing about Drupal's capability, as compared with the new Movable Type/Wordpress initiatives, but the interest has been more about the upcoming DrupalCon, upgrading to the newest releases, and various other activities; providing yet another demonstration of the differences in communities surrounding Silicon Valley based applications, and an application with beginnings not only outside California, but also outside the United States. Differences that not only don't include that sense of competition that seems to exist with both MT and Wordpress, but that also represent a general lack of interest in becoming part of whatever new movement is currently deemed to be it. it for the moment, that is.
(A difference I've not, yet, come to absorb, being still imbued with the vestigial impulse to validate my choice of tools by pointing out We are first! We are better!, and hence, my earlier paragraphs. )
However, to be fair to the vast majority of MT and WP users, there isn't that much communication in the general Wordpress or MT communities, either, about the newest social networking "needs" that seem to be the driving force behind these new tool developments. Regardless of tools used, I find it unlikely that most people are interested in much of the social networking capability that is now being touted as "necessary".
In her post at ReadWriteWeb related to the release of the new version of MT, Sarah Perez asks, Is this the future of blogging? Or is this the future of web publishing altogether? I think we'll find, ultimately that the answer is no. The Silicon Valley mindset, for wont of a better term, wants social networks, and assumes the rest of must want the same thing. However, I think we'll find that most of us just want a web that's both open and accessible, and there is a vast difference between an open web and a social network.
In an open web, we may try to annotate our writings with metadata, so that the information described in this metadata could be merged by other applications. We work to ensure our work is easily accessible, and (though not always), try to engage our readers. We hope that the site is viewable by a variety of devices. To facilitate these interests, we've added syndication feeds and comments, some use of microformats, semantic markup, and even, on rare occasion, RDF, and perhaps a feed aggregator or photo feed in the sidebar. We try to create valid web pages, and use CSS to add a little of our own personality to the site's look. At a stretch, we may include FriendFeed or Twitter postings, too, but I think interest in these is rarer than one would expect by the cacophony of noise that seems to accompany both services.
An open web, however, does not demand a web whereby the line of demarcation between the writer and the reader becomes blurred, and the reader is assumed to not only be reader, but writer, editor, and critic too— becoming one of many, which seemingly are then used to not only prove the popularity of the site, but also help monetize it.
Specifically, the success of our spaces is not a measure of noise but of satisfaction. What's happened, though, is that to the Silicon Valley mindset, noise is a measure of satisfaction, so the more accouterments enabling noise, the better.
Posting writings and allowing comments are not enough: we must also give people profiles, with avatars and ranking systems, and the ability to vote comments up and down. By providing multiple levels at which our readers can engage, we create that noise that is seemingly so important in order to justify the worth of our spaces. What we're finding, though, is that based on such activity, the noise level may increase, but it increases as noise, rather than the thoughtful comments that inspired our original interest, years ago.
As we invite the readers to become more involved, we probably will increase the popularity of our sites, but at what cost? We lose the ability to own our own spaces; to be able to suddenly switch one day from writing about HTML5 to writing about art. Even having comments means we give up some control over what we do in our spaces. All too often when I visit tech web sites and the author is writing on some other topic, I read in comments: "That's not why I read your site, I don't care about foo. I want to read about bar"? Or the newer complaint many of us have begun receiving since the advent of Twitter: "*This post is too long to read."
Voting up and down may increase the number of visitors, and they may feel increasingly engaged, but look at what happens at sites like Digg. Though interesting stories may appear in the front page, such as the one about CAPTCHA technology being improved with the help of old manuscripts, many more are based on the amount of controversy associated with the topic, and not whether the topic is useful, or even relevant. More importantly, popular sites proliferate in popularity driven listings while less popular sites are pushed to the back, making it that much more difficult to find not only new and interesting information, but new and interesting sites. The reader becomes not only writer, editor, and critic, but also gatekeeper.
I'm not writing this to be critical of Six Apart's new Movable Type social networking software, or the upcoming BuddyPress by Wordpress—more power to **both groups in working to expand their offerings. To extrapolate, though, from these new offerings to a whole new web is typical of a mindset that is becoming increasingly isolated in how it views the web and how the web should be.
More importantly, to extrapolate one small group's determination of what's necessary in order to be "successful", to the broader population can actively hurt rather than help the web. Do we really want a web without nooks and crannies, small voices, quiet places, and serendipitous finds? That's not the web I want. To say that we're all becoming increasingly narcissistic, is to say that one group's self-obsession is shared by all, and I don't think that's true.
*And I include this post among those considered "too long to read".
**But Drupal was first.
Last of the Book and Attack of the Women
Shelley on Wednesday, 2008-07-30I put the finishing touches to the draft for my current book, and now it begins the technical review process. I don't want to say it's my last book, but there is no other on the horizon, as I return to the world of software development and consulting.
First, though, I need to spend time upgrading my own skills. When you write books, you have to let so many new and interesting technologies slide by because you don't have time to stop, and play. You also end up coding in small pieces, because you're focusing primarily on book samples, with little time for larger applications. Or that playing, I just mentioned.
I want to spend more time with Drupal, because I've only scratched the surface of this application. I am extremely pleased, nay tickled to see Angela Byron from Lullabot win an award for Best Contributor at OSCON for her work with Drupal—affirming that my move to this software was the best move for me. In fact, in sounds like women made significant inroads in the open source community at OSCON this year, aided, in part, I think, because of software communities, such as Drupal, which are decidedly woman friendly environments.
In particular Emma Jane Hogbin's Form an Orderly Queue, Ladies presentation at OSCON provides details of a dastardly plot to infiltrate women into the ranks of the tech through open source. I love evil plotters, like Dr. Horrible, and evil plots, like women invading open source through innocent seeming applications like Drupal. Drupal and Dojo.
Bwa-ha-ha.
My Life. The Book.
Shelley on Thursday, 2008-07-24- Content Management: Drupal, Planet Drupal Entries
Virginia DeBolt writes at Blogher about the recent "open tutorial" session the Blogher conference had on Sunday. I'm not much on conferences, but I thought this was an excellent idea. What typically happens at tech conferences is that the experienced people connect up with the other experienced people and the newbies are forced either into a generic crowd around the well known folks, or into connecting with each other. This is no bad thing, but there's no opportunity for dispersion, so to speak, other than in the formal conference sessions.
With the Blogher one-on-one tutorials, not only are experienced people helping inexperienced people, there's a breakdown of barriers between the old guard and the new, and in such a way that it isn't a "fangirl/fanboy" situation, either, which can only be healthy for all participants.
Returning to Blogher's one-on-one, one person who Virginia helped was Frances Ellen who had an interesting challenge.
Frances is writing a book, Story of Nadia, two paragraphs at a time, published twice a week. She's using Wordpress, which means that the entries are displaying in reverse chronological order, and without any tie-in with each other. The solution Virginia and the others came up with was to create a TOC for the sidebar that pulls the entries together in proper order. An idea that came to my mind when reading the post was to create chapter "categories", and have a category listing in the sidebar ordered alphabetically: Chapter 1, Chapter 2, and so on. When publishing a new post, Frances would then pick which chapter "category" to place the posting. To ensure the publications display correctly, she can use chronological order for the postings in the chapter categories, when the chapter category pages are opened. This would effectively create a book without having to manually edit entries in a TOC.
As for the tag items Frances already has, these could be managed as "tags" rather than categories—though with a single purpose site, the meta information should be in the header as meta tags, rather than in individual post, since this information is repeated across all posts. However, these tags also tie Frances' work into the Wordpress.com tag cloud, so the repetition does serve a purpose.
Using chapter categories, with a sidebar entry, and chronological entries within the categories, not to mention, meta information in the header, should work at Frances' site without having to move any page, or leave wordpress.com. In fact, I'm not sure if Frances isn't doing this already, and if so, my apologies for a redundant suggestion. The only other recommendation I would make is that within the "Chapter" pages, to remove the sub-titles on the individual listings, as these disrupt the reading flow. This modification should be a theme change, and not impact on the existing site structure.
What Frances has works for her, but I can't resist using this challenge to plug Drupal, because it is just this circumstance that made me move to Drupal.
At my personal site, Just Shelley, I don't have a taxonomy or categories. Instead, I'm writing a series of "books", on specific subjects, with each new writing being a new "chapter" in the book. I've started two, and I'll probably end up with five or six "books" when finished. I don't plan on writing the books in order, either. I'll add a page to one, and the next time, a page to another.
I've made the first page of the books "sticky", which means they will always be on the front page, and always at the top of the page. Currently I have the site set to show three postings on the front page, but I'll eventually make it five or six: enough for the first pages of the "books", and perhaps a couple of additional entries for photos or whatnot.
However, I've set the feed to ten items, and when I publish a new book page, I publish it to the front page. Though it may not actually, physically show in the front page of the item, it will show up in the feed, so my patient, long-suffering friends following my long, meandering stories can be notified when I've published a new page to one of my "books".
Only the first page of each book will show on the front page of the site, but clicking through will open up not only the first page of the book, but a table of contents, as well as book navigation at the bottom of the page (as shown in my Drupal Live book, here at RealTech). You can then either use the book navigation or the TOC to click through to pages. You can print the whole book at once by selecting the Printer Friendly option at the bottom of the first page. This is particularly handy if you want to export the entire book in order to read on your Kindle or computer while offline. Pick Printer Friendly, and then Save As (single web page) from your browser. For Kindle users, use the free Kindle conversion email address for your account, or just pay the dime.
The tech to make this work:
- Use Drupal, of course
- I use clean URLs and the pathauto module in order to ensure friendly URLs for the book pages
- Download the development version of the token Drupal Module, because this one supports book titles, as part of the book page URLs. I believe this will end up being version 2.0 when released.
- In the Automated alias settings tab, in URL Aliases, I use the following setting for Node path settings, Book page paths: [book-raw]/[title-raw]. The only time I override the automated setting is for the first page, which I set to the URL for the book. Another option could be to add my own alias consisting only of the book title URL, pointing to the first page.
- Set the Post Settings to how ever many entries you want to show on the front page. Also set the Length of Trimmed Posts to unlimited—you'll want to manage your own book page excerpts, not let the system do it for you.
- In the RSS publishing settings, I set the number of entries to ten, but you'll want to use a number higher than your post setting count. In addition, I use title and teasers as content, but that's my own preference.
- This is also a personal preference, but I use the Atom feed module, and add a printer friendly link to the Atom feed by appending the following to the post using the Ad Insertion setting: <a href="http://shelleypowers.com/print/%id/">Printer friendly version</a>
- Speaking of printer friendly, I use the printer friendly Drupal module to enable this functionality. By using this module, people will be able to download or print the entire book from the first page of the book. They can also read the book directly from their feed if my web site design proves too much of a challenge for whatever browser and device they're using.
- Finally, and only because I am not using categories, I created a Page entry that lists each "book" with an associated image, and connected it to my Primary links via the Writings menu item. It's not necessary since all books will have their first page listed on the home page for the site. However, people are dependent on menus, so it's better to be redundant than risk confusing the readers who reach your site other than through your feed, or who may not know that the front page also serves as navigation for the site. I also have exactly one image gallery, created using the image module, containing all images I upload. I won't be uploading many, as they are mainly story illustrations or photos I think complement the site. In addition, I use the Lightbox2 module to provide slideshow and dynamic photo expansion capabilities.
I'm still relatively new to Drupal, so some of these steps may end up being unnecessary. However, the site works, the process works, and is relatively simple to maintain, so I'm happy with what I have.



