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 (www.wa4e.com).

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 – https://www.sakailms.org/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 (www.py4e.com) 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.

Sakai 23.1 maintenance is released!

I’m pleased to announce that Sakai 23.1 is now available for downloading[1]! 

Sakai 23.1 has 212 improvements [2] including 

  • 22 fixes in Assignments
  • 20 fixes in Conversations
  • 11 Fixes in Gradebook
  • 18 fixes in Lessons
  • 15 fixes in Portal
  • 12 Fixes in Sakai Plus
  • 10 Fixes in Site Info
  • 27 fixes in Tests & Quizzes

Other areas improved include:

  • Accessibility
  • Account
  • Announcements
  • Bullhorns
  • Calendar
  • Calendar Widget
  • CKeditor
  • Dropbox
  • Forums/Discussions
  • Internationalization
  • Login
  • Mail Sender
  • Membership
  • Messages
  • Polls
  • Preferences
  • Profile
  • Resources
  • Roster
  • Rubrics
  • Search
  • Sign Up
  • Statistics
  • Syllabus
  • Web Services
  • Wiki
  • Worksite Setup

There was 1 security issue fixed in 23.1 (details will be sent to the Sakai Security Announcements list).

Please also note the upgrade information page [3] for important notes related to performing the upgrade.

[1] Download information- http://source.sakaiproject.org/release/23.1/ 

[2] 23.1 Fixes by Tool – https://sakaiproject.atlassian.net/wiki/spaces/DOC/pages/32324816133/23.1+Fixes+by+tool 

[3] Upgrade information – https://sakaiproject.atlassian.net/wiki/spaces/DOC/pages/32324813141/Sakai+23+Upgrade+Information 

Wilma Hodges, Ed.D., UXC
Sakai Community Manager
wilma.hodges@apereo.org

Project Idempotent – Project Idempotent – MVP of live / continuous database migrations for SakaiProject

Increasingly, I want to run the 23.x branch and stay no more than a few weeks behind the branch without waiting for a minor release.  my hope is that this is more “cloud like”.   I also thingk that a few smaller sites running near the edge of 23.x in production makes these branches safer to use and lowers the risk of the minor releases.  It also means that when we back merge a fix to a branch these “latest 23.x” servers can help verify the back-ports work.

I have been running servers on 23.x and master now for several years.   These are small servers with folks I generally know so little glitches can be quickly handled.

My greatest frustration when I move a server forward along a branch is missing a conversion that was just added to the conversion scripts for the next release of the branch.

So I have built a tool that runs in Sakai and when a simple bit of SQL is added to the conversion script it can be added to Idempotent.  That way – without scanning the whole conversion script to see what has and has not been applied – I just Idempotent to check and optionally conversion SQL.

It is cool.  It does it all in a servlet – so hot-deploy is super easy.  It has a bunch of utility classes to do things like check if a table exists or a column exists or even is a particular but of conversion SQL has already been run.

In the future – I think this needs to be part of Sakai.  Ia a person makes a patch that needs a conversion script, (in the future) they would also add a few lines to Idempotent.  So if someone did a git pull, recompile, and restart – with a few seconds of startup – all the conversions would be run.

There is a lot of test and work to be done – but I am now running this in production in all my Sakai servers.  For now, I will watch the conversion scripts for 23 and 24 and keep my copy of idempotent up to date.   Frankly it is easier for me to put the conversion in idempotent than figuring out which ones to apply by hand in the MySQL command line.

I would like to advocate including this in Sakai 24 and 23 – but that will require a bunch of dicussion and take some time.  This email is the start of that discussion – here is the source code:

https://github.com/csev/idempotent

It has a README.md and DESIGN.md.

It is not much code.  It could be improved.  If this did go into the main repo, I would take some of the bits in the Util class and move them into the SQL service.  For now I kept things in idempotent so it would work with any version of Sakai.

Sakai 23.0 Released!

Congratulations to our amazing worldwide community! 

I’m pleased to announce that Sakai 23.0 is now available! 

Many thanks to everyone involved with the release! It wouldn’t happen without all of you!

Our community wiki has both functional [1] and technical [2] release notes.

Download instructions are also available [3].

New in Sakai 23

  • New Portal UI
  • Sakai Plus LTI integration
  • Accessibility improvements
  • New or enhanced features in Assignments, Calendar, Dashboard, Discussions, Gradebook, Lessons, Messages, Roster, Rubrics, and more. [4]

[1] Functional release notes – https://sakaiproject.atlassian.net/wiki/spaces/DOC/pages/32324812801/Sakai+23+Release+Notes 

[2] Technical Release notes – https://sakaiproject.atlassian.net/wiki/spaces/DOC/pages/32324812827/Sakai+23+Technical+Release+Notes 

[3] Download instructions – http://source.sakaiproject.org/release/23.0/

[4] Complete Feature Summary – https://sakaiproject.atlassian.net/wiki/spaces/DOC/pages/32324813165/Sakai+23+Complete+Feature+Summary 

(Posted by Wilma Hodges, Sakai Community Coordinator)

Adding SakaiPlus to your current LMS

The LMS marketplace has reached a point where commercial cloud hosted LMS systems from large, established companies have become the norm. Systems like Canvas, Desire2Learn, or Blackboard address the need for a scalable production grade LMS without using local IT staff for development, installation, upgrading, patching or performance monitoring. But the move to the cloud has taken away the sense of ownership, iteration, and innovation that has been part of open source LMS systems like Sakai and Moodle. SakaiPlus makes it so that the Sakai LMS can be installed into your campus-wide cloud-hosted LMS using LTI Advantage to give an option to faculty and IT staff to work with an LMS that can grow and improve over time. Using LTI Advantage enables the idea of a “boutique LMS” that serves a small fraction of the faculty on the campus without actually installing and supporting a second LMS. This session will describe the notion of a “boutique LMS” and then demonstrate Sakai working inside of Canvas, Blackboard, D2L and Moodle.

Abstract: Learning Impact 20203

Experiences Using SakaiPlus with Canvas at University of Michigan

SakaiPlus is the first example of using Learning Tools Interoperability (LTI) Advantage to plug an entire LMS into another LMS, allowing faculty a choice of LMSs on a campus without requiring a second enterprise LMS installation. We have been beta-testing SakaiPlus integrated into Canvas at the University of Michigan School of Information since fall 2022. This presentation will describe how this is done technically, show how it has been used in real courses, and share initial reactions and results of the testing. We will talk about how an institution with Canvas, Blackboard, or Desire2Learn could use SakaiPlus via LTI Advantage.

Abstract for 2023 NERCOMP and 2023 Educause ELI

Where did @DrChuck go after twitter?

Hi all,  this is a simple post that points you to where Dr. Chuck now can be found now that he has reduced his use of Twitter due to recent events.

My social network is now at https://openedtech.social/@drchuck – if you are a twitter follower interested in Open Source Educational Technology, Open Educational Resources or pictures of cool breakfast food – follow me there.  You can join any number of Mastodon servers and follow me from any of them.  The openedtech.social server is for those interested in open source educational technology – you should find a Mastodon server that fits who you are – I started at mastodon.social for a while and then moved to a more focused community.  That server might be overwhelmed as the folks depart from the other platform.

For my “announcement stuff” like new videos, professional blog posts, or face-to-face office hours, I am going to start using LinkedIn – a lot – you can follow me at https://www.linkedin.com/in/charlesseverance/ – I only make connections with those I know through work and collaboration or professional contacts say at a conference.

I won’t be closing my twitter account – but it I won’t use it regularly until something changes in its ownership and approaches.   I will not check it regularly – but from time to time I will post a link to this blog post :)

I think the downfall of Twitter is a good chance for us all to reflect and think about why we are part of each of the social networks that we are part of.  If there is not one single, global commercial global social network it makes it so that network cannot act as a global influence.  Many good things happened because of the global public square – but there were as many if not more bad things that happened as well.  It is probably best that it becomes irrelevant so we can rebuild out networks in a more healthy way.

Hope to see you online

— Chuck 19-Nov-2022

 

Sakai 20.6 maintenance is released!

This is a message from Wilma Hodges, the Sakai Community Coordinator.

Congratulations to our amazing worldwide community!

I’m pleased to announce that Sakai 20.6 is released and available for downloading [1]! Please note that this is likely the last maintenance release for Sakai 20.

Sakai 20.6 has 52 improvements [2] including

  • 10 fixes in Assignments

Other areas improved include:

  • A11y
  • Account
  • Announcements
  • Basic LTI
  • Bullhorns
  • Chat Room
  • Commons
  • Content Review
  • Delegated Access
  • Dropbox
  • Feedback tool
  • Forums
  • Gradebook
  • Internationalization
  • Lessons
  • Messages
  • Portal
  • Preferences
  • Rubrics
  • Section Info
  • Sign Up
  • Site Info
  • Statistics
  • Syllabus
  • Tests & Quizzes

There were 3 security issues fixed in 20.6 (details will be sent to the Sakai Security Announcements list).

Please also note the upgrade information page [3] for important notes related to performing the upgrade.

[1] Download information- http://source.sakaiproject.org/release/20.6/

[2] 20.6 Fixes by Tool – https://sakaiproject.atlassian.net/wiki/spaces/DOC/pages/32250068993/20.6+Fixes+by+tool

[3] Upgrade information – https://sakaiproject.atlassian.net/wiki/spaces/DOC/pages/17310646353/Sakai+20+Upgrade+Information

Sakai 22.1 maintenance is released!

This is a copy of the announcement of the Sakai 22.1 maintenance release from Wilma Hodges – the Sakai community coordinator.


Congratulations to our amazing worldwide community!

I’m pleased to announce that Sakai 22.1 is now available for downloading[1]!

Sakai 22.1 has 204 improvements [2] including

  • 44 fixes in Assignments
  • 10 fixes in Basic LTI
  • 14 fixes in Forums/Discussions
  • 13 fixes in Gradebook
  • 12 fixes in Lessons
  • 24 fixes in Rubrics
  • 20 fixes in Tests & Quizzes

Other areas improved include:

  • Accessibility
  • Announcements
  • Bullhorns
  • Calendar
  • Calendar Widget
  • Commons
  • Dropbox
  • Internationalization
  • Messages
  • PA System
  • Portal
  • Preferences
  • Profile
  • Quartz Scheduler
  • Resources
  • Roster
  • Search
  • Section Info
  • SIgn Up
  • Site Info
  • Statistics
  • Syllabus

There were 3 security issues fixed in 22.1 (details will be sent to the Sakai Security Announcements list).

Please also note the upgrade information page [3] for important notes related to performing the upgrade.

[1] Download information- http://source.sakaiproject.org/release/22.1/

[2] 22.1 Fixes by Tool – https://sakaiproject.atlassian.net/wiki/spaces/DOC/pages/32201507219/22.1+Fixes+by+tool

[3] Upgrade information – https://sakaiproject.atlassian.net/wiki/spaces/DOC/pages/32201507179/Sakai+22+Upgrade+Information+In+Progress