Skip to content

v2.0

Compare
Choose a tag to compare
@fushar fushar released this 25 Jun 10:43
· 300 commits to master since this release

The first Judgels release with proper versioning! πŸŽ‰

This release focuses on three things:

  • Simplicity in understanding the concepts for end users, by removing the Greek codenames from public usage. Now it is just "server", "client", and "grader".
  • Simplicity in deployment, by merging the backend microservices into one server monolithic app.
  • Simplicity in development, by having a single framework for backend, Dropwizard (removed Play framework).

Migrating from "v1"? See: https://judgels.toki.id/docs/migration-guides/1to2.

Judgels server

Breaking changes

  • Merged Jophiel, Sandalphon, Uriel, Jerahmeel into one monolithic app: "Judgels server" (Docker image: ghcr.io/ia-toki/judgels/server).
  • Problem/lesson partner permissions are simplified and collapsed into just two:
    • VIEW: can see everything,
    • UPDATE: can edit everything.
    • Old partners will have the UPDATE permission if and only if the "Is allowed to edit problem" checkbox is ticked, otherwise VIEW.
  • The default domain for "Sandalphon" web interface (now called admin web interface) is admin.* (formerly sandalphon.*)
  • Removed support for nginx config for RabbitMQ management interface.

New features

  • Changed base Docker alpine image to alpine:3.18.0 and then install Java manually (was openjdk:8u181-jre-alpine3.8).
  • Problem/lesson partners can now be added in bulk via CSV input.

Judgels client

Breaking changes

  • Renamed Raphael app to: "Judgels client" (Docker image: ghcr.io/ia-toki/judgels/client).

Judgels grader

Breaking changes

  • Renamed Gabriel app to: "Judgels grader" (Docker image: ghcr.io/ia-toki/judgels/grader).

New features

  • Graders can now sync the required test data from Judgels server automatically during grading.
  • Ubuntu 22.04 is finally supported, by bumping Isolate to 1.10.1 (from 1.8.1).

Ansible deployment

Breaking changes

  • The admin interface's default domain name is now admin.* (from sandalphon.*).
  • Changed docker restart policy to on-failure with max retries 3 (from always).
  • Changed the host mount point from /judgels to /opt/judgels.
  • Renamed file dist/hosts => dist/hosts.ini.
  • Renamed file dist/env.yml => env/vars.yml.
  • Renamed these keys in env/vars.yml:
    • judgels_{name,slogan,title,description} => app_{name,slogan,title,description}
    • raphael_url => nginx_domain_judgels_client
    • judgels_server_api_url => nginx_domain_judgels_server_api
    • sandalphon_url => nginx_domain_judgels_server_admin
    • judgels_api_url => nginx_domain_judgels_server_api
    • letsencrypt_email => nginx_certbot_email
    • jophiel_superadminCreator_initialPassword => jophiel_superadmin_initialPassword
  • Removed these keys in env/vars.yml:
    • {jophiel,uriel,jerahmeel}_url (replaced with nginx_domain_*)
    • {jophiel,sandalphon,uriel,jerahmeel,gabriel}_xmx (replaced with java_opts_*)
    • judgels_mode (always JUDGELS for now)
    • judgels_scheme (always https)
    • {db,rabbitmq}_host (always localhost)
    • db_options (always ?useSSL=false)

New features

  • New keys in env/vars.yml:
    • app_version: Docker image tag
    • java_opts_judgels_{server,grader}: JVM opts. Any opts is supported, not limited to -Xmx.
  • Allowed letsencrypt ACME challenges to be done over https.

For developers

  • Reworked the Java projects into the following subprojects:
    • judgels-commons
    • judgels-server-{api,app}
    • judgels-grader-{api,engines,app}
  • The former {Jophiel, Sandalphon, Uriel, Jerahmeel, Gabriel} microservices are now just Java packages inside the judgels-server-* projects.
  • The administration (non-React) interface is now called "Michael". It is rewritten from Play framework to just Dropwizard, with Freemarker templating. Now, all backend logic are written in just one framework (Dropwizard), reducing dev confusion.
  • Bumped minimal Java version to 11 (from 8).
  • Bumped Gradle to 8.1.1 (from 6.0.1).
  • Bumped org.glassfish.jersey.core:jersey-client to 2.30 (from 2.25.1).
  • Bumped caffeine to 3.0.2 (from 2.8.1).
  • Removed all Palantir dependencies (sls-packaging, launch-config, baseline, git-version, conjure).
  • Removed wiremock dependency.
  • Removed jquery dependency.