What is LRN? What are Webcomponents? Why is it the future?

If you’ve been paying attention to twitter, I’ve been rambling on and on about 1 thing lately. #Webcomponents / #Polymer. Depending on the tweet I use one or both. It’s not that I’ve left the #drupal community or converted elmsln over to a different platform; it’s that I’ve found a design paradigm that I can’t un-see.


Let’s back up a bit.. What are Web Components? Webcomponents (of which you can find many on the webcomponents.org community site) are moving along as a recommended W3C specification (hasn’t 100% stabilized yet but it’s been in the works since about 2014 when Google really started pushing the idea and currently all major browsers can support them via polyfills or javascript filling the gaps). In other words, really smart people that meet to discuss the direction the web should go have said that all browsers should natively support the concept and are largely in agreement about the way to do it (very different from when they were proposed in 2014 with no route to implementation).

Webcomponents aren’t actually 1 standard, they are 4 standards that when paired together, make web components possible. If you are interested in the 4 specific standards you know how to google but TL;DR version:

  • Webcomponents are made up of Custom Elements that are Imported into the page
  • This is a fancy way of saying a <custom-html-tag-like-this> can be added to any webpage like this <link rel=”import” href=”../custom-html-tag-like-this/custom-html-tag-like-this.html”>
  • Modern browsers implement a “shadow dom” approach meaning that it renders the contents of custom-html-tag-like-this.html meaning that it doesn’t need a compiler like Angular or other web framework in order to render (which means much faster then them at doing so), then at run time sees the <custom-html-tag-like-this> tag and goes “Oh, I should throw this in its place!”. Shadow Dom also enables “scoped CSS” which basically means that elements present themselves exactly like they do in documentation as opposed to influenced by global CSS.
  • Browsers have all agreed (to varying degrees of implementation thus far) that these make sense
  • This isn’t really that different from the HTML5 <video> tag as far as how the browser processes that to build a player to run the video

What’s in a custom-html-tag-like-this.html file?

That’s the best part, everything required for just that single tag to do it’s magic. So you get a very clean file that has dependencies (since webcomponents can reference other webcomponents), css for this component, normal looking html (though it could also be other <custom-tags-that-you-made> since they stack just like normal HTML), and javascript to define custom properties and functions.

We’ve been working on many but I think lrndesign-blockquote is one of the most straight forward examples we’ve produced thus far. This allows us to wrap the <blockquote> element in a structured way so that we can provide new options / attributes. This will allow our end users the ability to write something like:

<lrndesign-blockquote decorate quote=”It was the best of times, it was the worst of times” citation=”An old dusty book”></lrndesign-blockquote>

and have it show up in the browser like it does here.


So now that we have working knowledge of what a Webcomponent is we can jump ahead to Polymer. Polymer is a google backed community / open source project that effectively helps solve the chicken and egg issue of developing against new standards:

  • Chicken: Developers will only implement the standards browsers have
  • Egg: Browsers only implement the standards developers will use

To combat this (and provide general efficiency when building) Polymer has created what are known as Polyfills, or javascript that fills in the gaps in browsers to support different aspects of a specification. These Polyfills progressively enhance IE 11, Edge, Firefox, and Safari in order to make them able to support all aspects of the Webcomponent specification as best they can. The idea being that these training wheels can be taken off / modified as the other browsers implement the 4 parts of the webcomponent specification.

You didn’t mention Chrome or Opera

Correct, because all aspects are natively implemented in both which means your webcomponents you produce run crazy fast in Chrome and Opera, as if it’s no different from normal HTML!

Polymer also comes with a Command Line Interface and some other efficiencies when building webcomponents that make it much faster then building without. Basically a single command of polymer init in a blank folder asks you prompts and then starts downloading and positioning code in the right places.

Then running polymer serve –open and polymer will start a mini-webserver to serve up your element as a documentation site like this one. It’s pretty damn magic and incredibly easy to get oriented to.

So this is all on your generally less-technical ELMS:LN blog because…

Because we’re working actively on building out our own series of custom HTML elements intended for ELMS:LN but we are planning and developing them in a way that they will be usable by any educational or non-educational solution. These tags will all be open source individually and packaged in a way via our ontology that allows for remix and reuse in amazing ways.

LRN – Webcomponents for learning

We’ve prefixed these tags with three letters to make them very easy to read and say as a sentence: LRN. This also is abstracted from “education” so that we can share terminology and design needs with training and mooc communities of practice. You can see demonstrations of our current tags we’ve built through our webcomponents.org organization page.

lrn is broken into 4 levels of tags which you can read about in our ontology documents. These are:

  • lrn – an instructionally focused group of elements
  • lrndesign – a design focused group of elements
  • lrnsys – a behavior / system layer group of elements
  • hax – lrnsys tags which are more repurposable then even lrn so named differently

Together, we can build a well documented style guide for the expression of educational concepts that will have no system specific boundaries. These elements can be loaded into any system connected to the internet so long as the tag definitions are imported. In ELMS:LN we are obviously doing this via a Drupal integration, but there’s nothing stopping us (or you) from running these in any other solution you can come up with!

Design elements (lrndesign) are abstracted from logic (lrnsys) and purpose (lrn) driven elements. Instructors / instructional designers would then be able to write an html tag that has the exact purpose of what is instructionally significant about what they are trying to write instead of constant translation of concepts and assets to code tags. It also will allow us to build a method of content construction we are code naming HAX (short for headless authoring experience).

Video showing our shared future

This is a video I shot just as I was about to make a new webcomponent. It jumps in right at the point that I’ve copied an existing one and renamed it, so it’s a bit of jumping around talking through what works and how it works while at the same time me just coding / fixing some issues that pop up. We’re always looking for people to join us both as developers and idea people sharing how they could utilize something like this best for their needs. Let us know what you think!


University API Un-conference Debrief

I recently attended a new conference (well new to me anyway) called University API Un-conference. This is the 3rd time it’s run at BYU and is sponsored by the CIO / BYU Enterprise Architects group. They didn’t ask me to write this but in favor of transparency they sponsored me coming out to talk to expose attendees to the ideas driving ELMS, especially in areas of xAPI.

But anyway, I’ve been to plenty of “unconference”-ish events given that Drupal is usually pretty informal, hosting Birds of a Feather (BoF) rooms where anyone can write down a topic and meet informally. Room number, whiteboard, and go. I was pleasantly surprised by the quality of a facilitator lead unconference!

We started the day writing a brief topic descriptions on big sheets of paper, then we sat in a circle and gave like a 20 second pitch of what our topic idea was. Then we put them up on a board based on room and timeslot we wanted. It was an interesting collaboration and meet and greet in one. There were also ground rules associated with no worrying about who was in your session or how many and also not getting offended if people moved around.

Topics were all over the place. From university API (they have an API-frist architecture that all systems integrate with, it’s pretty incredible in and of itself), “help me learn about API” style working sessions, pet projects, LRS development, Swagger.io documentation talks, Event management APIs, ELMS / OER family of topics; really anything edtech builders it was there. As I expected, there were several past Apereo attendees / member organizations including Duke represented. I figured as much because I felt incredibly comfortable with the audience, people knew how to build things instead of just buy them, and the open culture really creates a vibe not present at some other edu events.

My big take aways:
– Swagger is something I really need to learn more about. BYU has a system similar to the elmsln read the docs integration where documentation can be ingested and replicated in a drupal site (funny, same workflow, same starting point, same endpoint, different bridge code to do it). It would really help us with our Polymer elements long term I think since it’s for building and documenting APIs clearly.
– Tone is incredibly important. During an OER discussion, I mentioned the notion of overthrowing past governence structures (said much more flippently then this even) and someone challenged me as to what I meant by it. She then described what she thought I was saying, which was the same thing basically but sounded way less threatening. This stuff only happen in Open and when all parties are willing to question and be questioned as equals.
– API centered design, several years after being put into practice, is something incredible to behold. Day 1, it can be painful and those painpoints were expressed, but now a few years out it’s rather amazing the kinds of integrations / solutions BYU can craft as a result of this approach.
– The idea of an “event” / “activity” API endpoint is something I’ve never thought of before and something they have working very well (even if it’s early on) at BYU. The idea is that any action that you want to track / report of any kind gets sent to an events endpoint. Anyone can create a type of event / action and supply the data to back it up
– Sovrin – I’ve never heard of it before but Sovrin the technology for global distributed identity (think blockchain but for identifying individuals securely across any solution out there) is a pretty awesome concept that’s gaining some traction. There were several discussions around the idea of Sovrin the technology and Sovereignty as individual student ownership of data and empowering students to be able to take their credentials / skills / badges with them. They are calling this Learner Profile and while it’s still in the early dreaming phases, I understand why we see eye to eye on so many things. Once you start thinking in terms of redecentralization, you can’t unthink it.
– I love hallway / lunch conversations. I met someone who had a PhD in the History of Technology; which is an STS topic that’s right up my alley from my Information Altruism work.
– Get off the island is more then just code – I was able to provide a unique perspective to attendees (and them to me) as a result of my bulk of experiences. Several times I referenced the Writing conference I attended (cause no one there did), Apereo / Sakai work (which I’ve been to and others have / use Sakai so shared experience from multiple perspectives), and being a hard-core Drupal developer when many people were sysops; which gives me a unique perspective from the “inside” of a very different open source community from the open culture of the event. Overall, this really validated that I need attend less Drupal events with people I’m immediately at ease with and instead try and search out these hidden gem events.

I don’t require it, but wow does it feel good sometimes. It was very nice to be some place with people I didn’t know, who didn’t know me or my work, and have them see the totality of the work our team has been doing (both PSU college centric and ELMS:LN developer centric) and be floored by it. It’s funny, I kept saying how blown away I was with the level of open culture exhibited and the API infrastructure they all were apart of, while at the same time people kept telling me my work was the first sign of a way forward beyond the thinking of the LMS without breaking the student / faculty cognitive load issue of multiple solutions. I had a couple people tell me this was the first tangible example of a NGDLE they had ever seen and I had many long conversations
Other things:
– People are looking for what OERSchema provides but not realizing it. In describing the problem it solves and demo’ing it to a small group they were very impressed with the idea. Always fun to present someone else’s work and have it validated.
– We’re on the right track with Polymer, BYU’s been doing it with different components in the form of straight up webcomponents for some time and have been happy with the results.
– ELMS:LN is maturing to a point that I can present the idea at a high level and delve into the trenches and not have to hide anything along the way

Going forward / Next steps
– Hopefully we can get another voice from Duke to vouch for us to the Open Apereo foundation board of organizations. We need 1 more voice to say ELMSLN should be accepted into their incubation program. This would help the project gain visibility but more importantly provide our community mentorship in what practices we could be doing a better job of with getting people on-boarded and sustain efforts.
– We need to do a better job justifying xAPI in the age of Caliper among some people, but because of our worldview with regards to data (anything is a course, anything an action, anything learning, not just what happens in higher education LMSs) xAPI will always be more flexible. It might be messier, but it’s going to always allow for more flexibility in design over Caliper. This isn’t to say we shouldn’t be open to supporting Caliper, but it might be more of a filter that converts xAPI statements into Caliper ones based on skimming off the ELMSLN context properties we’ll mixing into xAPI to extend it.
– Standards all the things; We need to work more on the external tool integration aspect as well as supporting LMS APIs natively. This would be the next step in suggesting this system is higher then the LMS in what it can do and what it’s meant to provide as an ecosystem driven experience.
– Libraries need an OER hub / routing solution: Members of Duke & BYU had an interesting perspective on the OERSchema / Git ingestion workflow for markdown files. What if a library was the curation engine for OER to vet it for quality, and then much like an old library, provided an open bookshelf of sorts that people could checkout the books from. In this connotation, checking out a book would be cloning the repo so now you have a copy. This would allow distribution and help ensure knowledge never dissipates (a critique Michael Collins has of Database driven / single point blogging platforms / silos). OERSchema becomes icing on the cake as it would incentivize faculty to not just tell people to draw from an online text but allow them to legally and easily pull the book apart and remix it into new forms

Overall this was an awesome event and everyone was very approachable. Thank you all so much more having me and I can’t recommend this event enough and hope it comes out East Coast (Duke tossed out the idea of hosting toward the end of the year which I’d be up for coming down to).


I’ve written before about the journey I’m on. How I see our work, where I think it’s going and some of where it’s been. Call it high altitude, conference high, I don’t know what; but I had to do stream of consciousness for the thoughts in my head. This is what spilled out, turned into paragraph form instead of 140 characters at a time

I was in deep thought / meditation / prayer one day in 2014. I said, my work life has no real purpose, the thing I do every day at work, it’s just that, work. It only benefits a few 100 people, which is neat; I contribute code, help people in small ways which is great, but not lasting.

In that quiet. I found clarity. I found a design for what I should be doing, abstraction beyond abstraction. Designing for the unknown and encouraging the unknown, designing to be able to capture and sustain innovative efforts instead of losing them in one-offs and white-boards. A problem that everyone seemed to articulate but no one could recognize an answer it. I said this doesn’t exist, and I couldn’t unseen the picture in my head. A series of interconnection following the same pattern. A fractal in my mind.

I had to pursue it. I drove myself into the ground physically working towards it while trying to be a good husband and father to two under age three; struggling to be a good family member in the ways I knew how. The parent dilemma as I’ve been told it’s called. The vision was a huge time blackhole.. and the more I talked about it, the more I realized no one got it. I was alone in my own head, no one to look to for advise, no one to collaborate with, no one to encourage my idea. They couldn’t see the picture in my head or understand why as a concept it would be useful.

I had a talk accepted at a small event in Ohio, 100s of miles from where I work. I was really excited to talk about this idea and show, something, anything that would start to demonstrate it. My heart sank as only 5 people we in attendance for that talk, 2 of them people from back home that were good friends of mine. I swallowed and said “screw it, it’s still worth it” and laid out the vision, starting with my moral obligation to my kids to build a better world in whatever way I knew how.

And for the first time in a year, they got it. People I knew and had been explaining this to for months finally had their eyes opened to what I was trying to express. This was early 2014. Later that year, I had a talk accepted at DrupalCon (1st time ever). I laid this concept out and the state it was in. There were 100 ~ 120 people there, and there was interest and some excitement… but nothing happened.

I got accepted to OpenEd 2014. I presented on this idea as being key to laying the groundwork for open publishing systems, an OER factory and the way of liberating our institutions knowledge silos while achieving their public-good mission we are all put in place to serve. A friend from twitter tweeted “LOOK AT THE PASSION” as I was practically brought to tears describing the thing in my head to a group of people that would be eager to hear about it. I had a few questions, some good ideas and enough energy to generally sustain me emotionally afterwards. But still. Nothing happened.

I dug deeper then I knew I could and took my game to another level as a developer. I went from being a simple Drupal developer with dozens of contributions to a Full-stack developer versed in Javascript, CSS, Bash, Drupal, PHP, GIT, and any library I could get my hands on that I knew I’d have to figure out in order to achieve my dream. My friends started to notice the change in me. That this incredibly unserious, sarcastic late 20s colleague, wasn’t just working to get the job done; he believed in something. And finally, after years in the dark and almost 2 years of rambling about this vision… something happened.

My friends and colleagues started to believe in what I was talking about. They saw how passionate I had become about not just code and donation of effort. They brought their code, their time, their ideas, their take on what I was doing, and together, we all started to make it our own. They started looking into jobs they could take where the jobs could be accomplished using the approach I was talking about. At times, they took opportunities paying less money and having less job security to get a chance at working on this vision. They started working after hours, nights, weekend commits would roll in, issues would be discussed at social gatherings. And not only did the vision become shared, but our friendships grew stronger. “They” don’t work for Me or “My” project, we work toward our shared vision of the world we can make possible. Better, together, forever open source.

From those days, and meetings and blog posts, and videos, and code commits, we started to slowly attract adopters. People could see not only that this was an interesting idea, and that they wanted to play with it, but that they actually could play with it. The vision was becoming a real, tangible thing. No longer a dream in my head, our diagrams on our whiteboard, but a real thing people could touch and experience, people who had no idea what it was starting to grasp the concept in less and less time. My tone changed, my duration of session to get to the payoff changed. Hour long talks could be consolidated into 30 minutes, then 10, then 5, and now an elevator pitch with visualization to back it up.

Excited, I submitted for OpenEd as did a friend, but we got rejected. And for the first time ever, I said “I love and support this event, I’m going anyway” (something difficult to justify financially to the same degree as presenting as unfortunate reality). I listened attentively, picked up new ideas, new ways of speaking, new design patterns / use-cases I hadn’t thought of and others that were validated by going. The whole time I worked. And people in the audience, a solid mix of builders and users of OER, kept peaking over my shoulder, saying “Ooo.. what’s that?” seeing a terminal window, code, and a webpage that looked like something worth OOO’ing about.

Then, I sat in a session by people I respected a lot at a technical level. A random person in the audience asked a question about LRS technology. The answer, while valid, wasn’t really in depth. He seemed genuinely interested in seeing an LRS. So, as an LRS is part of ELMSLN (via Learning Locker though any will work), I walked over and asked if he’d like to see the one we use. As I started to show him learning locker and where our statements came from, he kept saying “No no, wait, what’s that, show me that system”, referring to ELMS:LN. I detoured a bit, showing him ELMS integration w/ Learning Locker via xAPI, how well that works, how early we were in doing it but that it’s the way forward. He gave me his card, said we needed to talk some time (a line I’ve heard too many times to ever get excited about beyond validation in that moment of work).

And an email showed up a day later, asking to do a little Skype call. Cool I thought, I’m always happy to show people Learning Locker.

We got on the call, and then another with more people, because little did I know, I wasn’t there to show them learning locker, the CIO’s office of BYU was extremely interested in ELMS:LN and my design methodology as it related to xAPI for distributed learning profiles. We discussed how we all envisioned using a distributed series of solutions controlled by the institution (or at times, not, just recommended) and developers to improve upon, bend and eventually break the LMS paradigm of singular, giant systems into a lego grid. We talked xAPI and how it’s critical in achieving this objective.

Someone got it. From no one in months, to someone in seconds. They got the approach and wanted me to show other people, so I just attended BYU’s UniversityAPI Unconference. It was a pretty incredible experience which I’ll do a separate debrief on because it’s a great event and I learned a lot.

For me though, to be presenting to members of BYU, Duke and other institutions, and have it be about the big picture (I talk on the minutia of Drupal usually) it’s a dream come true. I feel like my life’s work is starting to stick, because I laid down my shields, contribute openly, pursue contributors openly, build others up, help and reach out to anyone I can and try to get them using Drupal, Open Source, and maybe, someday, ELMS:LN to achieve the mindset that we have about education and it’s influence on society through technology.

We’re at a tipping point, I can feel the wave of emotion that comes with that tip. We’re not just onto something, we can demonstrate worth and it makes me want to NEVER discourage a big idea ever again. No matter what it is, if you can dream it, if you can stick with it,you can do it. This is fuel as much for you the reader, as it is for me, as it is a life lesson for my children when they get older.

Be. Just Be.
Be laughed at. Be ignored. Be told to shut up. Be told it’ll never work. Be told no one will get it. Be told you can’t make the world a better place. Be told “no open source project has ever been successful when originating in Higher Education”. Be told no one will adopt Drupal, let alone ELMS:LN. Be hated. Frowned upon. Misunderstood.

Just be, who your God, your worldview, your community, your industry, NEEDS YOU TO BE. And nothing less. Ignore the doubters, the naysays, the negativity. Because if people are telling you it’s impossible, in the age of singularity, automation and mass creativity at scales the world has never seen before, then you know you must be onto something.

Seek out those who build you up, distance yourself from those who tear you down, but always be willing with open arms to welcome them back in. Don’t scoff. Don’t “I told you so” or “That’s what I’ve been saying”. Just smile, be happy that they’ve escaped the trappings of their mind to see the world you are expressing (again, no matter what that world is).

We don’t just have code. We have an idea; and to quote V, from V for Vendetta; “Idea’s Mr. Creedy… Are bullet proof”. You can speak anything into existence if you just keep believing in it. Don’t back down, don’t let the negativity of this world, of the social media sphere, or your community get you down.

I am incredibly humbled today and ready to take a much needed break to think and reset. When I return, I’ll be refreshed and ready to keep setting the road ablaze with potential. We are… ELMS Learning Network. And we’d love to have you join us to build a better world! One line of code, one conversation, one course, one solution, one learning, one smile at a time, we will build a better world.

A reaction to “A Spartan LMS”

Original post: http://learningnuggets.ca/ed-tech-thinks/a-spartan-lms

My response below (this may be my new blogging style, reacting to the rest of the world w/ commentary, other person provides the prompt, and then I can word vomit :))


So to do the twitter thing: “This.”

This post is great, I love how you’re viewing the LMS as something that needs to be fragmented because of reasons of ownership, pushing boundaries, and the fact that CMS (which I’ll call Domain of One’s own in this case) based technologies can replace so much of the BS in LMSs without the cruft.

To the point of throwing the baby out with the bathwater (and past arguments of walled gardens vs completely open spaces) I’d like to propose this analogy. Envision the baby in the baby tub. Instead of throwing them out, when the baby grows and matures and there isn’t the same fear of drowning, we submerge the smaller baby tub into a larger bathtub. We do both at the same time for a time to get the baby acclimated to the new environment and the new freedoms of this larger space. We don’t immediately remove the baby tub or throw away the water from this tub, but we submerge it in a larger pool.

This larger body of water slowly, naturally, becomes one with the body of water in the smaller baby tub. Once the child is comfortable with the larger tub, they eventually exit of their own free will and eventually, we don’t need the baby tub.

In this worldview, I see the LMSs of the past 20 years to be that baby tub. A relic of the training wheels of online education. A forum system that needed to exist because well, our learners and instructors had no knowledge of the world. But as we’ve gotten our feet wet in the larger ecosystem of the web, we’ve lost the need for these training wheels. We’ve outgrown them.

So, how best to react when administrations and IT silos for 2 decades have handcuffed our institutions with purchasing decisions which are great for “good enough” but not for Great? Well, we need to take this baby pool submerged into the larger body of the web approach. This is where systems like ELMSLN come in (my baby). We know that you need an LMS (for now) and we structure ourselves in such a way that we assume that we’re going to be integrating with lots of things. We do this, while simultaneously besting the last 20 years piece by piece (which trust me, ain’t hard to do w/ most of the vendors out there).

So the question isn’t do we walk entirely, it’s what’s the course we can chart to make a clean break (some day)? I view elms:ln as part of a journey with the higher educational industrial complex. If it wants to survive the coming singularity, IoT revolution, app-ification of knowledge and eventual commoditization of “learning”, then it needs to lay down the vision of how to get off our single solutions before the baby outgrows the baby tub and has no need for tubs at all but instead gets up, plugs into Google “How do I do my job today?” and goes off to work; never having experienced tubs at all.

I’m not on your blog to pitch a product, I’m here to pitch the same world view you are espousing here (which is awesome). How can we best chart a course to an lms-less world (https://btopro.wordpress.com/2011/06/08/envisioning-a-lms-less-university/)? We’d love to have navigators like you join us in this vision to save (via improvement) the educational establishment we’ve all known and love.