Monthly Archives: June 2024

The State of Tsugi – Summer 2024

Charles Severance's profile photo

Charles Severance

I figure that once in a while I should share some strategic stuff w.r.t. Tsugi for those who adopt, use, and contribute to Tsugi.

First off – thanks. Tsugi is over 10 years old now. I founded it back in 2013 with a name that means “Next” in Japanese – homage both to exploring the area beyond current educational technology solutions and the name of Steve Jobs’s computer company after he was fired from Apple :)

Back then, I had a theory that the “next big thing” would be an “App Store for Education” – I wanted to be the framework to empower lots of developers to build things and share them through a store front – like the Apple and Google stores for their phones. I even built a course to train PHP developers (

While a few people built cool apps (thanks Dayton) – it turned out that the use cases of building course content (used by me a lot) and as a library to build more general purpose LTI product offerings were stickier.

Tsugi was an important part of the rollout of 1EdTech LTI Advantage as it was the first widely available test harness to exercise the LTI Advantage implementations of the big five LMS systems in the market. Tsugi contributed to a high level of interoperability of the implementations in the various LMS’s on the day LTI Advantage was released.

So, 10 years in, Tsugi is solid and seems to be meeting the needs of this community. The past few years have been focused on keeping Tsugi up-to-date with PHP and other dependencies. I brought back Google Classroom support (kind of stealthed) in January of this year to allow for testing and exploration of integrating LMS tools into Google Classroom.

I have always had big plans for a moon shot software development effort with Tsugi – a Tsugi 2.0 as it were. I had a lot of things I wanted to do: (1) build a Google Classroom integration, (2) build a Microsoft Teams Integration, (3) build a course authoring environment and support multiple courses per server to make it more like an LMS, and (4) slowly build a set of tools to mimic a subset of Canvas features.

Tsugi has a bit of tech debt that has been on the back burner for a while. A few years back I grafted the Lumen framework into Tsugi to lay the foundation to make building new UI capabilities easier. I converted things like the Lessons UI from straight up PHP to Lumen. The integration never felt like it made things easier and the Lumen project was mothballed a while back. Thankfully they update it and maintain it across PHP versions so I have not been forced to to a panic rewrite of that code so far.

Another bit of tech debt is an architecture that completely wrapped itself around LTI 1.1 with the idea that the resource link runs the show – handles grades, etc. Both Google Classroom and LTI Advantage in Tsugi are viewed in a way to squeeze them into an LTI 1.1 mold. Tools can use LTI Advantage features but the framework *dreams* LTI 1.1 and *supports* LTI Advantage.

In the past three years I built SakaiPlus – – SakaiPlus is amazing. Its architecture is really pretty and completely embraces LTI Advantage. SakaiPlus does not even attempt to use LTI 1.1 at all. I could not be happier with how SakaiPlus turned out – I think that the SakaiPlus integration architecture is a model for how to build software to support advanced teaching and learning use cases going forward. SakaiPlus has been in production in my courses at the University of Michigan for two years now and has performed very well and it has been a lot of fun to use in my teaching.

Part of my plan after finishing SakaiPlus was to put a bunch of effort into Tsugi to build TsugiPlus. That effort would look to SakaiPlus for architecture, protocol, approach, and data model inspiration.

TsugiPlus would allow me to go after some of those moon shots mentioned above and be an excuse to clean up Tsugi’s tech debt. I have been dreaming about and planning the TsugiPlus effort for over three years.

The problem with going after TsugiPlus is that it would take a few years and I might end up with software that feels a little less solid during the transition while I was doing major new development in the code base. With Tsugi solid, reliable, and performant right now – the idea of opening it up and doing TsugiPlus surgery just does not sound appealing to me and I think that the Tsugi community might agree.

So now that I am in a position to start investigating TsugiPlus this summer, I am feeling like I don’t want to destabilize Tsugi to achieve my “moon shots” in educational technology.

Launching a new project instead of evolving Tsugi allows me to think about using a new tech stack. Don’t get me wrong, I love PHP and PHP has been very good to us except for that 7.4 – 8.2 transition :). You would be amazed at the load my Tsugi servers handle. I moved over 15 512MB Tsugi instances into about 3 2MB Tsugi instances using vhost. It saves a lot of money and keeps my support effort low and makes the servers *faster* overall. That is so nice. My Python for Everybody ( server is just another Tsugi vhost on a multi-tenant server.

But the problem is that it is difficult to scale contribution to an open source project unless it is Python, JavaScript, or Java because people don’t think PHP will get them a job (except at a WordPress or Drupal shop).

So while I have not completely locked down the tech stack for MoonShot – I am leaning towards a Python+JavaScript stack of one form or another. It is a long effort and step one is always a bunch of prototypes.

Given that (at this point) my thinking is to not open up Tsugi for major surgery, we should talk about the future of Tsugi.

Tsugi is not going away. All my online teaching uses 15+ Tsugi servers – that represents a ton of revenue. Those will likely be running in Tsugi for 5-10 years minimum. So fixing and keeping Tsugi running will be a top priority for me. But because I am not also actively evolving (and breaking) Tsugi starting this summer – it will not take a lot of time.

You can expect me to be responsive to Pull Requests, quick to find and fix bugs, and answer any questions you might have. Tsugi is my highest priority for at least five years. I have built an empire on Tsugi and it is not going away any time soon.

When “Project MoonShot” starts you will all be welcome to come and help. It (of course) will be open source and welcome broad contribution. Also, from the beginning I will build it with Tsugi in mind. It would be great if someday, I could export my course content from Tsugi and Import it into MoonShot. Also in order to get features into MoonShot quickly, one of the first features I will build will be an LTI Advantage integration that plugs Tsugi into MoonShot as an app store!

I see MoonShot and Tsugi going forward as a win-win. MoonShot initial efforts will focus on re-implementing the SakaiPlus use cases like amazing support for LTI Advantage, a state of the art grade book, powerful course authoring like Lessons, and great content import and export on par with and better than Canvas.

I see MoonShot as a two year effort just to get started and then another 2-3 years effort before it is competitive with Sakai, Canvas, D2L or Blackboard – so there will be no rush – I want to do things right on MoonShot in version 1.0.

But since this is a “State of Tsugi” message, I want to close with a focus on Tsugi.

MoonShot will not harm Tsugi’s long term viability. Tsugi will be fully supported for at least the next five years. But even better, I won’t be mucking around in it causing problems and forcing transitions. Tsugi will keep running as long as PHP and its dependencies are kept current.

Comments and questions welcome.