Monthly Archives: June 2013

Report from the First Apereo Conference

I really enjoyed attending the first Open Apereo 2013 conference in San Diego June 2-7, 2013.

The mood of the conference was very excited, positive, and upbeat. For the past two years the Sakai and JASIG communities have been gently aligning in anticipation of Apereo. But now the waiting and anticipation is over and all the energy that went into planning is going back into our existing and new projects. It seemed that for a few years, both organizations put a lot of forward-looking thinking on hold to focus on the merging. But now nothing is on hold and it felt like new ideas and new directions for our new community were little popping up every day. Being able to make progress on these pent-up project ideas was very freeing.

For me the founding notion of Apereo was that the more rich and diverse our community became – the more solid and sustainable it would be. With Apereo we could focus on anyone in higher education interested in openness (and not just software) rather than limiting our scope to our historical beginnings. It is a very freeing feeling. We are no longer bound by the (wonderful and amazing) historical accidents that brought the Sakai and JASig communities to life. We owe a great debt of gratitude to thanks Ira Fuchs, Carl Jacobson, and Joseph Hardin as the initial founders of our projects.

But now, ten years later, we have re-founded ourselves in a careful and thoughtful manner and informed by over a decade of experience making open source happen. We need to thank those who gave so much to make this merger a reality. This was two+ years of hard work where a number of people learned far more about non-profit laws than you could imagine. Building something good takes time – but a lot of people are very relieved to have it finished so we can look to the future.

People who stick out for me a leading the merger effort include: Patty Gertz, Ian Dolphin, Josh Baron, Jens Haeusser, Robert Sherratt, John Lewis, Seth Theriault, and both of the board of directors of Sakai and JASIG as well as the transition committee made up of members from both boards. I was on the Sakai Board and part of the transition committee but my own contributions were small compared to those who were the real leaders of the effort. It was a long and winding road – and the only way to move forward was to be patient and do it right because we really only had one chance to get the founding principles of the Apereo Foundation right.

Sakai in a Apereo-Foundation World

The Sakai-related efforts that are now part of Apereo are now so much better positioned to make forward progress. In the Sakai Project and Foundation – these ideas were often too intertwined to make forward progress. We spent too much time trying to come up with one set of priorities across all our efforts that distracted from moving our efforts forward. Here are my observations:

  • The Apereo Open Academic Environment has renamed itself to emphasize that the OAE is very much an independent project exploring next generation approaches to teaching, learning, and collaboration. The OAE team has rewritten much of the core software since the end of 2012 and is moving quickly to a version 1.0 sometime this summer running in production for Marist, Georgia Tech, and Cambridge. Getting a 1.0 project into production is a wonderful milestone and will likely re-kindle interest in the OAE project, growing their interest and resources. Some might say that OAE died and has been reborn – I actually disagree with this notion – OAE has been on a path all along and there were certainly bumps on that path – as the bumps smoothed out the project is moving toward a 1.0 release nicely.
  • Teaching and Learning SIG – Because this is now an independent entity within Apereo it is a natural place to look across the Sakai CLE and OAE as well as looking at emerging efforts (below). The T/L group also will continue the TWISA (Teaching with Sakai Innovation Awards) and look to expand the effort. This group serves as a natural gathering point for the faculty and student interest in applying the ideas of openness to teaching and learning. I think that this group will make sure that the end-users of our software have a place at the conference. I also think that this group can nurture interest in areas like Open Education Resources (OER) and if there is an interest in developing practice or software for OER – Apereo might be a great place to incubate that work.
  • The WAD Portfolio Effort – Thanks to efforts like Janice Smith, Shoji Kajita, Jacques Raynauld, and many others, there is continued interest in portfolio solutions in open source. The current effort is a pre-incubation group working together on a product they call WAD (I don’t know what it stands for). The idea for WAD is to build a portfolio system outside of the LMS and find ways to do a deep integration to pull out LMS data as needed. In many ways WAD feels like a throwback to the OSP 1.0 times where practicing pedagogists kept themselves very close to the emerging development efforts and gently steered the process. I am very excited to feel the energy in this group that being part of Apereo makes possible. It was exciting to see the re-engagement of some of the people who brought so much passion to OSP in the early days.
  • The Learning Analytics Effort – There has been a small group of highly interested folks within the Sakai community interested in learning analytics activities for quite some time now. This has resulted in tools like SiteStats in Sakai. But as we gain understanding about the real approach to LA it becomes increasingly clear that analytics work must be done outside of the LMS with (again) many deep integration points. Add to the Tin Can API support in Sakai (and soon uPortal and OAE) it paves the way to take real steps in a separate software development project that is just about analyzing analytic data. This group is also pre-incubation but it looks like there is interest that is building on building shared open source software to analyze learning data from many sources.
  • Sakai CLE – I will talk more about this later in a separate section. June 2012 was really the time where the CLE started to re-emerge from being under the radar in the Sakai Foundation politics since about 2008. The 2.9 release (November 2012) and 2.9.2 release (May 2013) have greatly energized the community. Leading schools and commercial affiliates have enthusiastically jumped onto the bandwagon and many have converted or are converting to the 2.9 release. The 2.9 release has enough “good stuff” to make it attractive to move to the latest release. We as a community are reducing our installed version skew and that is very important for long-term sustainability. If we put out a version and no one installs it – it is game over.

In addition to these efforts, there were many other ideas bouncing around the hallways, breaks, and pubs. What was nice was to say over and over – “Hey that could be a new Apereo working group!” – What was most exciting for me was these working groups would have had a tough time being part of Sakai with a foundation that was dedicated to one (or two) core products and far too much debate about what should get the “resources”. In Apereo with independent projects large and small and laissez-faire approach by Apereo, each project builds its own small sub-community and finds its own resources. It is amazing how this Sakai+JASig community has so many ideas as what to do next – but when we were the “Sakai Foundation” the question of “Is that Sakai or not?” kept most of these nascent efforts from gaining forward inertia. With in Apereo – there is little to slow a small and dedicated group from moving an idea forward.

The Sakai CLE

So while I am excited about all the wonderful diversity of thinking that now makes up Apereo, the Sakai CLE is my personal focus. As I said above, 2012 was a breakout year for Sakai with the 2.9 release and quick uptake within the community. I felt that the Sakai Technical Coordination Committee (TCC) activity level and commitment level at last year’s conference was amazing – the talent and commitment brought forth at that meeting powered us to completing the 2.9 release and brought the Sakai CLE up to par with the rest of the LMS marketplace.

I gave a talk titled Sakai: The First Ten Years and the Next(*) Ten Years that both celebrated how far we have come and talked about the upside for the future of Sakai once we have the basics nicely in place in Sakai 2.9.

On Sunday June 2, the TCC met with a focus on governance issues in the new Apereo world. We made some progress on gnarly issues but like the merger itself, evolving the Sakai CLE governance will be a work in progress for a while as we find the right shape for things in the new world. The good thing is that we are not slowing down to talk governance – the technical bits of Sakai continue to evolve and the governance bits will be addressed over time.

In the area of socialization, after the Sunday meeting we had the second-annual Festival of the Dead Cow (or Festival of the Spinach au Gratin, Sweet Potato Casserole, and Sautéed Mushrooms for the vegans of the group). We also had our traditional Karaoke Night out at Karaoke 101 in northern San Diego.

On Thursday June 6, we had the more technically-focused meeting of the TCC as we laid out the areas where folks were intending to work over the next 12 months and trying to come up with a release schedule that we could collectively meet.

What was exciting was that it has started looking like the new capabilities of the release scheduled for roughly June of 2014 might have enough new functionality to justify a new major release (like any good committee we are endlessly debating what number that might be). Things like the new search from AsahiNet, the TinCan API project from Unicon, the dashboard tool from Michigan, Project Ketai to enhance web services and build a mobile app, LTI 2.0, greatly enhanced Lessons capability and many more start to sound like a very exciting release where are very much moving forward and starting to address real emerging market needs rather than focusing on building basic functionality.

Looking Forward

While all this is exciting as our existing community will function so much more smoothly within the Apereo Foundation, I think that the most exciting things for Apereo are the ones we can neither imagine nor predict. With the “big tent” approach baked into the bylaws of Apereo, an existing thriving open focused community with participants and conferences around the world, and a solid incubation process emerging, I am hopeful that we will start to attract small new groups from areas outside our traditional LMS and portal spaces.

I would love to see new projects like an open source EPUB3 book authoring environment or building MOOC platforms or LTI tools to share across many LMS systems become part of Apereo.

The sky is now the limit for Apereo and it will be fun to see where it goes.

Trying the Get the History Right – The Sakai Board of Directors and “Sakai 3”

Updated: More dialog has happened and I have added it at the bottom of this post.

Michael Feldstein has written an excellent post titled The Death and Rebirth of Sakai OAE. Michael correctly celebrates the outstanding progress of the Apereo OAE Project. The OAE presentations at the recent Apereo Conference were outstanding and the stakeholders and development team seem very well aligned. These are all developments that make me more optimistic about OAE than I have ever been before.

But since I am an amateur historian and keenly interested in what it takes for Open Source to work, I felt that Michael’s post conveniently missed one very important point in historical account. So I wanted to make sure that the record reflected the significant role of the Sakai Foundation Board of Directors role in the “unfortunate Sakai 3 situation”.

By the way – I am not speaking for anyone except myself in this post.

My Comment to eLiterate

A great post. I too feel that the Apereo OAE project is well positioned for the future with a solid technical underpinning and the right set of stakeholders going forward.

I think that you mistakenly gloss over the culpability of the Sakai Foundation Board of Directors in the “failing” period of the “Sakai 3″/OAE from 2008-2011. The problems of the “Sakai 3” effort in their simplest forms was over confidence and making too many promises and not delivering on those promises. The seeds of this were sown at the 2009 Sakai Foundation Board retreat where it was decided that making a “Sakai 3” was so important that the board authorized spending at levels higher than incoming revenue to hire a product manager, marketing person, and continue to fund a UX person as top priorities. This deficit spending continued with board blessing until late in 2010 at which point the foundation was bordering on bankruptcy. Finally, faced with bankruptcy, the board backed away from the policy that “OAE was too big to fail” and worth putting the foundation itself at risk to save the OAE. The board members and foundation coupled this ill-chosen financial strategy with effuse public “sales pitches” about OAE everywhere they went. It is not surprising that the community believed the foundation board and leadership – so it is really unfair to blame the badly misled and mis-informed community. The “marketing” worked – sadly it was not followed up by a timely product. It was at the Sakai conference in Denver in 2010 when the Sakai board grudgingly accepted that the Sakai CLE product did not need to be shut down and allowed for the formation of the Sakai Technical Communications Committee (TCC) to govern the CLE relatively free of board meddling. Even throughout 2011 and even in 2012, some board members yearned for a time where the board set the community agenda for both CLE and OAE by board fiat – but thankfully those notions are fading into memory as we embrace the new “big tent” and community-centered philosophy that underpins the Apereo Foundation.


The lesson to learn is that the top-down management and marketing-driven approaches that “sort-of” work in the private sector – utterly fail in open-source communities where the participants (people and organizations) are volunteers.

I am really excited about the future potential of Apereo OAE to be a next-generation academic product for all the reasons that you cite in your post. I have great confidence in the team and the remaining stakeholders seem in it for the whole journey wherever it leads. We all need to applaud their efforts so far and look forward to more good things from OAE in the future – without adding too much in the form of expectations from the outside.

Ian Dolphin’s Comments

Ian Dolphin pasted a great comment about the time period from March 2010-December 2010:

The financial situation in 2010 was as dire as Chuck represents. I’m not aware in as much detail as Chuck of the reasons for what amounted to a systemic overspend, or when that originated. I suspect the point of origin for the overpsend to lie before 2009, to be frank. In demonising the Board, however, Chuck introduces a perspective which is misleading. The reduction in Foundation spending was begun by Lois Brooks, as interim Executive Director in February/March 2010. …

I agree with everything Ian said in his comment. Ian also made a blog post in December 2010 that I also agree with.

I made a follow on comment to clarify my statements and agree with Ian.

My Second Comment to Michael’s Blog

Ian – Your narrative of when the board became aware of the dire financial situation accurately places board awareness of the problem in the February / March timeframe and accurately credits Lois Brooks with doing a great job as interim in addressing the financial situation during the March-June timeframe. She did a great job as interim and when you came on in June you continued to do a great job in addressing the financial challenges. We would not be here if it were not for both of your excellent leadership during difficult times.

But the anti-CLE and pro deficit spend policy was strongly held at the board level up to the very last minute. I distinctly recall one board member making an impassioned plea that “deficit spending was essential to the success of OAE” in a late January/Early February meeting as financial concerns were discussed. A few weeks later we saw balance sheets that showed how truly grave the situation was and the talk of “strategic deficit spending” instantly gave way to talk of how to avoid bankruptcy. The CLE-as-deprecated board policy persisted until the June 2010 board meeting in Denver *after* the OAE project suffered major stakeholder pull out (May 2010) and about four months after the board became aware that it was effectively bankrupt. And even at the June 2010 meeting – changing the policy to allow both the OAE and CLE to continue as equals under their own independent leadership was accepted grudgingly by some of the board members at that meeting.

I have the ultimate respect for the OAE team and people involved in the project. The OAE team threw themselves at an impossible task back in 2008 – they raised funds (the board and foundation staff helped fund raise funds in a good way) and tried a bold form of governance for the project – they were forever on the edge of emerging technologies and gave us a beautiful view of what the future would look like. I will defend and support the OAE team past, present, and future. The OAE/CLE schism did not come from either the OAE or CLE – it arose as a result of a board of directors that felt that they had the authority to manage volunteer resources as if those resources belonged to them.

It all worked out (whew!) and I (like everyone else) want to move on. Because I think that the future is very bright for both OAE and CLE.

Receiving Grades IMS LTI Outcomes: Signed sourcedids

This is a design for an approach to securely accept grades from an external tool and put those grades in the grade book. Please review this design for security and feasibility.

Overview of the Structure of IMS Outcomes

When you look at the IMS Learning Tools Interoperability 1.1 (LTI) Launch, there is a field called the lis_result_sourcedid. If the administrator and instructor decide that a particular resource_link_id is to send grades to the grade book, they must create the column in the grade book and indicate which grade book column to accumulate grades for the particular resource.

The lis_result_sourcedid must contain enough information to uniquely identify the resource_link_id, course, and particular row and column to store a grade for the user. The value will be different for each tool launch from a different user. When the external tool wants to set a grade for a user, it must present the lis_result_sourcedid for that user_id/resource_link_id combination. This value is completely opaque to the tool – the tool is not supposed to be able to parse or otherwise understand this string – the tool must simply receive the value, store it and then present it when attempting to set a a grade.

This gives the Tool Consumer a wide range of choices as to how it constructs the lis_result_sourcedid. This document describes the particular approach that I use and recommend to create this lis_result_sourcedid.

Data Model for Resource Link Level Grade Secrets

To support this feature, we will add the following data items in the LTI Resource Links. This value need not be visible to the Instructor and there is little value revealing the value to the Instructor or admin.

imslti.gradesecret=random UUID

The LTI code generates the secret internally once the instructor or admin has indicated that this resource_link_id is supposed to accept grades.

During Launch: Constructing the lis_result_sourcedid

The essential data needed in the lis_result_sourcedid is the resource_link_id and the userid. The key is to make sure that the lis_result_sourcedid cannot be tampered with while the tool in possession of the lis_result_sourcedid. The base string will be as follows:

gradesecret + ':::' + resource_link_id + ':::' + user_id

A SHA1 signature will be computed from that base string and the lis_result_sourcedid sent in the launch will be:

signature + ':::' + resource_link_id + ':::' + user_id

All the other information regarding the grade book comes from data stored in the content item associated with the resource_link_id so there is no need to replicate this information in the lis_result_sourcedid. These is little reason to otherwise encrypt the lis_result_sourcedid as it simply contains information the external tool already knows.

So the only protection needed is to insure the integrity of the resource_link_id/user_id using a simple message signature. Encrypting the lis_result_sourcedid further would obfuscate the information for no particular increase in security but it can be done if the TC wants to do so.

The resulting lis_result_sourcedid will be sent with LTI launches for which the instructor has configured the tool to receive grades.

Use Case Walk Through

This section walks through the entire steps of the process in order.

Instructor or admin places the LTI resource link and configures with the url, secret, and key.
Instructor or admin uses the LTI config UI to indicate that the tool will be sending grades, and picks the grade book column to store results if necessary. This causes the imsti.gradebooksecret property to be set with a random UUID if it is not already set.

Student launches the tool in the consumer The launch includes the lis_result_sourcedid which is the resource_link_id and user_id and an integrity signature based on gradebooksecret.

The Tool Provider stores the lis_result_sourcedid for each user_id in its tables somewhere, remembering the oauth_consumer_key as well.

Student uses the tool and earns a grade, or perhaps the student uses the tool and the instructor goes into the tool and grades the student work and requests that grades be sent back to the TC.

Either as a side effect of the student completing the work, or the instructor pressing a “send-grades” button, the tool provider creates a Outcomes service request message including the lis_result_sourcedid and sign the overall message it using OAuth using the oauth_consumer_key which the Tool Consumer used to sign the launch request.

The overall message signature establishes that the TP indeed sent the message and that the message contents were not modified while in-transit.

The service message is sent to the designated service URL on the tool consumer.

(1) The TC parses the lis_result_sourcedid, producing a signature, resource_link_id and user_id.
(2) The TC looks up the content item using the resource_link_id
(3) It then pulls gradesecret from the content item and checks the lis_result_sourcedid signature
(4) It then looks up the oauth_consumer_key and secret from the content item (or from a system wide registry) and checks the OAuth signature of the message.
(5) The TC verifies that the user_id is a member of the context_id that contains the content item (resource_link_id).

If all of the above tests pass – we set the grade.

Advanced Concepts (Optional)

Since these secrets are system generated and not user entered, a TC can come up with a “rotation”policy to change the grade secret periodically for each resource_link_id. To do this we add two new data items to each resource link associated with a resource_link_id:

imslti.gradesecretdate=Date The gradesecret was set
imslti.oldgradesecret=The Immediate prior secret

Based on some time scale chosen by the TC administrator, the TC can go through and “expire secrets” that are older than some desired time period. The regeneration process can copy the current value for gradesecret to oldgradesecret and then generate a new gradesecret and update the gradesecretdate. The verification process above is updated to check both the gradesecret and oldgradesecret and accept either as valid.

The launch process simply uses the latest gradesecret when it signs the lis_result_sourcedid during a launch thus extending the expiry date on the lis_result_sourcedid.

If the TC system automatically regenerates all gradesecret values after 15 days, it will appear to the TP that signed lis_result_sourcedid values expire after a minimum of 15 and maximum of 30 days depending on the relative timing of the generation of the gradesecret and the generation of the lis_result_sourcedid.

A gradesecret and/or oldgradesecret can be manually altered, removed or regenerated at any time to “invalidate” all outstanding lis_result_sourcedid values.

Sample Source Code

This is implemented in the Sakai ServiceServlet here is the code below:

Look for the doPostXml method and walk through it (patches welcome). There are libraries of code elsewhere in the source tree – but this is the starting point for Sakai’s outcome service code.


This document introduces the notion of a signed lis_result_sourcedid that allows very fine-grained authorization down to the individual user / resource_link_id if the TC so chooses. The approach includes provisions for grade secret revocation, and seamless grade secret expiry and rotation.

Comments welcome…

Original document written: Version: 3 – August 18, 2010

Coursera Never Ceases to Amaze Me – Community Teaching Assistants And a Few Other Things

I am now teaching my Internet History, Technology, and Security course on Coursera for the third time. You might think that by the third time I teach a course online it would become routine. But that is not the case.

I love being part of watching the Coursera software and culture growing and improving under our feet. The engineers, course operations, and support folks at Coursera are a pure joy to work with. They come up with new ideas and put them into production so quickly – it amazes me. When I heave a new idea about how something should work and propose it in the partners forum, over half the time – they already implemented my idea and I had not discovered it yet. Other times they take my idea – add to it and then often in less than a month there is a new feature. Only rarely do I want something and not get what I want – usually the reason is security – which I fully understand – but I want to always get my way – since I am so spoiled.

Two weeks ago I spent a week at Coursera HQ working on the code for a feature that I hope will soon be released. I worked with Brennan, Nick and Michele (the new intern). I learned a little about SCALA and by the end of the week I “sort-of” get this new-fangled functional programming movement. I hope the see that feature soon – I will likely go back to SFO when it is done to celebrate because it means a lot to me personally.

In terms of culture, I could not be more excited about the Community Teaching Assistant (CTA) program as led by Norian Caporale-Berkowitz. CTAs are selected from the outstanding students from previous courses who have both mastered the material solidly and shown a natural inclination to teach their fellow students. They volunteer to be in the next session of the class and help in creating the culture of the next round and to be close to the next round of the students and help them through the materials in the course.

What is especially cool is that we have a special forum for the CTAs and Teaching staff for the course where we discuss and solve problems and they help make sure that things are brought to my attention quickly that are important. I still am in the class discussions and do most of the content creation for the class – but I also have a group that can review my new materials before I release them and catch problems. I spend about an equal amount of time in the course forums and TA forum.

What is most exciting to me is how much it feels like face-to-face teaching like I do at the University of Michigan. We have a team of people trying to make the learning experience as good as it can be for everyone. I depend on my teaching assistants and they depend on me. I make stuff and they help me form the stuff of the course and then help the students understand the stuff.

This feels very scalable and fits my model of teach the teacher. I so badly want to see my class material reused and remixed by teachers around the world at other schools, community colleges, and high schools – but I don’t want to completely lose touch with the teachers in those classes and even the students in those classes. I am imagining a situation where a class like my Python class is literally being taught at hundreds of places at the same time to many thousands of students – and we have a set of forums that allow the whole community of teachers to be able to share ideas and help and support each other.

Of course software will need tweaking and we will need to invent new cultural and interpersonal models as we scale things up – but it feels really wonderful. I have this sneaking suspicion that we are slowly re-inventing the Open University model but with less focus on waterfall design of course materials, allowance for translation and remixing, and reduced focus on instructional design. What we will adopt is the lead faculty / mentor model – but with more permeable boundaries and more agile content.

It is a great time to be watching new roads being laid down at the frontier of all of this. Many will say – that there is nothing new here. The statement that there is nothing new in Coursera/Udacity/edX/NovoEd style classes is trivially correct but completely wrong.

The technology we use is far better than anything that came before – but more importantly we are creating multi-layer, cross-cultural, cross-disciplinary, and fresh human structures that have *never* been part of online education. These new efforts like Coursera/Udacity/edX/NovoEd are breaking new ground in the increasingly important connection between humans, information, and technology in the quest to educate and learn. Nothing that came before is even close in simultaneously exploring all three dimensions this new space. I only wish more people could experience the joy I feel when teaching in Coursera.

And who knows where this will lead, with edX now open source….