We now offer a demo installation at http://www.demo.open-submit.org (#98). This lead to a new configuration option called DEMO, which allows to enable passthrough login buttons on the landing page.

We now offer a Terraform-based installation of OpenSubmit on cloud computing resources. Check the Terraform section in the admin manual for further details.

The traditional opensubmit-webconfigure call is now split up into three explicit commands:

opensubmit-webconfigcreate

Creates a new config file for OpenSubmit. Supports several command-line options and environment variables for pre-defining configuration options, as described in the manual section about Configuration of the web application (#238).

opensubmit-webapachecreate

Creates a new Apache configuration snippet, based on an existing OpenSubmit configuration.

opensubmit-webconfigtest

Checks the current configuration for validity. Supposed to be called after updates.

The new HOST_ALIASES configuration option allows you to set alternative host names for your OpenSubmit web machine. This makes sure that the CSRF protection does not prevent users from entering the site under a different name.

All views are now Django class-based views, which eases the future development and implicitely improves the catching of illegal HTTP requests (#233).

We switched to Django 1.11.

We switched to a new LTI support library, which hopefully improves the compatibility to LMS systems. There is now also support for automated LTI configuration.

Make sure that you run opensubmit-webconfigtest resp. opensubmit-execconfigtest after installation.

The student frontend got a small design change (#219). Withdrawn submissions are now collected on a separate page (“Archive”). The landing page provides three sections with open work (=open assignments the student can submit for), work in progress (=submissions under validation / grading) and finished work (=submissions that where graded, positively validated or where the deadline is over). This also allows to access assignments from the past, even when the deadline is over, as long as the course remains active. The student manual was updated accordingly.

You can now send mails to a set of students (#123) from the list of submissions.

The grading table got more powerful, you can now enable / disable the assignments to be shown (#214).

Validation scripts can produce dedicated messages that are only visible to tutors. They are now also shown in the teacher backend (#213).

The documentation is now clearer about the Job.expect() interface and the role of TimeoutException.

The link to the assignment download in the submission details is now fixed. It also shows more details with this update.

Assignment lists in the teacher backend are now sorted.

Error code generated by student programs are no longer modified, but reported as-is by the executors (#215).

The output of student programs was saved with double new-lines. This is fixed now (thanks to @tttee).

The footer now links to the student / teacher manual page. The teacher backend link now only shows when the user has the according rights.

The code base is now automatically checked for security bugs in the dependencies. Keyboard input created by the validation script is no longer double-echoed (#229).

We got a logo!

Make sure that you run opensubmit-webconfigure resp. opensubmit-execconfigure after installation.

After several months of beta testing, this is the largest release ever made for OpenSubmit.

There are two major changes that make this upgrade more important (and more painful) than the ones before:

OpenSubmit no longer supports Python 2. You need Python 3.4 or newer, both on the web server and and test machines.

The programming model for test scripts has changed in an incompatible way.

With this release, we also introduce the new home page at http://open-submit.org. It currently offers a set of (unfinished) manuals for students, course owners and administrators.

This update is the first major change, since 2012, in the way how test scripts are written. We hope that the new features and future possibilities are convincing enough for the additional upgrade efforts.

Thanks to @tttee and @tzwenn for contributing patches to this release.

The web application (opensubmit_web) and the executor daemon (opensubmit_exec) are now written in Python 3. You need to adjust your web server configuration and, in case, your Virtualenv installation accordingly (see below).

The separation between admin backend and teacher backend is gone (#179). There is only a teacher backend now. Administrative actions are offered in the ‘System’ section of the teacher dashboard. Everbody, including the administrators, is therefore now forced to go through the student authentication page.

Since admins have no longer a separate user name / password entry into the system, they need a different way to manage initial user permissions. This is realized with new features in the opensubmit-web command-line tool. It supports explicit role assignment (make_student, make_owner, make_admin), based on an user email address. As an alternative, these actions are also offered in the user section of the teacher backend. (#9)

The opensubmit-web tool now also has a create_demo command. It installs a set of dummy courses, dummy assignments and dummy users for quick testing.

Assignments can now be non-graded, simply by not chosing a grading scheme in the assignment configuration. Assignments can now also be published without a deadline. Both things are indicated in the student dashboard, the ordering was adjusted accordingly. (#183, #198, #177)

Several list views in the teacher backend now have advanced sorting and search support.

File names of student submissions are now kept. This ensures that Makefiles being provided by the validator package always work. (#149)

Test machines can now be disabled. This gives you an upgrade path when switching to v0.7-style test scripts - disable all test machines, exchange the test scripts in the assignments, and re-enable them.

Test machines now can have a human-readable name. If this is not given, than the old naming scheme applies (#201).

Assignment descriptions can now be uploaded to, and served by the OpenSubmit installation. You are still able to use an external link for the assignment description. (#172, #174)

Beside these changes, there were also several internal improvements:

Since we switched to Python 3, all installation packages are now wheels.

Since we switched to Python 3, all UTF-8 rendering issues are now solved (#182, #184).

There is improved support for contributors by integrating Travis CI and Scrutinizer, by making PEP-8 a reality in many code parts, and by supporting Anaconda as default IDE.

Due to the complete re-write of the executor code, the error reporting and internal logging is now much more detailed (#191, #193, #196). The new executor checks by itself if it is still compatible to the contacted version of the OpenSubmit web application.

OpenSubmit will now start to follow the PEP-440 version scheme. This allows us to release beta versions that are not installed during a regular upgrade procedure of your Python installation.

The newly offered OpenSubmit manual is the central source of information for how to write a test script. Here is the short overview of differences for upgrading users:

A validation test or full test script can now only be written in Python >=3.4. It contains a single function validate(job) that is called by the executor. It still must be named validator.py, but can be stored within an archive with additional support files.

All information about the student submission is available in the provided Job object. Check the manual for more details. (#113)

The Job object also offers a set of convinience functions, such as searching for keywords in the submitted student files. Check the manual. (#6, #124)

The result reported to the student is now sent explicitely by the test script, and no longer implicitely derived from the exit code of the script. If you forget to send a result in your validator, then every function run not throwing an exception is reported as success with a default message. Check the online examples.

Calling configure, make or the compiler is now an explicit activity in the test script. This reduces the amount of options for assignments in the web interface, and increases the flexibility on the testing side. It also leads to the fact that support files are no longer an extra thing, since they can be simply added to the test script archive (#189). We hope that this fundamental architectural change, and the complete re-factoring of the code, helps to solve traditional problems with Windows-based test machines (e.g. #144). This one is for you, @thehappyhippo.

Based on the fantastic pexpect library, you can now interact with the running student application in your test script code. This includes the support for student applications that expect a TTY. Check the example.

There are updated online examples for test scripts in the new format. We are also still working on imroving the manual for teachers - stay tuned.

Make sure that your web server can run Python 3 code, f.e. by installing libapache2-mod-wsgi-py3.

Run pip3install--upgradeopensubmit-web to fetch OpenSubmit into your Python 3 installation.

Run opensubmit-webconfigure, as usual. The configuration file format did not change, but there is a larger set of database migrations that must be executed for this release. The Apache 2.4 configuration is also re-generated in a format that fits to libapache2-mod-wsgi-py3.

Run pip3install--upgradeopensubmit-exec to fetch OpenSubmit into your Python 3 installation.

Run opensubmit-execconfigure, as usual. If you see strange error messages, try to delete /etc/opensubmit/executor.ini and re-run opensubmit-execconfigure to create a new one. In case, adjust it accordingly.

Start to port your test scripts to the new format, and upload them for your assignments.

Re-enable the test machines and check if the validation works again.

This release is, obviously, only compatible to executors from the v0.7 series.