FOSSBazaar Workshop

I’ve been at the FOSSBazaar workshop in SF for the past couple of days – an afternoon session and a session this morning. It’s part of the Linux Summit, FOSSBazaar being a workgroup of the Linux Foundation (though it’s not Linux-specific). (It was news to me that Good Friday isn’t an official public holiday in the US.) FOSSBazaar is an industry consortium focusing on open source usage in the enterprise, in particular open source governance. I attended because I have been developing a tool at Osmosoft to support enterprise open source governance, codenamed TiddlyGuv. I’ll say more about TiddlyGuv in the next post, but here are some notes I recorded at the session.

The notes here are mainly from yesterday’s session – brainstorming about where FOSSBazaar should be heading and what activities to perform. Today’s session was several presentations, one being mine on TiddlyGuv. For the record, the talks were: Krugle, Osmosoft overview (from my colleaugue Andrew Back), TiddlyGuv (me), INRIA, Qualypso, and Fossology (another open source project in this space which we’ve talked to previously and will hopefully collaborate with in the future; more in a later post).

These are iphone notes; spelling and grammar caution!

FossBazaar – Open source governance community – managing open source within an organisation – Share best practices …

started in jan 2008.

State of FOSSBazaar website: Blogs are healthy, forums need attention – would be good to have some discussion amongst ourselves. Whitepapers could be added to.

Qualypso project overview: an organisation encouraging open source adoption esp in Europe. Aiming to set up 6 competence centres -initially some funded by European commission and eventually private or regional funded.

mention of EUPL – recent European license – some unusual features – translated into multiple languages and gpl-compatible

Discussion about what kind of people are targeted by FOSSBazaar – important to think about developers not just managers/lawyers/etc because (a) they can often be an entry point into other parts of the organisation; (b) they often have policies forced on them so regardless of their view, good to target them too to support and promote open source usage. eg should I be using GPL?

Discussion about projects fossbazaar partner could collaborate on to add value and raise profile. The value compared to other organizations would be to offer expertise and experiences from the real world of organisations/companies. Most of the session involved brainstorming those projects. There was a pragmatic focus on packaging the info up neatly as handbooks, “top 10” lists etc, and thinking about SEO. The notes from this brainstorming session were written up during the meeting and I can reproduce them below (thanks to Ragavan Srinivasan who wrote them up during the meeting and Martin Michlmayr for making them available).


Potential ideas:

  • Common patch contributor agreement – SFLC may be working on this. SFLC and LF are working on this
  • Authoritative source of license information: scan code; there are legal issues
  • Standardized way to communicate license to users (README? INSTALL.TXT?LICENSE.TXT? XML?) Document/Guidelines?
    • SFLC published a legal primer that could serve as a starting point. (Need link)
    • Maybe a “HOWTO” or cookbook could be added to primer
    • Get projects on board who will adopt the process
    • Potential projects to work with as pilot: Apache, Eclipse (may already be doing this?), KDE
    • Should this expand beyond just license text standardization to IPR policy standardization along the lines of what Eclipse seems to be doing?
    • Publish Wall of Fame with a badge.
  • Open source governance best practices guide book
    • Benefit if done by a neutral organization
    • Create editorial structure, then get content from each of the partners
    • e.g. creating an OSRB, what to include in a policy
    • FOSS Governance Fundamentals document is quite updated; this one could be more detail
    • Ask Andrew/Olliance for content
    • Create outline, then ask partners to contribute
  • General guide on the licenses, how to interpret them
    • Three books (Rosen, St. Laurent, Van Lindberg) – perhaps we should link to them on FB?
    • Icons to represent licenses ?
  • Survey data?
    • Governance focused (do we have an analyst company as a partner?)
    • Ask TonyW if a student who could do this
    • Start by making a survey of LF members; but that won’t include end-users
    • Make it repeatable; do it every quarter or year
    • Look at trends
    • Ask multiple people in one company and compare what they say (production, developer, manager etc view); show gaps in knowledge
  • Top 10 list of considerations (vulnerabilities, distributing software that contains GPL, license/legal papers; etc.); make sure solutions are included, not just problems or risks
  • Interviews with companies that have mature FOSS governance processes – HP, others? QualiPSo member
  • Common problems with popular FOSS libraries (tomcat, gSOAP etc.)?
    • Work with the projects to get answers (Ask FB)?
    • e.g. Project may have no clear license, work with the developer and remove ambiguity.
    • Magnifying the fine print on some projects/licenses.
  • World’s funniest license interpretations by developers/businesses (funny in a scary way)
  • What to do when you are undergoing some major business changes? (Mergers/acquisitions, divesting part of your company, etc.)
  • FOSS licensing for Dummies?
  • Read this before you do anything else list?
    • SFLC primer?
    • Books from above?
  • FTF (Freedom Task Force) has a lot of documents that are in draft stage, but perhaps we could host them on FB?
  • Grab fossbazaar on identica/twitter before someone squats!
  • Content syndication – cio.com, etc.
  • Outreach to India, China, Eastern Europe, etc.?
  • L10N of content?
    • How do we get the community to help with this?
    • Hugely important.
  • Hosted version of FOSSology? Legal issue? Competing technology?
    • Concern: You may end up with a comment board, all prefixed with IANAL. Problems, but no fixes
    • Why could we not adopt a Coverity/security remediation style approach?
    • Would BD/Palamida/Others be interested in doing this as part of FB (give open source projects access to their Tools behind closed doors as a way for the projects to earn the badge) – will need to address confidentiality, record keeping. We also need more lawyers to donate time to SFLC.
  • A policy builder that OpenLogic has built?
  • Some kind of tooling on FB (like an iPhone app people want to share, just as an example)
  • Start with a small set of core FOSS projects, see if we can get them to standardize on how they represent licenses, give them badges and use them as examples to go after more FOSS projects. This allows us to fix the license ambiguity problem at the root instead of every downstream user having to resolve this.
  • Perhaps we can have projects publish testimonials, maybe start with new projects or projects that don’t have a lot of adoption yet.
  • What are some non-license/legal issues we want to work on?
    • Have a better reputation and build more credibility.
  • Case studies gets another vote. Be generic so you don’t have to name names.
  • Boeing, Lockheed, BAE, BT, all have talked about their open source governance best practices in public. AFIS conference (DoD conf. On FOSS). We have presentations.
  • Forums: what are the strangest place you’ve found licenses in?
  • Forums: OSRB: to allow companies to have comparisons of OSRB

User categories:

  • My company won’t let me use FOSS – HELP!!!
  • My manager thinks we don’t use FOSS – how do I break the news?
  • What is this FOSS thing I keep hearing about?
  • I’ve been asked to create an OSRB/FOSS Center of Excellence for my company – what do I do?

Marketing * Top 10 theme related to governance * SEO * Social networking * Reach out to journalists * Webinar series (lead generation) * Press releases * Get more in-bound links: e.g. syndicating content * Create more partnerships & get links: e.g. with QualiPSo * Newsletter * Twitter: e.g. most active forum topic this week

Next steps:

  • Add “best practices” on FOSSBazaar
  • Create outline for Governance best practices document
  • Define use scenarios (e.g. “new to open source”) and show content depending on what they need
  • Top 10 lists
  • Interviews

TiddlyDocsDocs – Design Docs for Tiddly*

TiddlyDocs - document collaboration by divide and conquer - FireMoff (-;

Since we’re planning to use TiddlyDocs internally, we’re in need of some high-level documentation for TiddlyDocs in order to have it approved for certain uses.

My starting point was to locate, solicit, or produce documentation for TiddlyWiki and TiddlyWeb, the technologies on which TiddlyDocs is based.

For TiddlyWiki, useful sources are:

  • Position Paper Although it’s technically a position paper for an event on device access, Paul Downey has done a great job of overviewing TiddlyWiki from both a high-level and technical perspective.
  • TiddlyWiki Internals Series I wrote this when I joined Osmosoft, so a caveat is that my knowledge of TiddlyWiki was at the time limited. OTOH it’s the only detailed dive of the internals I’m aware of.
  • Community Wiki Scouring around the official community wiki is another way to find a lot of useful info, particularly about the API.

For TiddlyWeb, there are less third-party sources, but fortunately its creator Chris Dent puts a lot of effort into writing detailed notes. These are notes shipped with the code itself, notes on the TiddlyWeb wiki, and even some very useful notes in commit messages. Most recently, Chris has been producing some excellent doco at here, inside the wiki.

For TiddlyDocs, Simon has produced a nice new screencast on TiddlyDocs with animations. Video quality needs some polishing, which we’ll do in later versions, but he’s done a great job motivating the product:


TiddlyDocs Intro from Simon McManus on Vimeo.

TiddlyWiki Drawing Plugin based on Project Draw

I’ve been creating a drawing plugin for TiddlyWiki (SVN trunk). It delegates the actual drawing editing to Project Draw (docs; demo), a browser-based drawing editor from Autodesk Labs.

Here’s a screencast:


TiddlyWiki Drawing Plugin based on Project Draw from Michael Mahemoff on Vimeo.

Autodesk Labs’ Project Draw editor looks like this:

… and the tool has a nice set of RESTful services we can make use of:

Project Draw doesn’t have any specialised cross-domain API, e.g. using JSON or OAuth, so normally you would have to proxy any calls via the server. However, a standard TiddlyWiki runs against a file:// URL and can therefore bypass cross-domain restrictions; hence, it was possible to build this plugin using the same kind of XMLHttpRequest calls as Project Draw does for its own RESTful services demo.

One likely use of Project Draw is in conjunction with TiddlyDocs, which will generally run as a standard website – off a http:// URL. Hence, we will need to do some proxying in order to get around cross-domain restrictions.

Also, the tool isn’t fully working in IE yet; I’m working on that.

You create a new drawing with the New Drawing menu item. This is simply a <<newDrawing>> macro and could appear anywhere in the page.

And you can set image dimensions in edit mode:

… which will cause images to be clipped depending on the dimensions:

By default, images are rendered as SVG, using the tricks I discussed earlier for inline SVG. However, this is only supported for non-IE browsers, or IE with Flash-based SVG support. I am still working on IE support. Without SVG, the image will fall back to a bitmap image (fortunately, Project Draw can output an image as SVG or bitmap). However, note that the bitmap image always shows the whole thing; so rather than being clipped, it will re-scale, which could lead to a lot of whitespace being shown in TiddlyWiki. For this reason, in Project Draw, you should set the page dimensions to avoid any whitespace:

TiddlyDocs Prototype

Simon McManus has overviewed TiddlyDocs, a TiddlyWeb-based document editing and collaboration tool. It’s a great example of taking an existing framework – TiddlyWiki – adding in a bunch of components – TiddlyWiki plugins and other open source pieces – and putting some custom code around it to generate something useful in just a few weeks. Simon’s article has a good overview of all the moving parts inside TiddlyDocs.

I recorded a screencast to demo the initial version:


TiddlyDocs – Early Prototype from Michael Mahemoff on Vimeo.

I’m excited about the potential of this tool. In the simplest case, you can see it as an online word processor which, being open source, could therefore be deployed flexibly securely and freely behind any organisation’s firewall. But it can be much more than just a word-processor, because each section is a tiddler behind the scenes, and is therefore a first class data structure with its own set of fields. In particular, there are the seeds of a workflow system, with a field indicating the current completion status, and another field assigning the individual who will progress it. This means you can get an RSS feed, for example, of all sections in “under review” status, or a list of all sections assigned to a particular user.

OpenSocial-Tiddlywiki Integration

Go straight to the demo.

Google Gadget TiddlyWiki plugin - a tiddlywiki macro to embed google/opensocial gadgets

I’m at the Osmosoft hackathon and finally got an opportunity to experiment with OpenSocialTiddlywiki integration. Specifically, how to embed OpenSocial gadgets in Tiddlywiki. I paired (trio’d?) up with Stuart Race and Tom D’Roza on it. We managed to get something useful up in an hour or two, which is testimony to the simplicity of both OpenSocial and Tiddlywiki. It’s only proof-of-concept for now and for some reason doesn’t work in IE.

Technically, it’s iGoogle integration, not OpenSocial. The gadgets are iframes pointing to the iGoogle gadget server (gmodules.com). That’s because right now, it’s not clear there are any OpenSocial containers that will serve out gadgets externally in the same way. Of the various live OpenSocial containers, there is really scant information about how to embed the gadgets in an external page. Suffice to say, the code here is virtually identical to what you’d need to embed an OpenSocial gadget – it’s simply a matter of changing the endpoint URL from whence gadgets are served.

One concern about this is whether or not Google will be cool with us pointing directly to the iframe. Technically, you’re supposed to embed gadgets using a script tag, which will document.writeln() the iframe and its source. I vaguely recall a time last year where we were playing around with direct calls to the gadget, and gmodules saying no. This is possible in theory, if the server was attempting to match each iframe request with a previous corresponding script call. However, I am probably dreaming. It seems to be working fine. In any event, Shindig has no constraint like that, so if we extend this to point to other opensocial servers, or something spun up by an individual, it should work fine.

Usage

With the plugin installed, it’s simple to use:

<<gadget http://abowman.googlepages.com/spider.xml >>

or with options:

<<gadget http://www.btinternet.com/~tdroza/gadgets/twitter/index.xml height:400 width:500 border:0 prefs:"up_max_items=5&up_username=downingstreet&up_feed=http://twitter.com/statuses/user_timeline/" >>

If you’re familiar with opensocial you’ll realise that the height, width, and border are options to the gadget server telling it how to render the gadget and its chrome; whereas the prefs string contains preferences which the gadget itself gets. All this is optional.

Plugin Code

We began with the Shout plugin whose code I’ve already documented. It was only a matter of creating an iframe and pointing it – by setting its src property – to “http://www.gmodules.com/ig/ifr?url=”+params[0]. And that worked fine, and we had gadgets inside tiddlywiki.

The hard part was parameters, took a little investigation to work out how to handle key-value pair parameters. The plugin code below serves as a simple example for how it’s done. It’s very similar to the very cool Ruby/Rails idiom which has also been adopted by Javascript libraries like Prototype (obviously, given its Rails association) and JQuery. i.e. mandatory params followed by a hash of optional params. Here, the URL is mandatory, and its proceeded by a set of key-value pairs.

The plugin code:

javascript

  1. config.macros.gadget = {};
  2. config.macros.gadget .handler = function(place,macroName,params, wikifier, paramString) {
  3. var elem = createTiddlyElement(place,"iframe",null,"greeting","");
  4. var p = paramString.parseParams(null, null, true);
  5.  
  6. elem.src= "http://www.gmodules.com/ig/ifr?url=" + params[0] + "&" + getParam(p,"prefs","");
  7. elem.height = getParam(p,"height","200");
  8. elem.width= getParam(p,"width","300");
  9. elem.style.border= getParam(p,"border","1");
  10.  
  11. place.appendChild(elem);
  12. }

That’s it.

Applications

Why would you want to embed a gadget in a tiddlywiki, aside from proof of concept? Well, tiddlywiki is a platform whose applications are many and varied; OpenSocial integration simply enhances the platform so that developers can select from a rich palette of existing gadgets. For example, if your tiddlywiki involves trip planning, pull in a Google Maps gadget.

It also makes for an extremely easy way to collect up a bunch of related gadgets, and optionally have a conversation around them. For example, you could compile your favourite game and toy gadgets into a game tiddlywiki. Remember tiddlywikis are single files, so this becomes a single file game.html which you can mail around, keep on your hard drive, or post to a server. A related usage would be a single tiddlywiki where all gadgets are the same type, but with different preference strings. For example, 10 weather gadgets with different “location” settings.

I, Osmosoftie

I’ve officially joined the Osmosoft team today. Osmosoft is all about open source and web technologies, so it’s a great fit. I’m looking forward to working in a talented, hands-on, team in a startup-like culture.

Osmosoft began as an acquisition, when BT brought in Jeremy Ruston and his TiddlyWiki product. The team continues to work on TiddlyWiki and related products such as RippleRap, in addition to guiding BT on open source strategy. Last week, Jeremy announced BT is joining FOSSBazaar, an open source community whose other partners include Google, HP, Novell, and SourceForge.

As for my limited TiddlyWiki experience, I have previously looked at some of the code – while writing Ajax Patterns in 2005 I mined parts of the code for Ajax patterns. At some point in 2006, I ported podca.st to use a modified TiddlyWiki I found somewhere, which allowed user edits, though spamming forced me to restore the original silly static HTML version (there are now other solutions for server-side TiddlyWiki hosting).

In its main form, TiddlyWiki runs off a file: URL, which means it enjoys extra privileges not afforded to typical web apps, and exploiting them effectively raises a lot of unusual challenges. I’m also very interested in TiddlyWeb: “a practical, readable, reference implementation of a rigorously designed headless wiki server that may use TiddlyWiki as a user interface”. This is effectively a RESTful wiki API.

What I’m doing at Osmosoft (unlikely to be OpenSocial related) – and to what extent it involves TiddlyWiki – is still being scoped. Watch this space. Regardless, I’ll still be involved – as a separate activity – with OpenSocial and BT’s OpenSocial and widgets strategy.