Pipelines: plumbing for the next web Pipelines: plumbing for the next web Ian Forrester backstage.bbc.co.uk cubicgarden.com
Aug 17, 2014
Pipelines: plumbing for the next webPipelines: plumbing for the next web
Ian Forresterbackstage.bbc.co.ukcubicgarden.com
Overview
• In depth discussion of the abstract concept of flow *
• Not discussing the merits of UNIX or XML pipelines
• Assumes an understanding of a pipe and pipeline
Imagine. . .
• Processing data from your local machine with data on-line
• Chaining together services you use regularly• Automating the process so it ran at convenient
times• Not requiring programming knowledge• A process that is open, extensible and sharable
The Landscape
Hot on the Horizon
• REST APIs are dotted all over the landscape• Web applications are opening up• Useful web services with revenue models• RSS and ATOM feeds are becoming ubiquitous• Desktop search is standard in Vista and OSX• Widgets and Gadgets are becoming useful• New projects to organise desktop meta-data
REST XML API Everywhere
REST XML API Everywhere
Opening Up the Silos
Opening Up the Silos
Web Services with Revenue Models
Ubiquitous Feeds
Widgets and Gadgets
Desktop Search
Semantic Desktop projects
Semantic Desktop projects
File System Meta-data
How People are Building Things
• Particls• Automator• Yahoo Pipes
Touchstone / Particls
• Particls: An alerts/updates and attention management platform
• Ingests many different input sources via input adapters
• Works out importance of new information to the user and displays a proportional alert
• Alerts take many forms based on urgency and relevancy levels
• Alerts are controlled with output adapters.
Particls
A Pipeline Application
XML Configurations
Outline Processing Markup Language (OPML)
Attention Profiling Markup Language (APML)
Particls Internals
Learning from Particls
• Particls Limitations:• Main purpose is an alert and attention engine• No standard underline definable language• Not sharable outside of the pipes application• Choice of inputs and outputs limited• No automation• Semi-proprietary
• Particls Highlights• Breakthrough web application• GUI has all the right elements• Form level abstract is great• Cloning pipes is very smart• Pushing new attention markup standard
Automator
• A beautiful graphical user interface for Applescript
• “Accomplish all of your time-consuming, repetitive manual tasks quickly, efficiently and effortlessly with Automator Workflows. It’s simple to create custom Workflows just by dragging items, pointing and clicking. Perform the task once using your Automator Workflow or many times — even share Workflows with friends.”
• Apple.com
Apple Automator
Automator
Applescript
Automator Internals
Learning from Automator
• Automator Limitations• Proprietary• Requires Applescript• Underlying definable language non-XML based• Works better as automation software• Not natively web enabled
• Automator Highlights• Break through desktop application• Powerful Gui• Form level abstract is great• Great automation• Sharing of scripts very simple• Choice of inputs and outputs extensible via code
Yahoo Pipes
• New beta service that enables users to create mash-ups with a graphical user interface
• Mash-ups can be saved so other people can edit and re-use them
• Still geeky but easier than creating mash-ups by coding
“a milestone in the history of the Internet" • - Tim O'Reilly
Y! Pipes
Y! Pipes
s
Y! Pipes
Y! Pipes Internals
Learning from Y! Pipes
• Yahoo! Pipes Limitations• Only has access to data and content on-line• No XSL transformations• No standard underlying definable language• Not sharable outside of the Y! Pipes application• Choice of inputs and outputs limited• No automation• Proprietary
• Yahoo! Pipes Highlights• Breakthrough web application• GUI has all the right elements• Form level abstract is great• Cloning pipes is very smart
Fitting the Puzzle Together
• Combine:• Underlying XML definitions of Particls• Slimline and smooth look of Particls
Form control of Automator• Power and control of Automator• Visual pipeline GUI of Yahoo! Pipes• Automation of Automator• Sharing of Automator and Yahoo! Pipes
flow *
So what is flow*?
flow *
flow *
The flow * System
Adding Widgets to the Mix
Separate the Desktop API
But. . .there is no flow *
• flow * currently does not exist• flow * is not just an application• flow * is not just a service• flow * is a combination of good practices served up
for the power users
My Current flow * Setup
More Configuration Ideas
More Configuration Ideas
More Configuration Ideas
Flow* is. . .
• The glue that allows you to break out of the silos on-line and off-line
• The ability to pipe services together using their APIs and feeds as though programming code or interacting with the site directlyXPROC documents with namespaces elements (User-generated Pipelines)
• Three levels of abstraction in one file
Core User-generated Pipeline Principles
• Definable• Core pipeline defined as XML
• Graphical• Levels of abstraction from the XML
• Standard• Using the new W3C standard XPROC
• Shareable• As easy to share as a OPML file
• Open• Can be extended and plugged into widget engines
• Non-proprietary• No lock-in, uses standard web and XML technologies
Three Levels
Three Levels of Abstraction
Three Levels of Users, One Purpose
XPROC Level
Pipe GUI Level
Task Level
Pipelines Options
The Current Landscape
Particls: An Attention Platform
Automator: Strictly for OSX Only
Y! Pipes: No Access to the Local System
Y! Pipes: Could Access Local System
Yahoo widgets authenticator
Securing the Desktop and Cloud
Y! Pipes: All the Right Elements
Microsoft just around the corner?
Pipelines
User-generated Pipelines
• Pipelines generation is only limited by our own creativity and the APIs available
• XPROC feeds Flow* like Javascript feeds Greasemonkey
• User-generated Pipelines could be...• XPROC+SVG+XFORMS• XPROC+XUL• XPROC+RDF+XFORMS• XPROC+FlexML• XPROC+XHTML
Pipeline Example
Pipeline Example
Complex Pipeline Example
Complex Pipeline Example
Complex Pipeline Example
The Ecosystem of the API
No fully functional API?
• Forget it now... your dead
Described in XPROC (part 1)<?xml version="1.0" encoding="UTF-8"?><p:pipeline name="encoder example" xmlns:p="http://www.w3.org/2007/03/xproc"><p:input port="video" href="file://///127.0.0.1/my videos/"/><p:choose name="free-or-pay"><p:when test="form:///encoder.dropdown='yes'"><p:output port="http://www.amazon.com/ws/ec2"><p:parameter name="amazon/ec2image" value="video-encoding"/><p:parameter name="amazon/encodeto" value="flv"/><p:parameter name="amazon/encodeto" value="h.264"/><p:parameter name="amazon/encodeto" value="mpeg4"/><p:parameter name="amazon/account" value="form:///amazon.account"/><p:parameter name="amazon/password" value="form:///amazon.password"/><p:parameter name="amazon/accesskey" value="form:///amazon.accesskey"/><p:parameter name="amazon/piority" value="1"/></p:output></p:when><p:when test="form:///encoder.dropdown='no'"><p:output port="http://www.heywatch.com/"><p:parameter name="encode" value="flv"/><p:parameter name="encode" value="h.264"/><p:parameter name="encode" value="mpeg4"/><p:parameter name="login" value="form:///account"/><p:parameter name="password" value="form:///password"/></p:output></p:when><p:otherwise><p:output port="local://start.loocal.application" href="file://///127.0.0.1/C/program files/mediacleaner/mediaclean.exe"/></p:otherwise></p:choose>
Described in XPROC (part 2)
<p:choose name="stoarage-options"><p:when test="form:///storage.selector='amazon'"><p:output port="http://www.amazon.com/ws/s3"><p:parameter name="amazon/account" value="form:///amazon.account"/><p:parameter name="amazon/password" value="form:///amazon.password"/><p:parameter name="amazon/accesskey" value="form:///amazon.accesskey"/><p:parameter name="amazon/bucket" value="form:///amazon.bucket"/></p:output></p:when><p:when test="form:///stroage.selector='bliptv'"><p:output port="http://www.blip.tv"><p:parameter name="login" value="form:///bliptv.account"/><p:parameter name="password" value="form:///bliptv.password"/></p:output></p:when><p:when test="form:///stroage.selector='youtube'"><p:output port="http://www.youtube.com"><p:parameter name="login" value="form:///youtube.account"/><p:parameter name="password" value="form:///youtube.password"/></p:output></p:when><p:otherwise><p:output port="result" href="ftp://user:[email protected]/myvideo/"/></p:otherwise></p:choose></p:pipeline>
What happens next?
To do
• Build flow* using a Rich Internet Application language like XUL or Apollo
• Write an Authentication layer for the APIs – Open ID based broker system for APIs?
• Decide on one way to write User-generated Pipelines which works for flow*
• Write schema for namespaced extensions into user-generated pipelines (XPROC document)
• Investigate the semantic desktop projects• Explorer W3Cs draft Widget specification
Summary
• User generated pipelines are viable for:• People wanting automation• Non-programmers• Power users who can't be bothered to load up their IDE
• Flow* (although only in early development) is very powerful
• All the elements are in place, it just needs a developer or company with a some vision
Final thought
• Mashing-up, remixing, sharing is part of our culture
Thanks for listening, questions?
• Ian Forrester - [email protected]• http://www.cubicgarden.com/blojsom/blog/pipelines/
• Flickr pictures : Creative Commons Attribution-NonCommercial-NoDerivs License• http://www.flickr.com/photos/andidfl/• http://www.flickr.com/photos/_f1guy68_/• http://www.flickr.com/photos/coolinbox/• http://www.flickr.com/photos/belljar/• http://www.flickr.com/photos/dgbalancesrocks/• http://www.flickr.com/photos/whinger/• http://www.flickr.com/photos/wasabicube/• http://www.flickr.com/photos/jacy