Wed 6 Aug 2014 7:06PM

webdpack example

EP elf Pavlik Public Seen by 53

moving from another thread, copy:

Maybe sharing simple example I played with can help with avoiding drifting into black holes ;)

If it will sound confusing, I plan to record short screencast and already have sequence diagram for it which can make it clearer. I made 4 very simple elements:

webfingerd simply helps to discover my profile page from my email address, so having [email protected] it will return https://wwelves.org/perpetual-tripper (or any other URL I want)

webprofiled serves my Linked Data profile, currently supporting RDFa and JSON-LD
to see graph embeded in RDFa just copy source of https://wwelves.org/perpetual-tripper/ and paste into http://rdfa.info/play/
to see JSON-LD one can use simple Content-Negotiation, in terminal: $ curl https://wwelves.org/perpetual-tripper/ -H “Accept: application/ld+json” BTW HTML page with RDFa gets generated from that JSON-LD currently with mustache but I plan to yank out part of http://viejs.org to do it in nicer way

webserviced offers for now just login/logout with Mozilla Persona and discovery of Linked Data profile location via webfinger

webfingerd, webprofiled, webserviced all do http://enable-cors.org/

greeting-app just provides super basic SPA to interact with webserviced. for now I can login from browser javascript console with “navigator.id.request()”
then it sends it to webprofiled (easily hosted on different domain than one which serves greeting-app). once i do persona dance webservice will get from webfingered URL to my webpage powered by webprofiled and then get data in JSON-LD. after that it sends it to greeting-app which greets me with my name and avatar.

let’s imagine now that we replace webserviced with loomio backend and greeting-app with loomio frontend. this way i can just click ‘Login with Persona’ and it will greet me my name, avatar, know my current location, languages i speak, whatever i decide to publish in my independent homepage, in my case powered by webprofiled but someone else can just write it with text editor, use Drupal, Wordpress whatever :)

Once front end connects to CORS aware services, it can for example send my posts and comments, at the same time to my Personal Data Space and to instance(s) of loomio backend. It may make less sense for discourse type of features, but if I want to offer a rideshare or couch, nowadays I can’t easily post it to http://blablacar.com , http://carpooling.com, http://liftshare.com etc. I also can’t use my favorite trip planner app but need to deal with different human (graphical) interface to interact with ‘different’ services which in practice offer exactly the same functionality. Lately I find the last issue of big importance, imagine if you would need to use the same email client that your friend uses to receive a message (hell no!) relevant links here: http://decoupledcms.org/ & http://hydra-cg.com/

IMO having common vocabularies to express concepts we interact with ( http://schema.org & http://lov.okfn.org ) as well as common ways of specifying what interaction we can have with those resources (http://schema.org/Action & http://hydra-cg.com ) gives us nice foundation for building systems which can interoperate :)

BTW I would encourage technical folks to join http://www.w3.org/wiki/Socialwg and less technical ones to join: http://www.w3.org/wiki/Socialig

I hope this post didn’t run to long or got to confusing…


elf Pavlik Wed 6 Aug 2014 7:07PM

@bobhaugen http://bit.ly/1sd6cVk
once i setup live demo i'll add proper URIs for requests + record screencast


Bob Haugen Wed 6 Aug 2014 7:16PM

@elfpavlik - thanks for the diagram. Forgive my ignorance, but I did not get the webdpack thing...?


Bob Haugen Wed 6 Aug 2014 7:40PM

@elfpavlik - Wait a minute: what is this StackEdit magic? You created a gist in github using markdown and StackEdit presented it as a sequence diagram?
Looks like they are out of beta:
Love at first sight! I need to get out more...


Bob Haugen Wed 6 Aug 2014 7:41PM

@lynnfoster - Elf moved the discussion of that stuff he has been working on over here...I know you liked it.


elf Pavlik Wed 6 Aug 2014 7:45PM

please forgive me cryptic names ;)

lately i like to distinguish between:

  • human interfaces (frontends) which run on local devices (in most cases with graphical interface), which i call apps
  • processes running most of the time remotely (but can also run locally) which don't provide human interaction interface but only APIs (backends), i call them daemons

while nowadays many system couple single frontend (app) with single backend (daemon), i like to have possibility of connecting from single app to multiple daemons, CORS comes handy here for web browser based apps. at the same time i want that each of those daemon (backends) allows interaction from all kind of apps (frontends). Similar like with email, everyone can use different client and participate in mailing lists hosted on any number of servers.

i used similar approach while experimenting with: http://dspace.elevate.at/

in my example you have single app: greeting-app and 3 daemons (not counting Persona IdP), here it gets more confusing since i use multiple sets of daemons to construct various backends, terminology - work in progress!

to give you another example i played with lately, i replaced greeting-app with my fork of http://mdwiki.info (app) and extended webserviced into etherwiki

we want to edit content served with mdwiki using etherpad, so we have 2 apps:

  • mdwiki fork
  • etherpad frontend

and few daemons:

  • etherwiki (extended webserviced)
  • etherpad backend
  • webprofiled + webfingered (+ optional persona IDP) -- such set of 2 (or 3) deamons, can come as a bundle deployed independently even for each person, if we want to go really indie and everyone hosts one's own identity

interaction happens in following way:

  1. mdwiki (fork) provides interface for the wiki, each page has additional edit button
  2. once i click edit, it
    • makes request to etherwiki from new tab
    • etherwiki creates new etherpad (on some ep-lite backend) and pushes content there
    • etherwiki redirects this new tab to etherpad frontend (ATM served by the same remote ep-lite) with newly created pad
    • etherwiki subscribes to changes in etherpad
    • mdwiki (fork) subscribes to etherwiki to also get those updates and show preview of content rendered to markdown

this way each participant can have two tabs one with etherpad for editing and second with mdwiki for preview

#TODO sequence diagram for that + screencast with demo!


elf Pavlik Wed 6 Aug 2014 7:52PM

@bobhaugen kudos for discovering and using StackEdit go to @jonrichter , we did this diagram while he explained me how it works :)


Bob Haugen Wed 6 Aug 2014 7:57PM

@jonrichter - not https://stackedit.io/ ?
But I still love it!


Bob Haugen Wed 6 Aug 2014 10:30PM

@jonrichter - searching thru https://github.com/almereyda?tab=repositories for the source for this magic...?

On another tangent, found this: https://github.com/almereyda/Open-Kanban

Sorta in our ballpark. But we want kanbans in software.


Josef Davies-Coates Thu 7 Aug 2014 10:21AM

@bobhaugen I searched for stackedit github and this was top https://github.com/benweet/stackedit - is that what you are looking for? :)

btw, I don't think any of them are open, but have you seen https://waffle.io/ https://www.zenhub.io/ https://huboard.com/ - they all make trello-like kanban boards out of your github repository which is pretty nice.

(https://waffle.io/ is being used by this Open App lot and I just found the other two trying to find that again! :P)


Bob Haugen Thu 7 Aug 2014 11:16AM

@josefdaviescoates - thanks.

https://github.com/benweet/stackedit might not be what @jonrichter was talking about. He said,
"make sure to use http://stackedit-beta.herokuapp.com ".

Kanban boards are nice, but we are also developing kanban-like signals for P2P coordination.


Bob Haugen Thu 7 Aug 2014 8:27PM

@josefdaviescoates - is the OpenApp gang still using waffle.io? I thought they had quit...?


Josef Davies-Coates Fri 8 Aug 2014 12:41PM

@bobhaugen no idea if waffle.io actually still being used by this group but it was in this group that I first heard about it - perhaps they were just having a play? /me shrugs

re: stackedit, I'm assuming http://stackedit-beta.herokuapp.com/ is just the stackedit code @jonrichter has got up and running himself there for people to try it out, but I could be wrong :)


Bob Haugen Fri 8 Aug 2014 12:47PM

@josefdaviescoates - I didn't see the lovely sequence diagram feature in the github repo, but then I could be blind. I assume @jonrichter will set us straight...


Joshua Vial Fri 8 Aug 2014 10:24PM

we're using scrumdo for the cobudget-ui app and I'm using waffle lots for dev academy.


Jon Richter Tue 19 Aug 2014 4:39PM

@bobhaugen @josefdaviescoates

When you go to StackEdit.io and use the # menu to access the About page, you'll find the link to StackEdit 4 beta in the upper right of the overlay.

The Herokuapp is therefore the "official" deployment for its next version. Which eventually includes the flowchart and sequence diagram JS.

Huboard is OSS, too: https://github.com/rauhryan/huboard .

Until I have proper star management at GitHub [1] you can scan my Stars [2] for two more GitHub-based Kanban integrations somewhere near Huboard. Also [3].

[1] https://github.com/bollwyvl/fragile/issues/10
[2] https://github.com/stars/almereyda
[3] https://github.com/stars/almereyda?q=kanban


Bob Haugen Tue 19 Aug 2014 5:14PM

Thanks Jon.


Bob Haugen Tue 19 Aug 2014 5:41PM

@jonrichter (or anybody) - I'm confused about something. Do you know how the word "kanban" changed from being a production coordination signal to being a visual display of information?

I worked in manufacturing and supply chain systems when pull signals were revolutionary. Kanban at that time meant the signals, which were usually either cards or labelled tote bins. But they were one small part of the Toyota Production System. Now they are Kanban Boards, and according to this, seem to encompass a whole system. http://agilelion.com/agile-kanban-cafe/open-kanban

What did I miss? (I also lived through most of the development of agile software methods from the beginning when it was just a hint in some Kent Beck emails, so it's not that...)


[deactivated account] Tue 19 Aug 2014 10:53PM

@bobhaugen Underneath it all, Kanban is a system, as you say. However, there has been liberal interpretation of the system (particularly by the "Lean" people), which has resulted in the various display models. For those who don't know, Kanban works by constraining work in progress (WIP) by using a "pull" mechanism rather than "push". The constraint can be represented as a simple number, but many prefer to represent it using spatial means. For example, if you wanted to limit WIP to four jobs, you set up cards (representing jobs) that are a fixed size and you create a box that is only big enough to hold four of them.

To many people, their only exposure to Kanban is the visual representation, which they are able use without understanding the underlying constraint mechanism. Hence, many misunderstand Kanban as being a simply information visualization tool, rather than a system.

I think that this is how the evolution occurred, but I'm afraid I cannot say that I've been studying this evolution too closely, so I may have missed some key steps.


Bob Haugen Tue 19 Aug 2014 11:00PM

@craigtaubeschock - that all makes sense to me (as an evolution of a concept, but in the original TPS, kanban was not the system itself, it was a small but important part of the system. Now it has apparently become the name for a system, and the original meaning of a pull signal has apparently been lost). (Edited that paragraph to clarify what made sense to me and what did not.)

The other part of pull signals, besides the limit on WIP, is the coordination of processes. A pull signal tells me to do something. Without a pull signal (if I am working in a pull system), I clean the work station or make some other improvements. You can generalize coordination signals, too. For example, something went wrong. Something new is happening. Etc.


Jon Richter Wed 20 Aug 2014 12:26AM

Just for completion, there's another GitHub Issues Kanban board called TaskTub.

Additionally, I can also confirm people get really confused with Kanban boards if they don't know about the Kanban methodology, which means, if people are thrown into using a Kanban board, most popularly Trello, without proper introduction to the left-to-right-workflow and all those details, then the boards will get stuck at some point, as seen in MMM, because the comments conversations will just spread across many cards and therefore become untraceable, different than with Discourse.

The truth I suppose lies somewhere inbetween Trello, Gingkoapp, Federated Wiki, Digital Karrabirr (@elfpavlik ?), Rhizzoma, Metamaps, Metacademy, TiddlyWiki, Wave, Etherpads, IPython, Wagn ... etc. pp.

Please tell me, which was the other development methodology that had been mentionned somewhere else before again, in opposition of lean methods? And what's the difference there?


Jon Richter Wed 20 Aug 2014 12:53AM

@richarddbartlett Will the new Angular Loomio client allow refactoring of conversations (Yes, I'm looking at Discourse!)? This topic for example evolved a little ...

PS: MarkDown ;) > http://sofish.github.io/pen, http://www.zenpen.io, http://mattduvall.com/grande.js, http://markitup.jaysalvat.com ...


Richard D. Bartlett Wed 20 Aug 2014 1:05AM

@jonrichter I don't understand the question?


Bob Haugen Wed 20 Aug 2014 11:59AM

I see here that even the protagonists of Kanban as the name for a lean software method are confused about the name: http://agilelion.com/agile-kanban-cafe/what-is-kanban

So now they also have "Kanban Thinking", and somebody has written a book about it. It has become a Brand. A long way from a simple pull signal.

@jonrichter - yeah, probably my fault that the topic "evolved", or "devolved", or whatever. Sorry...I'll get back with the program...


Mikey Thu 21 Aug 2014 8:57AM

@jonrichter: if i understand what you mean, you can somewhat refactor the conversation by editing the discussion context at the top. you can also create a new thread. what functionality would be better (is in Discourse)?

@bobhaugen: don't worry about getting off-topic, i really appreciate how the topic evolved. :) although i wouldn't mind a new discussion thread with the relevant discussion copied regarding kanban, so we don't derail future discussion of elf's great work.


Bob Haugen Thu 21 Aug 2014 12:59PM

@ahdinosaur - what's the easy way of starting a new thread with the relevant discussion copied over and then deleted here? everybody needs to do their own comments? Or can one person do it all? I understood @jonrichter to be asking for a one-swell-foop method of doing that to refactor conversations. Right, Jon? Or maybe a way to re-assign one or more comments to a different thread?

(oops, now I am starting a New Feature thread...)


elf Pavlik Fri 22 Aug 2014 7:23PM

haha, we just had a discussion yesterday with James Lewis and Scott Sadler about using comments / discussion as simple case for distributing data. I even suggested trying to hack on loomio and keep in mind open-app development! not sure if we will get on it but who knows... one thing we find very attractive relates to possibility of conversation existing in multiple contexts, kind of improvement over cross posting! 'forking' threads also sounds like a great feature, @jonrichter do you know some kind of screencast showing how discourse does it?

i'll try in next days to get on doing proper sequence diagrams for webdpack plus some simple screencasts

i also plan on doing sequence diagram for http://webmention.io/ , especially if we talk about decentralized conversations + newly created W3C SocialWG will most likely work with it as Tantek Çelik, long time #IndieWeb hacker acts as group chair (together with Evan Prodromou of StatusNet and now http://pump.io/ fame)


Jon Richter Mon 22 Sep 2014 2:38AM

@richarddbartlett @ahdinosaur I'm sorry for being so cryptic. And sorry for comparing Loomio to Discourse, but it just raises the stakes on how online communication, IMHO, has to be imagined:

You can pick certain posts within a thread and move them into a new one or merge them into another existing discussion.

Then, the second trick would be to federate conversations, webmention like, between different "conversation graphs" (as I like to refer to forums/conversation software internally) and make them easily traversable.