Social-Media

Free Laptops

apple treeIn keeping with the Alchemist’s recent “free” disambuguation theme, here is my latest installment on the OLPC project:

Free Laptops: Creating, Producing and Sharing a Revolution

In this essay/story I leave wise ‘ol Plato behind, and tried for a straight up, journalistic take on the project. Except there is no such thing as objectivity in journalism, so in this piece is explicitly infused with subjectivity and ideology. Conversations with Ian Bicking helped convince me that believing in this project is a ultimately a matter of faith, in which case our optimism or cynicism go a long way towards shaping reality. And our perceptions are often shaped by media, so lets start advocating for this project instead of kicking it in the shins.This is one reason I am starting to think that olpcnews should seriously ease up on the project, stop taking cheap swipes and jibes, and start offering more constructive criticism, or even better, apply for some grants so they can fix the project as they see fit. Happy Holidays!

Honest Software

Originally publihsed on theploneblog.org How hybrid economies help keep software honest. Last week’s Plone Conference was truly phenomenal - provocative, intense, and fun (big thanks Jon and ONE/Northwest!). One of the most amazing things I experienced last week was alluded to in Eben Moglen’s keynote (to be posted soon)- the manner in which this community has managed to bring together people who don’t ordinarily interact. Throughout the breakout sessions, I continued to question dividing us up according to our respective vertical sectors - Corporate, Non-Profit, Educational, and Government. As I have begun to write about elsewhere, systems like Plone can help balance the flow of communication and power between people in a variety of situations and settings. Content, collaboration, and community are contexts which exist across sectors, and the tools we all need cross over as well (sometimes with slightly different tunings). In many ways lumping together all the folks involved with education is odd. Universities are microcosms of cities, and their IT needs are as diverse as the the rest of the world. However, there are still structural and social similarities that form the basis for common language and culture. After engaging with my fellow educators a the educational panel session and the BOF session I understood the value of us sharing and strategizing, beyond just commiseration. But through it all, there was one thing that united all of the different attendees - a piece of general purpose software called ‘Plone’. It is worth dwelling on this mixture of participants and the varying forces they apply to the software. Lessig and Benkler have both been writing a great deal about hybrid economies lately, trying to understand their rhythms, and how we might be able to design them to succeed. They have been writing generally about the “commercial economy” and the “second economy” (sharing, social production, etc), but the lessons may cross over directly to our community. I realized in Seattle how beneficial diversity can be for software production. Most of the consultants using Plone are there strictly for traditional market considerations - to make a profit. They are helping to keep the software honest. Unlike some other open source projects which exclusively service the educational world, Plone is not sheltered from the raw, harsh forces of the commercial market. This means that some of the people using Plone use it because it helps them get their jobs done efficiently. Others have called this “productivity arbitrage”, and it is a concept that may hold the key to designing successful open source projects. It is challenging to imagine working backwards and trying to design a software ecology which captures the hearts and minds of such a diverse following. No small task. As Rheingold said “There’s been an assumption that since communism failed, capitalism is triumphant, therefore humans have stopped evolving new systems for economic production.” - Is Plone’s ecology an example of one of these new systems, and if so, what are our distinguishing characteristics?

One Python Per Child

Originally published on theploneblog.org The $100 laptop project has chosen Python as the primary development language for The Laptop. I was lucky enough to get my hands on an olpc developer board, and have spent a little time learning about the platform and project. While there are a few issues I have with the project, it is really an thrilling moment in educational technology and after holding the hardware in my own hands I actually believe this vision might truly manifest. The main reason I am writing about this in the Plone blog is I have learned that the olpc’s application development language of choice is Python!

New York State of Plone

Originally published on theploneblog.org Preliminary report on the Big Apple Sprint July fourth has come and gone, but the fireworks set off at last week’s sprint are still visible. The sprinters arrived at Columbia University bright and early, Wednesday morning. (note to all future sprint organizers: tell the caterers to skip the decaf and double the regular order). About ~13-15 sprinters were present, but we also coordinated remote sprints with Austria (+5 hours ahead) and Utah (-2 hours behind) meaning we were basically sprinting around the clock. We all used the freely available, plone-based, OpenPlans service to manage our collaboration and everyone found the software to be extremely reliable and easy to use. The sprint began with introductions and detailed demos of the tools and products people had been working on and were most proud of. Sprints are difficult to plan in advance since the skills and interests of the attendees are not decided until the final roster shows up. A diverse range of interests were represented, but common themes rapidly emerged

Death and Taxonomies

Originally published on theploneblog.org A forray into drupal 4.7’s taxonomy system and what Plone can learn from it. I have been moonlighting on a Drupal project and paying close attention to their taxonomy system. Drupal’s taxonomy/category/tagging system was completely revamped for their 4.6->4.7 release - a release close to a full year in the making, analogous to the Plone 2.0->2.1 “minor” point release. The site I have been working on, theicarusproject.net has a very rich collection of content, and one of the primary motivations for the migration is to get a better handle on the classification system - noboday can find anything on the current site. They were committed to Drupal long before I arrived, so I dug in with the hope of learning something from the contrast. PHP bashing aside, there are alot of interesting things happening in Drupal land. I hope to follow up this post with a few more cross-pollinating nuggets, but for now I will focus on their taxonomy system. Taxonomies in Drupal are considered the heart of the system, and the essential modules ship with the core and cannot be disabled. Most URLs in Drupal are effectively queries, much like our smart folders (actually, for anything aside from anti-chronological display order you need to install the Views module) but the display results are all instances of content with matching vocabulary terms. The absence of folders and containment initially confuses many administrators, and renders breadcrumbs largely useless, but does allow for the creation of sophisticated information architectures. Taxonomies are managed top-down, not bottom-up, and have a separate administrative interface for their creation and management. Once the taxonomy vocabularies are created, specific terms can be added to these vocabularies without having to create content associated with those terms (in contrast to a bottom-up category system, like the mediawiki). Category Management - Vocabulary Listings: vocabulary_listing Druapl supports multiple vocabularies, which can each be associated with one or more content types. Vocabularies can be flat, one level deep, or N-levels deep (hierarchical). They can be fixed or free form (meaning content authors can make up new categories upon content creation). The core tagging system does not support the creation of tags per-user, per-object - only per-object. Category Management - Add a Vocab: add_vocabulary Category Management - Add/Edit a Term: edit_term The Drupal taxonomy system is very powerful, but its power is very open ended and does not necessarily lead users towards a uniform experience. The confusion around categories and taxonomies is best exemplified by the category module meant to consolidate and simplify taxonomy and navigation, but there is no consensus on its incorporation into the core. A large number of modules are built around taxonomies. Core Drupal supports roles, but no groups (organic groups is a popular access delegatoin solution, but it is incompatible with other access restriction modules - so you have to choose one), and does not have a notion of containment (ie folders). So, for example, one way to restrict editing access is by enabling the taxonomy access module. Another useful module is the taxonomy browser which allows for advanced search against unions/intersections of vocab terms. Category Browser: category_browser Once vocabularies are created, and terms added, content can be associated with these terms: content_creation Working on this site really drove home the value in separating the navigation axis (section) from the thematic axis (keywords), and separating these dimensions was easy to accomplish with the taxonomy/category tools built into drupal. In particular, once the scheme was developed, managing vocabulary lists (even hierarchical ones) is intuitive, albeit slightly clunky. I further chose to introduce a free-form tagging dimension for member contributed posts which may or may not fit into the fixed taxonomy. This is similar to myspace and facebook allowing for free-form hobbies and interests, and banking on a large enough user base that there will be overlap and potentially interesting intersections. section_vocab keywords_listing The system still does not allow for the intuitive modeling of a many-to-many relationship, which I continue to think is the litmus test which will mark of a truly powerful taxonomy UI. There is still quite a bit of programmer know how involved in setting up this system so that it operates the way that content administrators expect, and arguably there are too many degrees of freedom introduced by such a general purpose modeling capability (if you think about it, a tagging system can essentially allow web administrators to model relationships which used to require programming custom applications against an rdbms). Nonetheless, Drupal’s taxonomy/category/vocabulary system definitely captures a few use cases more elegantly than Plone’s current core does. But perhaps the real lesson is the importance of not mixing navigation space and content space, which can be kept separate in Plone, but is all too easy to conflate (in Drupal too!). Note: most things I describe in this case study could have been accomplished within core Plone - I think the most interesting things here are the administrative UI for multiple vocabulary management, the different types of vocabularies, and how central they are in the construction of a Drupal site.

There is no folder

Originally published on theploneblog.org Do not try to bend the folder – that’s impossible. Instead, only try to realize the truth. Then you will see that it is not the folder that bends–it is only yourself. Tagging seems to have spurred a growing amount of research on categories and classification. A recent paper by Clay Shirky, entitled Ontology is Overrated: Categories, Links, and Tags directly challenges the desktop metaphor which currently underlies much of Plone’s UI. To be sure, it is certainly possible to model the connections that Shirky describes using topics, smart folders, and a disciplined use of keywords, but the metaphor is critical for designing and intuitive system, all the way down to the icon. I have recently been working a bit with Drupal, and their handling of this problem is worth checking out.  The core taxonomy module, combined with its corresponding menuing systems (menu, sitemenu, taxonomy menu) provide a great deal of flexibility in this regard. Organization is going organic.

Saints in the Church of Writely?

Two months back I saw Richard Stallman talk at a NYC Gnubies event and I asked him a question that I have been thinking alot about lately – Would a Saint in the Church of Emacs use gmail? To me the question revolves around the growing threat that 3rd party webservices poses to the freedoms that free software is designed to protect. In O’Reilly’s What is Web 2.0 he argues that software is transitioning from an artifact to a service, and that data is becoming the new “intel inside”. In an age when applications have become commodities, could the freedom of my data (in an open format) be interchangeable with the freedom of software? I recently listened to the Chief Open Source Officer at Sun Mircosystems pose a similar question in his talk, The Zen of Free. He talks about the importance of Open Software implementing Open Standards, which is close to the idea I have been advocating, but doesn’t quite go far enough. Using free (as in beer) third party web services is very tempting, but I am worrying more and more about the traditional freedoms that free software protects against - vendor lock-in, proprietary data formats, and freedom to modify policy according to application specific requirements. I would be less antsy about using web 2.0 apps if I had some assurance that I could get my data back out without screenscraping a bunch of html pages. Even services with APIs like flickr and delicious create vulnerabilities, as I was loathe to discover last week. Delicious provides a programmers api, but its api only exposes methods which operate on a single user. Thus, if you want to export a collection of links that have all been tagged with a particular tag, (reasonable if you are engaged with a community in distributed research) you are back to screenscraping! These considerations and more advocate for the need for free (as in speech) versions of many of these services. There are certainly some side-effects of running a centralized service that are inherent in it being centralized, but many communities are making use of these “public” services because of their convenience, and the ease with which they can be “mashed up.” Which brings me back to the design that we have been thinking alot about at work lately. Anders and I presented a talk at pycon demonstrating some of these ideas. Anders did a great job writing our talk up here: Tasty Lightning Crucially, it is imperative not to conflate our advocacy for building components that expose themselves as webservices with building apps against third-party web services. The design we describe resembles a traditional mash-up, except the components involved are locally controlled as opposed to relying upon external, corporate services. For all the usual f/oss reasons it can be important to “own” and run your own services. But this argument also has everything in the world to do with Ulises In Defense of the Digital Divide as Paralogy essay. In this essay Ulises grapples with Lyotard’s critique of new media under the logic of capitalism which has “established commodification and efficiency as the ultimate measures of the value of knowledge.” he continues:

The Me Generation

isomorphic surprises: stickies, tasty, and the importance of user contributed content I have been thinking alot about tagging lately, especially how a complete tagging system - comprised of user-item-tag triplets, is isomorphic to rdf’s subject-predicate-object triplets. It is amusing to think about how egocentric Web 2.0 is - The subject is always me. Web 2.0 might be made of people, but not just any people - Just the most important one in the world. Today I had a fun time trying to explain to people on irc the power and importance of user contributed content annotations within plone. Crucially, user content annotations are per-user, per-object, and in many cases a single user might want to annotate a particular object with more than one annotation. Interesting annotations can come in many flavors. There are free form notes, fine grained annotations (anchored to particular phrases - think msword trackback - or geometrical coordinates on the target - nice for image annotations), keyword annotations (aka - tags), etc ect. There many problems that can be solved with custom per user content annotations, including quiz and poll results, per student answer submission, and lately we have been working on allowing users to clip audio and video by annotating start and end times on media objects. It is important not to confuse per-user tagging with DC:Subject - the dc metadata is shared across all users (like categories in the wikipedia) and in that sense, is global. While we are on the topic of tags, it is useful to talk about the vocabulary that drives the tagging. Vocabularies can be fixed or free, individual or collaborative, and personal or shared. All of these variations are interesting in different cntexts, and have to do with whether or not I see your tags, or if we each are developing our own ontologies. In educational technology annotations are a big part of the problems we are trying to solve, but there are tons of use cases in the world at large. Additionally, a high performance, robust tagging engine can power personal content organization, like gmail’s labels. Which brings me to the products we have been developing at CCNMTL. We have been using PloneStickies, a general purpose content annotation framework, in production for over a year now. Built using AT References, it allows us to create per-user AT objects connected to the target object. AT Schema Annotations won’t do the trick here since, like DC:Subject, these annotations are instance-wide. Z3 annotations might work, but by building AT derived stickies, we pick up search, workflow, permissions, and the richness of AT. This allows us to quickly and easily develop custom stickies, like the StickyClip. PloneStickies has a ways to go, but the basics work great. It is not yet super useful out of the box, since the portlet it ships with only allows users to attach a single free form StickyNote to the target object. But it is great to develop applications with. It ships with with some super snazzy css stickies, complete with colored/resizable/title-barred/drop-shadowed/roll-upable/transparent-when-dragging notes, which can preserve their own x-y position and state across sessions and never fall off your screen. It now supports attaching multiple stickies to a target, but does not yet provide a mechanism for the target object to place the stickies itself. At first we thought we could implement a Plone tagging solution using this framework - just create a StickyTags made out of keyword fields, and voilà - plonr. Trouble was, since tagging is such a symmetrical model, its tough to build an efficient zodb implementation (for me, at least) that can handle all the querrying we wanted to do. Enter the tasty microapp and the PloneTasty proxy (about 90% done). Tasty is a stateful (sqlobject) turbogears component that exposes a REST api, ships with its own snazzy ajax tagging client, and can be used across frameworks, languages, and platforms. We are even hoping it can help make the world a better place. So StickyTags (which doesn’t exist) and PloneTasty are two implementations of the same concept, with StickyTags being the AT/zodb implementation and PloneTasty/tasty the new microapp design (mashup architecture?) we have been working on and are pretty psyched about. And if you act now, you get the knife set and the lint remover too, for just 3 easy installments.

Faster, Better, Cheaper

Originally published on theploneblog.org In this episode, Sean Kelly at NASA compares j2ee, rails, zope/plone, turbogears, django… cue the laughtrack Okay, this is a long one, but it rivals any comparison matrix: better-web-app Plone comes out shining, although arguably it compares apples to pomellas.  Someone with the chops should really cut this baby up into chapters, cause its  a win for dynamic  languages over j2ee, and python, and Plone to boot. (spoiler: he uses the zmi for “hello world” and ArchGenXML for the time tracking app).

all work, all play

Last Friday CCNMTL hosted a mini-conference on New Media and Education (pics). Me and my colleague Dan Beeby co-presented a marathon series of workshops on Sakai and Web Services. We repeated each of our two 35 minute talks 3 times over the day (2x3 talks == a very long day), and I can’t wait for the video’s to be published so I can see the rest of the conference ;-) The first talk unfolded into a conversation about Course/Content Mgmt systems, open/community source ecologies, and the purposeful use of tools w/in those environments. The second talk covered rss, blogging, delicious, flickr, odeo, and the balance between push and pull. The participants were attentive and engaged, and I although the pace was brutal, I really enjoyed working on these presentations. The funny thing about giving 6 talks in one day, is that by the third talk in, I couldn’t remember if I had used a particular phrase two slides back, or two hours back… Luckily, Dan and I knew the material cold, had a good rapport, and were very comfortable swapping lines and improvising. The only glitch was due to flickr not refreshing their feed for over 24 hours… can’t expect much more from an external service (more on that in a future post). The slides got a little mangled on the html export, but here they are: An Instructors Guide to Sakai & Courseworks Remodeled. Dan has a great touch in photoshop, so careful what sorts of pictures you leave laying around his desk.