For an overview of SAIL and Pas, please see Using the Pas Suite.
SAIL is basically a container system that provides services to JavaBeans. These JavaBeans define the activity. SAIL provides for their persistence, deployment, and revision history. SAIL also provides a facility to record learner interactions, designed specifically to support education research.
To make a SAIL activity without Pas is just to make a bean that does something. At least one bean in the container will want to listen for the "sessionStart" event to know that is the proper time to present itself to the student. Such an example bean, BasicExampleSessionListeningBean, is contained in the SAIL Core source tree. You can build a packaged SAIL activity, called a curnit, using BuildBasicExampleCurnit. BasicExampleSessionListeningBean demonstrates how to code a bean and make it listen to session events.
RimExampleSessionListeningBean builds on BasicExampleSessionListeningBean to add in saving of learner data. Beans define rims through which data is recorded. At learner time (the system state in which the learner is using the activity) the SAIL framework attaches a sock to the rim to collect the data for that learner. You can build a curnit demonstrating this with BuildRimExampleCurnit. Try running it in a debugger and stepping through the execution to see exactly what takes place when.