What LMS to Choose After Blackboard?

This weekend I got an email from a leading university that is planning to leave Blackboard and wanted some advice as to how Sakai might fit into their future.

For the past few years, when I get these “What LMS to choose after Blackboard/ANGEL/WebCT…?” emails from folks, I usually send a short note that effectively says, “You have my permission to go to Canvas – everybody is doing it. At least Canvas will be better than Blackboard.” (i.e. Canvas is the new Black)

But this particular morning, with a cup of fresh coffee in hand, I wrote and sent the following note that evolved into an open letter to Blackboard customers who are getting a “little nervous”. The note was to a school outside the US – so you see my focus on privacy issues.

Subject: What LMS to Choose After Blackboard?

Thanks for the note and thanks to your colleague for the reference. I have spent almost 15 years in the LMS market now and know the products and systems very well. As you might well imagine I am very excited about Sakai and believe it to be the best solution in the marketplace for the present and the future.

To me the most important dimensions of an LMS are: (a) an LMS must continuously evolve to meet the needs of on-campus, distance, and education at scale (i.e. MOOCs) as experienced by a modern world-class university, (b) for a university outside the US having 100% control over all student data is a must, and (c) over the next decade while the LMS will continue to be the backbone resource for teaching, increasingly innovation must happen outside the LMS and be seamlessly integrated into the LMS – this allows the LMS to focus on stability, scalability, and consistency while freeing local instructors, instructional designers and IT staff to explore innovative pedagogies freely without compromising the stability of the LMS.

With this context, for a leading institution that is looking forward to innovating in their approach to teaching and learning I feel that Sakai is simply the best LMS in the market. Sakai is the only “100% open source” product and that matters. In a truly open source product, we have no shareholders and no product managers – our shareholders and product managers are our adopters and community – that means you. The schools, companies, and individuals that invest time and resources are the ones that set Sakai’s direction.

Sakai is part of the Apereo Foundation and works with other open source projects that support the academic mission. Perhaps you use CAS as your single signon on your campus. Of particular interest to me is the Tsugi (www.tsugi.org) project that is an open source framework that allows the agile development of a wide range of pedagogically innovative learning tools that are easily and seamlessly integrated into LMSs like Sakai and Canvas using the latest IMS Standards like Learning Tools Interoperability, Common Cartridge, and IMS Content Item.

This is my short assessment of the vendors in the LMS marketplace:

  • Sakai is by far the best LMS for a strong institution that wants to “move forward” and sees the learning technology space as needing further innovation over the next decade. The combination of Sakai and Tsugi is simply the best solution in the marketplace of the notion of a more ecosystem-oriented “Next Generation Digital Learning Environment” (NGDLE). If you want to be part of the community who will define the NGDLE, Apereo Open Source is the answer.
  • Canvas is my second choice as an LMS as it is a leader (like Sakai) in allowing external tools to seamlessly integrate into the product. If you are a school that is interested in being a “fast follower” or have a weak IT team, Canvas is an excellent choice. Canvas is a good choice for second-tier schools or community colleges that want to be innovative but don’t want to be a core influencer in the next generation architecture. Interestingly Tsugi also works very well with Canvas because Sakai and Canvas implement the same IMS standards in very similar ways. Canvas is not “100% open source”. They release portions of their source but the intention is not to have you run your own instance of the software. That of course means that you are putting your data in the cloud in the hands of a US company. I personally think it is important to control one’s own data.
  • Moodle is a fine LMS and it is certainly Open Source – but it is not participative open source like Sakai. End-user adopters have very little influence in the direction of the product. But if you are a small school with a weak IT department, you probably don’t have that much interest in changing the features of your LMS. Moodle generally trails the market in terms of implementing the latest interoperability standards but they get there eventually. Self-hosted Moodle at a small school takes very low levels of developer resources as long as you *never* customize the code base or upgrades quickly become almost impossible. Cloud hosting Moodle with a company in your country is probably sufficient to assuage your data concerns. I would not recommend cloud-hosting *any* LMS with a US-based company at this point.
  • Blackboard has been effectively frozen for the past four years because of their grand rewrite they call “Ultra” that has not gone well. The primary reason for the failure of Ultra is some very bad architectural decisions that make it challenging to make an application as complex as an LMS highly reliable. The result of over-investment in Ultra leaves Learn as a pretty clunky piece of antique software, lagging in implementing the latest interoperability specifications, and a future that will be a very painful upgrade as the gulf between Learn and Ultra widens. I am glad to hear that you are considering leaving Blackboard.
  • Desire2Learn/BrightSpace is a clever company and their customers seem to like the product very much. My experience is that they are the best product for a heavily multi-tenant architecture. Many of their most successful customers are state K12 systems in the US that want to purchase a single product to be used by 100+ small schools. D2L has historically been a laggard in implementing interoperability standards but in the past year or so – they have realized the importance of interoperability and are working to be on par with Sakai and Canvas although it will take some time.

In summary, if you are leaving Blackboard, if you are bold and want to be part of an effort to take on the next decade of challenges in teaching and learning you should choose Sakai. If you have a weak IT organization but want to appear to be “innovative” with less risk and can tolerate the privacy consequences of cloud-hosting with a US company, choose Canvas with my blessing. If you are a smaller school with a weak IT organization, and just want something solid that will work, choose Moodle – either self host it and *never change a single line of code*, or out source hosting to a non-US company.

I use all three of these LMS’s. Sakai is amazing and working with a thriving and robust community of like-minded innovators is even more amazing. Building Tsugi in this same community is the most fun thing I have ever done. Canvas is a good workhorse – it has fewer features but does a solid job on those features and has an industry-leading interoperability strategy. When I have to install and administer my own LMS in my spare time for small-scale applications, I use Moodle. But I have changed 50 lines in my Moodle installation and so I have not upgraded my Moodle for 3 years because I don’t have time to re-debug and re-implement my changes in the latest release.

If you do choose to move from Blackboard to Sakai, there are companies that will help you through the conversion. There are local Sakai hosting companies that we can put you in touch with. There are also Sakai commercial companies that will maintain your Sakai installation on your campus using your hardware so you have 100% control of your data but leave someone else to deal with patches and upgrades. True “100% open source” leads to a diverse, international, rich and innovative commercial provider community.

I am happy to talk more and I expect to be in in your area next month and might be able to swing by your campus to give a presentation on Tsugi, Sakai, and Apereo. Even if you choose Canvas or Moodle – you should join Apereo so you can work with us on Tsugi.

Using Tsugi to Build “A MOOC Of My Own” (MOOCOMO)

This presentation will describe and demonstrate the latest use of Tsugi to build a standalone web site that combines Open Educational Materials, Cloud Hosted LTI Tools, a single-course LMS, auto-graders, Open Badges and a learning object repository providing resources for import into other LMS systems. I call all of this combined together “A MOOC Of My Own” (MOOCOMO). I have created two of these MOOCOMO sites that I use in both my on-campus teaching as well as my current and upcoming Coursera (and possibly edX) courses.

This presentation will describe and demonstrate the latest use of Tsugi to build a standalone web site that combines Open Educational Materials, Cloud Hosted LTI Tools, a single-course LMS, auto-graders, Open Badges and a learning object repository providing resources for import into other LMS systems. I call all of this combined together “A MOOC Of My Own” (www.moocomo.org). I have created two of these MOOCOMO sites that I use in both my on-campus teaching as well as my current and upcoming Coursera (and possibly edX) courses.

Submitted to: Sakai Virtual Conference 2016.

Abstract: Becoming a Full-Service Indie Publisher of Open Tools and Content using Tsugi.org

If open educational resources are to truly compete with commercial publishers, we must provide a full set of open capabilities that support a book. Publishers provide learning resources in a learning object repository (LOR) that allows remixing and easy integration into learning management systems using protocols like LTI. Publishers provide learning resources like slides, assignment, and interactive software to help those who use the book. Every open book should also have a truly free and open MOOC associated with the book that does not depend on any institutional LMS or MOOC hosting provider. We need the ability to have a OER website for a book, a “LOR of my Own”, an “LMS of my Own” and a “MOOC of my Own” using only our locally owned and controlled resources. The tsugi.org project in effect is the WordPress for Open Education. By downloading, configuring, and hosting a simple PHP application augmented by free content delivery networks, it is possible to deploy a scalable worldwide MOOC with surprisingly low cost. This presentation will introduce the tsugi.org software and show how it is used to build sites like www.py4e.com.

Submitted to: Open Textbook Summit 2017 – May 24-25, 2017 at SFU Harbour Centre in Vancouver, British Columbia (Canada)

Abstract: Sakai Community Update

The past year has been very eventful for Sakai. The Sakai-11 release was completed with the new frameless (Morpheus) portal, new Grade Book, responsive design, and many other game changing features to bring Sakai very much in line with the best LMS systems in the marketplace. A large number of Sakai sites are moving their production to Sakai 11 and we are working on a Sakai-12 release. This presentation will will give a brief summary of the Sakai project to date as well as expectations for the next year. The presentation will also feature a question and answer session with members of the Sakai Project Management Committee (PMC).

Submitted to: Open Apereo 2017 – Sheraton Philadelphia Society Hill Hotel, PA | June 4-June 8, 2017

Abstract: Tsugi Update: Progress towards the NGDLE

The past year has brought a lot of progress and adoption in the Tsugi project. A NodeJS version of Tsugi has been developed in addition of the existing PHP and Java implementations. The library code has been refactored to focus on providing the Tsugi libraries using the Composer dependency management system. Support for IMS Common Cartridge and IMS Content Item has been added so as to allow Tsugi to function as a Learning Object Repository in addition to an Application Store. These new functions have been combined together to produce a truly “next generation” Learning Management System that enables an “indie” publisher to deploy a topic-oriented, LMS, MOOC, LOR, and App Store using low-cost readily available hosting infrastructure. This presentation will provide an over view of the current status and plans for Tsugi going forward.

Submitted to: Open Apereo 2017 – Sheraton Philadelphia Society Hill Hotel, PA | June 4-June 8, 2017

Abstract: Building a Next Generation Digital Learning Environment with Tsugi (Workshop)

The Tsugi project is providing technology to enable a wide range of educational technology use cases. Initially, Tsugi was developed to simplify the development of educational tools and to allow those tools to be deployed in an “App Store” pattern using IMS Learning Tools Interoperability (1.1 and 2.0). More recently, Tsugi has added support for IMS Common Cartridge, IMS Content Item, and a Lessons capability that allows Tsugi to function as a Learning Object Repository that is easily integrated into existing LMS systems. Tsugi is also evolving into an easy-to deploy Learning Management System focused on supporting a web site for a single class or topic. We call this use case a “MOOC of Our Own”. Tsugi can both support individual deployments as well as institutional-scale deployments. This workshop will walk through a Tsugi installation and configuration and experiment with using Tsugi as both an application development environment, a Learning Object Repository, and an Application Store.

Submitted to: Open Apereo 2017 – Sheraton Philadelphia Society Hill Hotel, PA | June 4-June 8, 2017

Student Programmer Position: Working on Sakai – Open Source

I would like to fill a student programmer position (at the University of Michigan) to help me work on the Sakai open source Learning Management System. Sakai is the most popular open source learning management system for top-level research schools around the world like NYU, Oxford, University of Capetown, Notre Dame, Duke, University of North Carolina and many others. There are well over 200 schools that use Sakai as their primary learning management system and there are millions of daily users of the product.

I am currently working on defining and building the next generation of interoperability standards that allow learning systems to share and exchange data via standard, open protocols. I am also working on making Sakai certified against standards for accessibility like WCAG.

Skills Required

In the position you will make direct contributions to the open source Sakai project in your own name as well as work with me as I develop new and expanded functionality for Sakai.

This will require a pretty significant set of solid programming skills:

– Java
– Java Servlets
– Structured Query Language (SQL)
– Accessibility
– JavaScript
– Git / github

This is not a position where you will learn those skills – you must already have them. Sakai is a million lines of code – much of which is a decade old. Working with real, mature, production code that was developed over time by a team of >100 programmers is both a technical challenge and very gratifying at the same time.


In addition to your skills, you will need solid hardware to do Sakai development. My own laptop is a quad-core-i7 macintosh, 16GB RAM, and 500GB SSD. When you are building and testing a million lines of code – it takes some resources.


You will work with a highly talented and deeply committed team of software designers, end-users, and software developers to tackle the most advanced issues in building software for teaching and learning. I would work as your mentor to bring you into this community. The community is very active. We have several teleconferences per week that are attended by people around the world where we work on topics like development, accessibility, marketing, and teaching and learning with Sakai. I will encourage you to attend these teleconferences to make sure that your work fits well into the community and product. I am not the expert in all things Sakai – much of what you learn about Sakai will come from many others in the Sakai community.

There may be travel to Sakai meetings and/or standards meetings where you will met engineers from all of the major learning management systems like Moodle, Blackboard, Canvas, Desire2Learn, Schoology and others. If you have an interest in working in the educational technology space there is potential to make many good contacts that might lead to an internship or a job. My goal is to be your mentor rather than your boss and in time for you to be a respected contributor in your own right.

When you have mastered the Sakai code base – you will know what it takes to understand a million lines of code and develop in a professional manner. You also will know that your contributions have advanced the cause of teaching and learning with technology worldwide.

This is a student programming position – not a full time professional position but the work you do will be at a professional level.

Getting Started

The best way for you to figure out if you have the skills and development environment to handle Sakai is to download it and get it up and running in your development environment. You can follow the official installation instructions at:


(Start with the git repository)

I have built a set of scripts that allow me to check out and set up an instance of Sakai with a few scripts. They work on Mac or Linux and make things easier:


Please feel free to send me a resume or ask a clarifying question.

What is static, double colon (::), $this, and arrow(->) in PHP OO

I wrote this code to answer some PHP Object Oriented questions during office hours.

function plus($x, $y) {
    return $x + $y;

class Thing {
    public $value;
    private $a;
    protected $b;

    function __construct($start=0) {
        $this->value = $start;
        $value = 12345;

    public static function add($x, $y) {
        // Cannot use $this
        echo("Adding $x $y \n");
        return $x + $y;

    public function increment($x) {
        $this->value += $x;
        echo("New:" . $this->value . "\n");

    public function inc2($x, $y) {

    public function add10() {
        $this->value = self::add($this->value, 10);
        $this->value = $this->add($this->value, 10);

    function __destruct() {


$y = plus(3,4);

$y = Thing::add(3,4);

$z = new Thing(7);
$a = new Thing(10);



$y = $z->add(5,6);

echo("The last line\n");

Fixing when a jQuery UI Modal Shows Behind Fixed Bootstrap Navigation

I am blogging this because I searched stack overflow and Google and no one had the answer. Too bad I can’t just state something in StackOverflow after hours of research and a bunch of “close” questions and answers. But ah well – here it is.

I am working on my Tsugi OER site www.pr4e.com.

What I am trying to do is use the modal capabilities of jQueryUI modal dialogs (mostly because I do not like the overblown markup of BootStrap modals) while the rest of the site is styled with BootStrap. All goes well until the modal is larger than the overall window vertically and the modal slides under the BootStrap fixed navigation bar.

Here are some images:

Navigation with enough vertical space (good): good_nav

Not enough vertical space, modal slides below the navigation (bad):bad_nav

Not enough vertical space, modal atop the navigation (good): better_nav


The key is to set the z-index of the *generated* markup created by the jQuery UI dialog call after the dialog was created:

function showModal(title, modalId) {
    console.log("showModal "+modalId);
        title: title,
        width: modalDialogWidth(),
        position: { my: "center top+30px", at: "center top+30px", of: window },
        modal: true,
        draggable: false

    // In order to float above the BootStrap navigation

    $(window).resize(function() {
        $("#"+modalId).dialog("option", "width", modalDialogWidth());

I figured out the generated elements and changed their z-index.

Working code: www.py4e.com (Log in and go to “Use this service”, and press “Using Your Key”).

Code in github: tsugiscripts.js

October 1: Moving the Tsugi GitHub Repositories

I am just back from a successful trip to South Korea where I talked a lot about the NGDLE, Sakai, and Tsugi:


I focused a lot on the new Tsugi use case of being a single-course LMS that is integrated into a single-site OER materials / course site.


There was a good bit of interest from technically minded teachers and folks from educational technology centers. I made it clear that Tsugi was not trivial to install and run yet – but on a good path to be ready for teachers to to build web sites in 2017.

But some want to get started now. And so on October 1, I will be moving the main Tsugi repositories from




The core bits (PHP, Node, and Java) will all move into the “tsugiproject” and tools will move into “tsugitools”.

For folks who have been using the “csev” repositories, GitHub is good about forwarding requests when repositories are renamed or moved.

I am sure this will be a bit of a disruption – but probably better now than later.

If you have any issues with this or suggestions as to how to best do it, let me know.