Koa

The 11th Open edX release will be named Koa.

Put stuff here that we have to remember when we start packaging up for Koa.  Especially important is information that system installers or operators will need to know. Please include your name when you add an item, so that we can get back to you with questions.

Timeline

The Koa release timeline is date-based rather than feature-based:

  • Sep 28, 2020 : community testing of the master branches, on a best effort basis.

  • Nov 9, 2020 : creation of the open-release/koa.master branch and the open-release/koa.alpha1 tag. New code on master after this date will not be part of Koa; only fixes will be cherry-picked to the open-release/koa.master branch.

  • Dec 9, 2020 : Koa release.

Installation and Operations

Service upgrades

MySQL 5.6 → 5.7 upgrade

TODO: coordinate with @Natalia Berdnikov to produce upgrade notes for Juniper users.

Upgrading a MySQL docker container

As described in the official instructions, upgrading an existing MySQL 5.6 docker container is as simple as running:

1 docker exec mysql bash -e -c "mysql_upgrade -u root -p"

Elasticsearch 1.5.2 → 7.0 upgrade

This upgrade was canceled and Koa will still be running Elasticsearch 1.5.2. The upgrade to Elasticsearch 7.8 is scheduled for Lilac.

Other services

@Felipe Espinoza wrote a convenient script to dump the versions of the various services from the native installation: version.py

On Juniper.3, we had (source):

Service

Software

Version

Service

Software

Version

System

mysql

5.6.32

System

mongodb

3.6.17

System

rabbitmq

3.6.9

System

memcached

1.4.25

System

elasticsearch

1.5.2

System

node

v12.19.0

System

npm

6.14.8

System

python

2.7.12

edx-platform

python

3.5.2

edx-sandbox

python

3.5.2

certs

python

2.7.12

discovery

python

3.5.2

ecommerce

python

3.5.2

insight

python

3.5.2

xqueue

python

3.5.2

forum

ruby

2.5.7p206

forum

gem

2.7.8

Cautions

  • Currently, celery can only support a single work queue. Routing tasks to separate queues is disabled in Koa because of difficulties with celery upgraded to 4.x.

Impact on Code

  • Django app Plugins

    • The plugins infrastructure was moved from edx/edx-platform into edx/edx-django-utils

      • see decision for more info @Jinder Singh @Robert Raposa

    • Warning: As of 10/23, we are unsure of whether this change will remain or be reverted. https://openedx.atlassian.net/browse/ARCHBOM-1577

    • This change mostly affects the location of imports other than the LMS/CMS constants (moved from openedx/core/djangoapps/plugins or openedx/core/lib/plugins to edx_django_utils/plugins).

  • LinkedIn Add to Profile Configuration (and Site Configurations)

    • The LinkedIn Add to Profile API for certificates was updated and as a result, we were able to make some updates to our logic surrounding this functionality. The change that requires updating on your part is updating your LinkedinAddToProfileConfiguration company_identifierfield (if you have that configuration defined). If you instead use Site Configurations to manage yourSOCIAL_SHARING_SETTINGS, then you will want to update the LINKEDIN_COMPANY_ID.

      • The value will be going from a value that looks like 0_0dPSPyS070e0HsE9HNz_13_d11_ to an integer, such as 1337.

    • This change will allow for the Add to Profile for certificates to autofill the form and if your Company Identifier is defined, it will link to your LinkedIn page.

  • Credentials uses boto3

  • Changes to canonical import paths in edx-platform

    • Code in edx-platform/[lms|cms|common]/djangoapps should now be imported by its full path, relative to the root of edx-platform. For example:

      1 from student import api

      should now be:

      1 from common.djangoapps.student import api

       

    • There will be partial and temporary support for the abbreviated paths in Koa, but we encourage updating the the full paths sooner than later.

    • See the forum post or the ADR for details. Contact @Kyle McCormick with questions.

Deprecations and Removals

Based on Koa Dates: 2020-05-28 to 2020-11-12

Deprecations

Removals

  • As a part of DEPR-43 work, a migration was added that will drop all tables related to shoppingcart.

  • To disable forum digest features, you now just need to set the Django Setting FEATURES['ENABLE_FORUM_DAILY_DIGEST'] to False.

    • You used to also need to set the waffle flag edx_discussions.enable_forum_daily_digest to False, but that has been replaced with the Django Setting and the waffle flag has been removed in this PR. @Robert Raposa

  • The COURSE_OUTLINE_PAGE_FLAG and UNIFIED_COURSE_TAB_FLAG feature flags have been deprecated (see PR and deprecation ticket DEPR-108). They were replaced by their negative equivalent: DISABLE_COURSE_OUTLINE_PAGE_FLAG and DISABLE_UNIFIED_COURSE_TAB_FLAG which default to False. Thus, if you manually set the older flags (which defaulted to True) to False, you should set the new flags to True.

  • The symlinks in /edx/bin to python, pip, and django-admin.py for each service were removed, as a new version of virtualenv used to create the virtual environments prevents such links from working correctly (in exchange for reliably creating working environments even if the newest releases of pip and setuptools have some problems, among other optimizations and fixes). Any scripts that currently call links such as “/edx/bin/python.edxapp” should be updated to instead call the binaries targeted by such links (in the previous example, “/edx/app/edxapp/venvs/edxapp/bin/python”). The PR that removed them has some additional background notes.

Feature Changes