Coder Social home page Coder Social logo

openedx / credentials Goto Github PK

View Code? Open in Web Editor NEW
22.0 22.0 72.0 25.54 MB

Service hosting course and program certificates

License: GNU Affero General Public License v3.0

Makefile 0.63% Python 93.10% HTML 2.03% JavaScript 1.00% SCSS 2.84% Dockerfile 0.40%
backend-service

credentials's People

Contributors

amangano-edx avatar awais786 avatar bbaker6225 avatar cdeery avatar clintonb avatar coryleeio avatar crice100 avatar deborahgu avatar dianakhuang avatar edx-deployment avatar edx-requirements-bot avatar feanil avatar jsnwesson avatar justinhynes avatar kdmccormick avatar maxfrank13 avatar mikedikan avatar mikix avatar oliviaruizknott avatar pwnage101 avatar renovate-bot avatar renovate[bot] avatar robrap avatar schenedx avatar spencerhance avatar tj-tracy avatar tuchfarber avatar usamasadiq avatar waheedahmed avatar zubair-arbi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

credentials's Issues

Add support to Credentials for CourseCertificate signatures

Work to deprecate the Old Mongo Modulestore is currently blocked from completion because signature image artifacts for course certificates are stored in Mongo's GridFS.

There is a vision that web certificates for courses will migrate to the Credentials IDA. This work is a small piece of that, specified to unblock the DEPR work while remaining aligned with the overall vision.

This work should consider:

  • image retrieval load should be done in a way that makes sense operationally given the expect load generated by this new workload.
  • signature images are uploaded in Studio today and are part of the OLx import/export process.

Crypto-backed certificates?

(needs correction) AFAIU, currently the course certifications forEach learner are stored in a (mutable) SQLdb in a server farm (somewhere amazon-knows-where). How can this be made more accountable?

Given such case, Would it be possible to issue a key-pair, where either 1. the public key forEach learner is augmented for each additional course certification, or 2. use a more ZKP scheme to prove just the required course cert to the other party.

Would be even better if the proof can be done offline anywhere, so it could replace a stamped/hand-signed piece of paper once for all.

Replace MemcachedCache backend with PymemcacheCache

The django.core.cache.backends.memcached.MemcachedCache backend is removed so we now are replacing this with PymemcacheCache in all of our IDAs, so we need to replace this for credentials also.

https://docs.djangoproject.com/en/4.2/releases/4.1/#features-removed-in-4-1

Update in following environments

General Design for Sharing Open edX Credentials

This work represents a review of the existing Credentials service and the creation of design documents and other artifacts for generalized mechanism for enabling Credentials sharing from the Open edX platform to external networks.

The design requirements should be agreed to during the design review, however, here are some initial thoughts:

  • There should be a way on integrating with external providers without altering the service core
  • Current mechanism for sharing credentials, Badgr and Accredible would ideally could migrate to the new integration mechanism.
  • Discovery work should consider integrations that are important to the community and provide a pathway to supporting them.
    • #1732
    • The OpenBadges 3.0 specification which will enable DCC Integration #1731
  • Proposal should include a plan for deprecating code that made obsolete by this effort.

AC:

  • Kick it off this project by opening an issue in the Credentials repo and scheduling some time at one of the Arch hours to brainstorm the implementation direction.
  • Do discovery work and create 1 or more candidate designs in the issue for discussion with the 2U team and other members of the community.
  • Convert the chosen option into an ADR that was merged into the Credential repository.
  • Ticket the work required to implement the accepted design

Sharing Verifiable Digital Credentials

Abstract

Learner ownership of digitally verifiable and shareable assertions of attainment -- credentials -- is aligned with goals of learner-centricity and open platforms. The Open edX platform has existing mechanisms for sharing Open edX credentials, however, they do not support recent innovations around distributed ledgers. Both the EU and the W3C have been focused on development standards for shareable, verifiable credentials based on distributed ledgers. Credentials are connected to a self-sovereign digital identity and can be shared and independently varied to support processes like applying to degree programs, applying for employment, etc.

The Initiative proposes to

  • Create a generalized mechanism for sharing Open edX credentials
  • Migrate existing implementations to that mechanism or deprecate them if they are not valuable
  • Create a reference implementation for the integration mechanism with the one or more credential stores based on distributed ledgers including the DCC/W3C wallet and/or the EU wallet.

Project-level metrics:

Impact: Increase the value of attainments achieved on the Open edX platform by allowing learners to present them in order to prove their attainment.
Measure: Deployment of reference implementation to Open edX instances, enablement of the feature, use by learners

Context & Background

TBW

Scope & Approach

TBW

Value & Impact

TBW

Milestones and/or Epics

Named Release

unknown

Timeline

Proposed By

tCRIL

Additional Info

No response

Issue for the Overall initiative

EU Digital Credentials Integration

Test credentials on Ubuntu 24.04

This repository is using Ubuntu 20.04 for testing. That version of Ubuntu will be out of support before Teak. Therefore this repo needs to be updated to testing with Ubuntu 24.04 before Sumac is cut to allow everyone sufficient time to switch to the new version.

Update this repository to test with Ubuntu 24.04 so that we can make the switch.

  • Tests are run and passing on Ubuntu 20.04 and 24.04
  • If major changes were needed and this is a library, a new version is published to PyPI or NPM

Note: In some cases, it may not make sense to test with both the old and the new version. For example, if the workflow is running linting or publishing to a package manager. In these cases, simply update the workflow to run on the newer version or opt to set it to ubuntu-latest instead if it doesn't matter what version it's running on. If you're unsure, reach out to the maintenance working group in #wg-maintenance in slack for guidance.

Known affected workflow files:

  • .github/workflows/migrations-mysql8-check.yml

Run CI on Django 4.2

In order to have support for Django 4.2, we first need to run tests on Django 4.2 in the credentials service. For updating CI, we should run tox and GitHub actions modernizers.

Tox Modernizer: tox_moderniser_django42.py

Github Action Modernizer: github_actions_modernizer_django42.py

A/C

VC fields and mapping to Credentials IDA stored data

Before starting an implementation for Verifiable Credentials sharing based on the design created in #1728, It is necessary to validate the required fields that should be included into VC/OBv3 claim.

Draft mapping of the Program and Course certificates data stored in the Credentials IDA to VC fields, that are used by MITxPRO and DCC: https://openedx.atlassian.net/wiki/spaces/OEPM/pages/3490840577/Verifiable+Credentials+design#Forming-verifiable-credentials-or-digital-credentials-using-the-learners'-data

Lxml 5.1.1 is breaking requirements installation

While installing the docker image using tutor-credentials nightly, the image build fails during the requirements installation step. The error is:

 WARNING: lxml 5.1.1 does not provide the extra 'html-clean'
 WARNING: lxml 5.1.1 does not provide the extra 'html_clean'
 ERROR: Exception:
 Traceback (most recent call last):
   File "/openedx/venv/lib/python3.8/site-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper
     status = run_func(*args)
   File "/openedx/venv/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 248, in wrapper
     return func(self, options, args)
   File "/openedx/venv/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 377, in run
     requirement_set = resolver.resolve(
   File "/openedx/venv/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve
     result = self._result = resolver.resolve(
   File "/openedx/venv/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve
     state = resolution.resolve(requirements, max_rounds=max_rounds)
   File "/openedx/venv/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 427, in resolve
     failure_causes = self._attempt_to_pin_criterion(name)
   File "/openedx/venv/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 249, in _attempt_to_pin_criterion
     satisfied = all(
   File "/openedx/venv/lib/python3.8/site-packages/pip/_vendor/resolvelib/resolvers.py", line 250, in <genexpr>
     self._p.is_satisfied_by(requirement=r, candidate=candidate)
   File "/openedx/venv/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/provider.py", line 240, in is_satisfied_by
     return requirement.is_satisfied_by(candidate)
   File "/openedx/venv/lib/python3.8/site-packages/pip/_internal/resolution/resolvelib/requirements.py", line 83, in is_satisfied_by
     assert candidate.name == self.name, (
 AssertionError: Internal issue: Candidate is not for this requirement lxml[html-clean,html-clean] vs lxml[html-clean]

This is likely because Lxml 5.1.1 is being installed which does not contain the html-clean extra.

Lxml 5.2.1 should be the package being installed here instead but the requirements do not list it as such because of the constraint

# Pinning lxml to < 5.2 as edx-i18n-tools package needs to be updated.
# Release notes: https://pypi.org/project/lxml/5.2.0/
# Github issue: https://github.com/openedx/i18n-tools/issues/144
lxml<5.2

that was pinned in #2430. edx-i18n-tools has been updated as per this PR and it is safe to remove the constraint now.

Running Karma tests in CI

After the Node 16 upgrade our non-React JS tests stopped working during CI. After some research, we were made aware that this may be an issue with Firefox not being captured correctly running in a GitHub/GitHub Actions + Karma + Node 16 environment (see karma-runner/karma-firefox-launcher#245).

When we discovered the issue we attempted to move away from Firefox and use a headless version of Chromium instead. We were able to get this working in CI, but ran into issues locally when installing a new dependency (puppeteer) used to facilitate the use of Chromium with Karma.

Currently, we have a method of running the tests locally that we do manually during development. Ideally, we'd like to get these tests working in CI again.

Potential Options:

  • We might be able to get Chromium working using puppeteer-core
  • Other options like Chrome/PhantomJS/etc as a headless browser

Translations Build Failure

This will be tracked internally at 2U by https://2u-internal.atlassian.net/browse/APER-1976.

The jobs started failing a few weeks ago. AFAIK, we have not triaged the error to know why they are failing. The original error alert triggered on August 14th. This job has continued to fail each Sunday since the original failure (so a re-run doesn’t look like it will fix the issue).

The logs has an error that looks like:

20:18:22 2022-08-14 20:18:22,667 INFO 43769 [utils.py:290] - Opened PR: https://github.com/openedx/credentials/pull/1719
20:18:23 2022-08-14 20:18:23,214 INFO 43769 [utils.py:424] - Deleting branch credentials:transifex-bot-update-translations2022-08-14.
20:18:23 Traceback (most recent call last):
20:18:23   File "transifex/pull.py", line 120, in <module>
20:18:23     pull(
20:18:23   File "transifex/pull.py", line 84, in pull
20:18:23     raise RuntimeError('Failed to compile messages.')
20:18:23 RuntimeError: Failed to compile messages.

A link to a failing PR from this job: #1740 .

Looking at our CI runs I also see an error that looks like:

msgfmt: found 1 fatal error

INFO:i18n.validate:Different tags in source and translation
  msgid: Issued {month} {year}
  -----> Emitido {mes}{año}
  -----> "{month}", "{year}" vs "{año}", "{mes}"

This looks like we may have had a templated string in Transifex that shouldn’t be translated.

We think this may need to be fixed inside of Transifex.

Move Credentials event bus functionality to publish-by-config

The Credentials service was recently updated to support publishing program certificate events to the Event Bus (EB).

At the time, publishing events to the EB required code. There is work being done to enable publishing of events to the EB via configuration.

Work is planned to convert Credentials to a publish-by-config approach. This means we will be deprecating and removing the following settings:

  • PROGRAM_CERTIFICATE_EVENTS_KAFKA_TOPIC_NAME: topic names are part of the EVENT_BUS_PRODUCER_CONFIG and a separate setting will no longer be needed
  • SEND_PROGRAM_CERTIFICATE_AWARDED_SIGNAL: removed in favor of a single setting (SEND_LEARNING_PROGRAM_CERTIFICATE_LIFECYCLE_EVENTS_TO_BUS) to enable publishing program certificate events to the EB
  • SEND_PROGRAM_CERTIFICATE_REVOKED_SIGNAL: (see above)

Work will be tracked as part of an internal 2U JIRA ticket: https://2u-internal.atlassian.net/browse/APER-2966

Right-to-left language display broken in Course Certificates display

This ticket may cover multiple independent bugs and need to be broken up. The "Issue date" is the only translated string. We're not certain how best to handle this.

This was logged for course certificates, and would be fixed in edx-platform: https://github.com/edx/edx-platform/blob/40964045e4cc284a8761419d2dc3cdd8e5cd1c6e/lms/djangoapps/certificates/views/webview.py#L123

Original Report:

Learners with browsers using a right to left language as their default will see the certificate jumbled:

Steps to reproduce

  1. Set browser default language to Arabic or other R to L language
  2. View a certificate
  3. Note the signatures, instructor names and Valid cert ID are to the left instead of the right.

Also to note, usually the Issue date is in the browser default language instead of the certificate language (this is the only bit actually translated)

Open Badges 3.0: Support for external credential sharing

Version 3.0 of the Open Badges specification is expected to be approved in the June of 2022. This specification will allow learner to share their accomplishments across numerous networks, supporting many learner-centric use cases like:

  • simplified application for degree and non-degree programs
  • simplified application for employment where verification of credentials is required
  • management of continuing educational units required for maintaining professional certification.

Additionally, support for Open Badges 3.0 will allow the Open edX platform to share credentials with the DCC/W3C network described in #1731 . Thus this issue is a prerequisite for that item and will represent most or all of the scope of that issue.

The specification for Open Badges 3.0 is available here: https://github.com/IMSGlobal/openbadges-specification/tree/develop/ob_v3p0

Remove bok-choy usage

This repo's acceptance tests still use the bok-choy framework, which was deprecated in Feb 2022. The bok-choy repository is no longer being maintained, and it will soon be archived.

Once the bok-choy repo is archived, the acceptance tests should continue working, as we will not be removing the package's releases from PyPI. For long-term maintainability of this repo, though, the tests should eventually be upgraded to a non-bok-choy testing framework or removed.

Digital Credentials Consortium Integration

Digital Credentials Consortium Integration

Abstract

The Digital Credentials Consortium is a network of leading international universities designing an open infrastructure for academic credentials.

Further details are available here.

This issue proposes designing and implementing an integration between the Open edX platform and the DCC sign-and-verify service and the mobile-based wallet application.

Context and Background

The DCC credential specification was created by a consortium that includes a number of edX partners and Open edX users. The specification is aligned with W3C verifiable credentials initiatives. There is a clear connection between open learning and open credentials standards that emphasize learner ownership and control of attainments.

There is an existing, adjacent, implementation of integration with the DCC sign-and-verify service and mobile wallet. However, there is no direct integration with the Open edX platform. The existing integration is written in python and works with the Django framework. Both technologies are core to the Open edX platform architecture.

Prior art:

Scope and Approach

The design should consider integrating with Open edX existing credential store in a loosely coupled way. DCC integration should be optional. Enabling it and configuring it should use project standards like feature flags.

Ideally, the integration can leverage the existing library. Ideally the Open edX project developers and ODL can collaborate on enhancing and maintaining the library.

Value and Impact

To be written

Milestones

Migrate signature assets from MongoDB GridFS to the Credentials IDA

In order to transfer ownership of CourseCertificate signature assets from the LMS to the Credentials IDA:

  • existing assets will need to be transferred across
  • a mechanism will need to be in place to updated assets when they are changed
  • we should consider whether ownership means changing how studio/publisher work

Discovery into libraries required for a python version of Sign and Verify

There are several libraries that provide critical, low-level functionality that will be necessary for implementing VC Sign and Verify in python. We will need to understand which libraries exist and, ideally, choose ones that are full-featured and well-support.

If we have to implement any of these libraries ourselves, we should not that and consider the ROI for that choice.

The list as we currently understand it is:

  • JSON-LD library for parsing, navigating, expanding, and contracting JSON-LD input
  • Encryption library that supports the ed25519 algorithm

Issue building arm64 Credentials Docker image

On 2024-05-08 an update was made to the public Dockerfile to support Python 3.11 (#2474).

After this merged to the master branch, I noticed that the Build and Push Docker Images workflow has started to fail.

Before merging my changes, I had verified a successful build of a docker image from the repo's base Dockerfile. Upon further inspection, I realized that we are building multiple versions of the image for multiple platforms (linux/amd64 & linux/arm64, configured here -- https://github.com/openedx/credentials/actions/runs/9014850121/workflow#L53).

This issue seems specifically related to the image build for linux/arm64. It is having an issue finding a compatible version of the didkit dependency for the arm64 image.

Logs from a failed workflow: https://github.com/openedx/credentials/actions/runs/9014850121/job/24768334656.

We first build the linux/amd64 version, which is able to locate and install didkit v. 0.3.2:

#26 4.081 Collecting didkit==0.3.2 (from -r requirements/production.txt (line 77))
#26 4.103   Downloading didkit-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.8 kB)
...
#26 15.47 Downloading didkit-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.6 MB)
#26 15.58    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.6/10.6 MB 95.0 MB/s eta 0:00:00
...
Installing collected packages: webencodings, text-unidecode, pytz, python-memcached, pypng, polib, openedx-atlas, itypes, fontawesomefree, django-webpack-loader, django-sortedm2m, zope-interface, zope-event, urllib3, uritemplate, typing-extensions, sqlparse, six, simplejson, semantic-version, pyyaml, python-slugify, pymemcache, pyjwt, pygments, pycparser, psutil, pillow, pbr, path, oauthlib, newrelic, mysqlclient, markupsafe, markdown, lxml, jmespath, inflection, idna, gunicorn, greenlet, fastavro, dnspython, django-ratelimit, didkit, ...
...
Successfully installed asgiref-3.8.1 attrs-23.2.0 backoff-2.2.1 bleach-6.1.0 boto3-1.34.99 botocore-1.34.99 certifi-2024.2.2 cffi-1.16.0 charset-normalizer-3.3.2 code-annotations-1.8.0 coreapi-2.3.3 coreschema-0.0.4 cryptography-42.0.7 defusedxml-0.8.0rc2 didkit-0.3.2...

However, during the image build for linux/arm64, we run into issues:

#50 21.22 ERROR: Could not find a version that satisfies the requirement didkit==0.3.2 (from versions: 0.0.1, 0.2.1)
#50 21.22 ERROR: No matching distribution found for didkit==0.3.2
...
21.22 ERROR: Could not find a version that satisfies the requirement didkit==0.3.2 (from versions: 0.0.1, 0.2.1)
21.22 ERROR: No matching distribution found for didkit==0.3.2
------
Dockerfile:67
--------------------
  65 |     # Dependencies are installed as root so they cannot be modified by the application user.
  66 |     RUN pip install -r requirements/pip_tools.txt
  67 | >>> RUN pip install -r requirements/production.txt
  68 |     
  69 |     RUN mkdir -p /edx/var/log
--------------------
ERROR: failed to solve: process "/bin/sh -c pip install -r requirements/production.txt" did not complete successfully: exit code: 1

I'm not sure if this is caused by an incompatibility between Python 3.11 and didkit. I have not rolled back the changes to the public Dockerfile as Python 3.11 was a requirement for the Redwood release of Open edX.

Update existing LMS web-certificate code in place to fetch assets from the Credentials IDA

As part of the process of changing ownership of CourseCertificate signature assets, existing certificates and the code that creates certificates in the LMS will potentially need to be changes to support the new canonical asset source.

This issue current represent both the required discovery and the execution of making certificates function as they do today with a new asset source.

Remove dependency on Discovery IDA

Context

During discussion about the future of Credentials IDA and it's functionality, it came up to discussion that dependency on Discovery brings a lot of complexity for operating Discovery. Discovery is used to provide Programs and Course Runs data to form a Learner Record for a user. Furthermore, programs can be configured only in Discovery IDA, therefore the dependency between Credentials and Discovery can't be removed without changes to programs implementation in Open edX.

It was decided to evaluate the possibility of reimagining the Program's implementation, so this functionality can be moved out of Discovery IDA and integrated directly into LMS, for example via a separate plugin. This would reduce operational complexity, but also make it possible to evolve and provide more value for community installations. Additionally,

This ticket can be used for tracking purposes for this initiative.

Next steps

  • Prepare a proposal for updating Programs implementation in Open edX - @GlugovGrGlib
  • Review and discuss proposal in the community
  • Outline roadmap for Credentials IDA to remove Discovery IDA as dependency and integrate with LMS more closely

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Warning

These dependencies are deprecated:

Datasource Name Replacement PR?
npm @babel/plugin-proposal-object-rest-spread Unavailable

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

dockerfile
Dockerfile
  • ubuntu focal
github-actions
.github/workflows/add-depr-ticket-to-depr-board.yml
.github/workflows/add-remove-label-on-comment.yml
.github/workflows/add-to-project.yml
.github/workflows/ci.yml
  • actions/checkout v4
  • actions/setup-python v5
  • actions/checkout v4
  • actions/setup-python v5
  • actions/setup-node v4
  • actions/checkout v4
  • actions/setup-python v5
  • actions/setup-node v4
  • codecov/codecov-action v4
  • actions/checkout v4
  • actions/setup-python v5
.github/workflows/commitlint.yml
.github/workflows/migrations-mysql8-check.yml
  • actions/checkout v4
  • actions/setup-python v5
  • actions/cache v4
.github/workflows/push-docker-image.yml
  • actions/checkout v4
  • actions/github-script v7
  • docker/setup-buildx-action v3
  • docker/setup-qemu-action v3
  • docker/login-action v3
  • docker/build-push-action v5
  • docker/build-push-action v5
.github/workflows/self-assign-issue.yml
.github/workflows/upgrade-python-requirements.yml
npm
package.json
  • @openedx/paragon ^22.0.0
  • bi-app-sass 1.1.0
  • css-loader 7.1.2
  • css-minimizer-webpack-plugin 7.0.0
  • file-loader 6.2.0
  • mini-css-extract-plugin 2.9.1
  • sass 1.78.0
  • sass-loader 16.0.1
  • url-loader 4.1.1
  • webpack 5.94.0
  • webpack-bundle-tracker 3.1.1
  • @babel/core 7.25.2
  • @babel/eslint-parser 7.25.1
  • @babel/plugin-proposal-object-rest-spread 7.20.7
  • @babel/plugin-transform-modules-commonjs 7.24.8
  • @babel/plugin-transform-object-assign 7.24.7
  • @babel/preset-env 7.25.4
  • @edx/eslint-config 4.2.0
  • babel-loader 9.1.3
  • eslint 8.57.0
  • eslint-plugin-import 2.30.0
  • eslint-plugin-jsx-a11y 6.10.0
  • jasmine-core 5.3.0
  • jasmine-jquery 2.1.1
  • karma 6.4.4
  • karma-coverage 2.2.1
  • karma-firefox-launcher 2.1.3
  • karma-jasmine 5.1.0
  • karma-jasmine-jquery-2 0.1.1
  • karma-spec-reporter 0.0.36
  • karma-webpack 5.0.1
  • webpack-cli 5.1.4
nvm
.nvmrc
  • node 20
pip_requirements
requirements.txt
requirements/monitoring/requirements.txt

  • Check this box to trigger a request for Renovate to run again on this repository

BD-11 - Credentials infrastructure + syncing

Abstract

The Open edX credentials service is currently used only for program credentials.

In 2020, OpenCraft conducted a technical discovery that provides high-level proposals for extending the credentials application. This proposal contains the results of the discovery.

Context & Background

Marco Morales:

This has been stuck behind me writing detailed product requirements for a long time, though the project is based on work done before. Also, our addition of program records 2 years ago (edx/credentials) can be seen here. A preview of a learner "My Achievements" view is shown in this Invisionapp as well, but that was never built.

Scope & Approach

See discovery document (2020)

Marco's requirements:

Building on the ideas in the "work done before" document before here are a few milestones to consider / size:

  • Migrating course credentials on edx out of the edx-platform django app and to the credentials service. Marking the edx-platform app deprecated then after we have moved to the credentials service
  • Making the course certificate override system that works in edx-platform also exist / work in the new credentials system. Migrate existing overrides to the new credential system.
  • Explore having native support for the Badge.20 spec or W2C verified credential specification in the credential service, enabling easier transfer of credentials to external networks in the future. This might result in some renaming / additions to the current service and how we store credentials.
  • Support the idea that a given credentials could have multiple representations (badge, record, certificate, or others not yet defined). This is echoed in the "My achievements view which shows course + program records + certificates on one view.
  • Define a platform boundary for "Certificate Networks" that are enabled as tools to transfer credentials externally. Examples of this might be a learner being able to "add their credential to credly or degreed." Also enable a credential network to be synced automatically, without learner intervention. Example here is that enterprise learners or learners who complete enterprise enrollments with appropriate data consent might automatically have those course / program credentials sync to Credly automatically. Other credential network examples include decentralized blockchain backed credential systems like BlockCerts.
  • Platform upgrades, documentation + OEP support for the credentials service. Updates to support it being easier to deploy TBD based on Open edX MFE deployment effort.
  • There may be other items from the "B" section of the "work done before" document that would be worth incorporating as a milestone in this bid /quote.

Value & Impact

TBD

Milestones and/or Epics

Deliverables/milestones:

  1. Migrate course certificates backend into credentials
  2. Migrate course certificates frontends to MFEs
  3. Explore Open Badges 2.0

Named Release

Nutmeg or Olive

Timeline

TBD - Q3/Q4 2022

Proposed By

OpenCraft

Additional Info

The initial discovery was prepared by Jill Vogel ([email protected]) -- feel free to reach out to her with any questions.

Django 4.2 Upgrade

Description

Under the effort of Django 4.2 Upgrade, complete all of the following steps to complete the upgrade.

  • Update tox & Github action workflow using modernisers to add support for Django 4.2
  • Remove any versions of Python earlier than 3.8 from tox.ini, and GitHub Actions workflows.
  • Update the pinned Django version in the requirements to Django==4.2
  • Run make upgrade to update all dependencies for Django 4.2.
  • Run and verify all tests are passing in the CI for both Django 4.2 and Django 3.2 to contain backward compatibility.
  • Run available code-mods to fix the failing tests.
  • Add conditional checks wherever needed to still have support for Django 3.2.
  • Update the repo support field in the IDA Upgrade Sheet.

[DEPR]: Program Record UI

Proposal Date

19 aug 2022

Ticket Acceptance Date

25 sept 2022

Technology Removal Date

30 Jan 2023 (date subject to change but will be after Olive cutoff)
August 2023

First Open edX Named Release Without This Functionality

Quince

Rationale

The Credentials front end uses an outdated approach to React JS usage, and still uses django templating.

Removal

Entire front end: https://github.com/openedx/credentials/tree/master/credentials/templates

Replacement

We are replacing the UI with an MFE: https://github.com/edx/frontend-app-learner-record/

Core functionality will be 1:1. Exceptions include:

  • Credit pathway requests UI will be updated to support data model changes discussed in the following ADR: #1695
  • Masquerading will be replaced with a support tool.

Deprecation

No response

Migration

No response

Additional Info

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.