Tsugi has two organizations and a number of repositories. This page serves as an index into those repositories. The tsugiproject organization hosts the varius implementations of Tsugi and the The tsugitools organization hosts ready-to-install Tsugi tools that can be installed using the Tsugi Administration, Developer, and Management Console.
Tsugi Tools
When you install Tsugi, it can auto-install tools from this repository
into your instance of Tsugi using github from the Administrator interface.
Tsugi Static Content
The static content (JavaScript, Images, CSS, etc.) for Tsugi is shared across the
various versions so it is kept in a separate repository. It is also hosted using
CloudFlare for high performance
cached access worldwide to reduce load on Tsugi application servers. The URL for the
static content is:
As part of configuring a Tsugi instance, you can control what URL is used to load static content. The default is to pull this content from Cloudflare. If you want ot operate truly offline with no developer connection, you can checkout and change config.php point to a local copy of the static content.
The source for the tsugi.org web site
This is the course code for www.tsugi.org.
This web site is also a Tsugi application using Tsugi as an embedded LMS
to host and track Tsugi tutorials and badges.
The Administration console also contains support for an IMS LTI versions a Common Cartridge Export and IMS ContentItem / Deep Linking App Store for all tools.
"require": { "tsugi/lib": ">=0.5.1" }
Tsugi Module (Sample)
Copy this if you want to start a fresh Tsugi Module from scratch. If you are building
a new tool from scratch, you should build it as a "Tsugi Module" following all
of the Tsugi style guidance, using the Tsugi browser environment, and making
full use of the Tsugi framework. This repository contains a basic
"Tsugi Module" you can use as a starting point.
Tsugi-Enabled Application (sample)
You can also use Tsugi as a library and add it to a few places in an existing application.
This repository contains sample code showing how to use Tsugi as a library in an existing
application.
Tsugi Sample Code Snippets
These are relatively short bits of code that you can look at for example code as you write your
own Tsugi Module.
Tsugi Developer Exercises
This is a set of exercises of increasing difficulty suitable for a class or
workshop. Working solutions are provided online. Source code for working solutions
is only available to inctructors that contact Dr. Chuck.
Tsugi Functionality Test
While there is not yet a Python version of Tsugi, there is a functionality test that
exercises the various Tsugi implementations with LTI launches and does validation that they
each work with the Tsugi data model properly.
We have a number of repositories that include varius resources for Tsugi into the cloud on Amazon Web services. These scripts are used to construct the various production services at www.tsugicloud.org or www.learnxp.com (a Tsugi commercial partner).
Building a Tsugi AMI on Amazon Web Services - This repo is used to produce the Amazon-hosted scalable instances of Tsugi for TsugiCloud and Learning Experiences. These instances make use of AWS Aurora, Memcached, Elastic File System, Application Load Balancing to deploy a highly available, scalable and resiliant Tsugi deployment. For your own Tsugi deployments you should consider this as examples and starting points.
Docker recipes This repo describes how to produce Docker containers for Tsugi PHP. These can be used locally to create versions ranging from developer instances of Tsugi to versions that accept user configuration data for a scalable production deployment.
At this point scalable instances are best run on AWS since there are so many supporting services that keep socts low while allowing high scalability. Docker/Kubernetes on Azure or Google Cloud is just so much less mature so production deployments simply take more resources and DevOps talent.
Tsugi is best supported in the PHP languages but these languages are emerging and will evolve as there is interest.
Tsugi Java
This is a reasonably complete implementation of the Tsugi run-time in Java.
It shares low level IMS libraries with Sakai and is ready for production use.
Former language efforts in Tsugi beyond PHP and Java are now deprecated.
This is initial work that was produced in hopes that a community would emerge around it but when there was insufficient interest, the honest thing to do is deprecate it.
Kuberbetes/Docker recipes A great deal of effort was made to host Tsugi at scale using Kubernetes on Google Cloud. The recipes are solid as far as they go but Google Cloud is just too immature to be the suggested technique for hosting Tsugi at scale. Amazon has serverless Aurora, Elastic File System, and Elasticache - they are both very cost effective and simple to deploy and use. At some point if the Google Cloud (or Azure) ends up with a better suite of support services, this effort can be restarted. Alternatvely if there is a region where Kubernetes is the *only* solution available - this can be evolved into production ready capabilities with some additional effort.
DynamoDB was initially used for sessions storage / failover but ultimately it was slow and expensive compared to Memcached.
Tsugi NodeJS
- This was pre-emergent code but is deprecated until there is more interest.
We developed an early Python 3 Python 3 Tsugi implementation and an example of using this library in Web2Py but this is now deprecated.
Tsugi Laravel
This is the beginnings of a library to make the
Tsugi PHP
library usable in Laravel applications.
As of late 2018, we are designing and will build a next-generation tool hosting framework based on Tsugi exporting its functionality via web services. This will allow a far greater diversity in tool impementation environment choices and better meet the privacy requirements of the GDPR.