After an unforgettable Open edX 2022 conference and co-working retreat last year in Lisbon, Portugal, we were eager to see what our 2023 trip had in store!

As our team is 100% remote, these two weeks of the year are a great way to connect, catch-up, and meet new team members. Sadly, not everyone was able to join in the fun, but we still had representatives from Australia, Europe, Asia, North America, South America, and Africa. Here’s the lowdown on the two weeks we spent together.

Week 1: Open edX Conference 2023

This year, Open edX went back to its roots and hosted its annual conference at MIT, the birthplace of the Open edX project. In fact, the conference was held in the very same building in which the first lines of code were written for the platform. Sitting there 12 years later, you couldn't help but think how much the platform has grown and how far we've come as a community over the years. 

MIT Dome

As some of Open edX's biggest fans and most active contributors, the OpenCraft team makes an effort to attend the conference whenever we can. It's a wonderful opportunity for us to reunite with the people we work with during the year - both within our own team and the community at large. Also, because our team members are often selected as speakers at the conference, we get the opportunity to show off what we've been working on and share our ideas with the community. In turn, we get the chance to learn about what others have been working on. We often leave a lecture hall feeling inspired by the efforts of other community members and brimming with new ideas! 

This year's conference branding was created by our UX and UI designers

Four OpenCraft team members presented a talk this year. Xavier Antoviaque spoke about "Building Collaborative Courses" by involving learners in the course creation process. Braden MacDonald joined other members of the Product Development team to introduce the Modular Learning Initiative to the community and discuss how community input helps shape product development. Jillian Vogel joined Brian Mesick to share the progress of the OARS (Open Analytics Reference System) project: an ambitious effort to improve the analytics of the Open edX platform. Lastly, Piotr Surowiec discussed the work that went into migrating a comprehensive theme from a legacy frontend to the MFE. He outlined the key differences between the theming options in the comprehensive theme and the MFE.

Every year, the welcome address and keynote talks are some of the main highlights of the conference. For those of you who couldn’t make it to Boston this year, we’ve linked to the videos of these talks below:

When not presenting talks, participating in workshops, or meeting with our clients, the OpenCraft team managed to sneak in some good old-fashioned fun! We beat the cold by visiting the Cambridge Brewing Company (who, by the way, serve delicious fried Brussel sprouts that even devout haters of the vegetable would enjoy!). We embarked on a self-guided tour through the MIT grounds where we marveled at the Biomimetic Robotics lab, got chased out of the library, and walked the campus grounds alongside a group of Canadian geese. On Wednesday night, we attended the conference reception where we wined and dined within the walls of the MIT Museum. And on the last day, just to throw in a little bit of culture, we visited the Isabella Stewart Gardner Museum where we found each display to be more interesting and opulent than the last. 

The conference went by in a flash, but we certainly managed to make the most of our time! Not only were we able to interact with the community in a way that remote collaboration doesn't always allow, but we also got the chance to strengthen our bond as a team - something money just can't buy! Once the 2023 conference had drawn to a close, we headed back to our Airbnbs to prepare for our next adventure: an OpenCraft co-working week in Bogotá, Colombia!

Week 2: Co-working week!

We arrived around the 1st of April, ready to have fun in the vibrant city of Bogotá. The Colombian capital is a whopping 2,625 meters (8,660 feet) above sea-level. We were warned that the city’s dizzying heights can give you a touch of soroche, or altitude sickness. So we made sure to take it easy the first few days after we’d landed.

Some OpenCrafters exploring the gardens of Bogotá

One week is definitely not enough to catch all the sights of Bogotá. The city sprawls as far as the eyes can see, cradled between the chilly peaks of the Andes mountains. We experienced four seasons in one day. Sun, rain, wind, hail - you name it. We never knew what to expect. Thank goodness for our cozy co-working space at CO+LABORA in Usaquén. The area oozes cool. Trendy restaurants and bars adorn cobblestone streets, while storefronts are painted with bright patterns and colors. 

When we travel as a team, you never go hungry. Everyone is eager to try everything! This time it was arepas, empanadas, pescado frito, ceviche, bunuelos, arequipe, and, of course, coffee! 

While we do work a bit and the face-to-face interactions are invaluable, we also play a lot. Our team has an amazing adventurous spirit. But there’s also no pressure if a proposed activity is not your jam. For example, only a few of us decided to tackle the mountain of Monserrate. It sits 3,152 m (10,341 feet) above sea level, and it dominates the center of Bogotá. At the top of the mountain rests a church with a shrine, devoted to El Señor Caído. We set out, and it was testing. But in the words of our intrepid leader, Xavier Antoviaque, “This mountain isn’t going to hike itself!” And it didn’t. We used every muscle and every breath to make it to the top. The steep rise in altitude is what makes the hike a beast. The route is scenic and peppered with colorful vendors and their canine friends.

Hike up Monserrate

We stopped multiple times, not just to take in the majestic views, but to also catch our breath. But, we did it in the end! And it was worth it. Magnificent gardens lie at the foot of the church. The views are so good that no picture can really do them justice. 

Views from the top of Monserrate
Fearless OpenCraft hikers

Other highlights of the trip included visiting and working at the awesome EduNext offices. We’re so lucky to have such wonderful friends and colleagues like you!

OpenCraft and EduNext team working together!

We also visited the beating heart of Bogotá, La Candelaria. The neighborhood‘s narrow streets are adorned with out-of-this-world graffiti, shops selling emeralds, handcrafts, religious artifacts, crystals, and sacred herbs for smudging. This melting pot of culture leads to hotspots like the Gold Museum and Museo Botero. Both showcase absolutely amazing collections. Not to be missed!

Now back to food. Every year we end our week with a special team dinner. Our team dinner this year was nothing short of spectacular. We were treated to course after course at Humo Negro. The chef presented us with his preferred menu. He was full of passion and it just added to the beauty of the experience. The dishes were beyond original, and praised local ingredients. Think “salad” that comes in the form of a ball that pops in your mouth, grilled oysters with burnt cream and seaweed, sea urchin mousse, crispy sea snail with pumpkin seed puree and pickled guatila, chawanmushi with pirarucu, scallops and spirulina, and arracacha with grilled wild berries and yogurt. I would never have been so daring if the food hadn’t been set down in front of me. And man, it’ll remain one of the best memories of food I’ll ever have. Our team laughed and bonded over these strange, surreal dishes. Well done, Humo Negro. Well done, OpenCraft!

On the last night, we had a festive night in. We sat around the fireplace at Xavier, Jill, and Piotr’s Airbnb. Kshitj cooked us a delicious curry and we tried a variety of native Colombian fruits. Some were more palatable than others 😂. Watching everyone pull a variety of faces was priceless.

I can’t believe another conference and co-working week has come and gone. I’ll forever be grateful to be part of this kind, wonderful team and community.  

Until next year…

Conference Preview

Get a sneak peek of the 2023 Open edX Conference with tCRIL's series of "Conference Preview" blog posts. The articles focus on the less-publicized but equally exciting Tuesday and Friday schedules, in addition to the two main days of the conference. Mark your calendars for March 28-31, and stay tuned, as session proposals are currently under evaluation. We know that this year's program promises to be amazing!

-> Tuesday preview blog post
-> Wednesday-Thursday preview blog post
-> Friday preview blog post

Olive Feature Updates

Sarina Canelake and Jenna Makowski of tCRIL present three captivating blog posts showcasing the latest enhancements and additions in Olive, the newest release of Open edX. The first blog post provides a comprehensive look into the improved authoring experience of the Text Component (previously known as the HTML component), which now supports emoticons, visual tables, and more. The remaining two posts showcase significant and highly-anticipated improvements to the discussion forums, including a refined search function, ability to mark posts as answers, and neat new tools for forum moderators.

-> Improved Studio Editing in Olive
-> New and Improved Discussion Forums
-> Moderation & Authoring Tools for the New Discussions Features

Olive Release Notes

Looking for what has changed in the Olive release? Find the release notes here

[Core Contributor Retros] Did you know that Core Contributors work in bi-weekly sprints and share their progress at the end of each sprint using Listaflow, an open-source checklist tool developed by OpenCraft? Their reports, accessible on Discuss, provide insights into what tasks require assistance, in case you're interested in lending a hand. Keep up-to-date on the latest sprint reports!

Meetup Recording

The recording of the January online Community meetup can be watched here. This meetup featured the following presentations:

___

Open source and free, a gift from above,
The Open edX platform brings knowledge, so that we can grow.
An endless stream of learning, for one and all,
Its power immense, shall answer our call.

With endless possibility, for young and old,
To explore and grow, with stories untold.
So gather ye students, from near and far,
And let the Open edX platform, be thy guiding star.

- Courtesy of ChatGPT

2023 Conference Keynotes 

The team at tCRIL announced the first two keynote speakers for the 2023 Open edX Conference, taking place March 28-31 at MIT:

Early Bird rates are available for only a few more weeks – so go ahead and book your conference ticket!

-> Register now for the 2023 Open edX Conference

December Meetup

The next online Community Meetup will be held on December 8th, 2022 at 10 AM (EDT). Here's the session lineup:

-> Book your free Meetup seat!

TOC Elections

Following the first-ever election for Open edX's Technical Oversight Committee (TOC), 3 elected members will represent the community at the project’s governing body:

They will join the TOC on January 1st 2023, and serve until the end of the year.

We'd like to thank all the participants in the election, especially the candidates, voters, and community members who have relayed the calls to register to vote!

Product Survey

tCRIL has issued a short survey to learn about how people use the Open edX Platform. The survey will help them figure out:

• What features to build next
• How they can make the platform better for institutions, course authors, and their users
• How they can support users better

If your organization uses or has used the Open edX platform in the past to deliver online learning or training, please take two minutes to answer the survey. 

-> Take the 2-minute survey

OpenCraft has been interested in working on improvements to the discussions infrastructure in Open edX for quite some time now, and created a proposal for creating a Discourse plugin for Open edX and making Discussions a pluggable component back in 2019.

Since then, we got the opportunity to work on a major blended development project with edX (now 2U) on bringing some of those improvements to fruition.

There have been major changes to the way discussions work in the platform at multiple levels. From foundational changes that allow selecting alternative discussion providers, and a revamped mechanism for configuring discussions, to new discussions UI that continues the trend of moving over the platform interface to React-based MFEs.

We're happy we got to work on this pivotal functionality of the platform and hope to keep the momentum going in making improvements in this area.

Support for Alternative Discussion Providers

One of the key aspects of the work we've done as part of blended projects BD-3 and BD-38 has been to allow users to select alternative discussion providers.

Parts of this functionality have been landing in the platform since Koa, but from Lilac onwards it has been possible to use the new Course Authoring MFE to do so using a much simpler UI.

With the Course Authoring MFE, the discussion tool used for a course is now something that can be selected from a UI rather than just being an inbuilt default.  The Open edX platform will come with out-of-the-box support for Piazza, YellowDig, InScribe, and Ed Discussion. These providers support LTI (Learning Tools Interoperability) 1.1, which is a standard that allows learning tools to communicate and interoperate. In this case, we use it to allow seamless logging in the discussion tool without requiring the user to log in to another site.

With a simple wizard UI it's possible to select the inbuilt forums or a third-party discussion provider, and configure credentials for the tool. Once configured, the discussion tool will appear embedded in the Discussion tab, replacing the standard Open edX forum interface.

A new UI in the Course Authoring MFE allows you to select a Discussion tool

We developed a newly added LTI infrastructure that also makes it possible to have other LTI-based course tabs, which can embed any kind of tool. However, this aspect is currently not easy to access without importing a specially edited course structure outside of studio. We hope to be able to develop this further in a future blended project. 

While the new UI simplifies the use of supported providers, it is also possible to manually configure a different discussion provider that isn’t supported yet by editing the configuration in the admin panel. Instructions for how to do this are at the end of this article.

Adding a new provider to the UI isn’t possible without some development effort. It currently requires some small modifications to the platform and UI. This is another aspect that we’d love to expand on in the future by making it pluggable or customisable.

One provider we'd particularly love to add better support for is Discourse. Discourse is a very popular discussion forum software that is open source, well known, modern and actively developed. Currently, using it requires installing plugins on the Discourse side as well. It also supports a more modern version of LTI (v1.3) that is supported by the platform, which is something OpenCraft worked on as part of Blended Project BD-02 but isn’t supported for discussions just yet. 

A New UI to Configure Discussions

As you may have seen from the above screenshots, there is now a UI to switch between discussion providers. This isn't limited to just the LTI-based providers; there is now a new configuration UI for the internal forums as well.

The Course Authoring MFE also allows configuring a number of discussion settings from a single place

This new UI will allow you to configure some discussion options that were previously only available to edit through advanced course settings. It consolidates most discussions-related settings into one place. This includes the ability to enable anonymous posts, add general discussion topics, configure discussion cohorts division, and blackout dates.

This new interface lives in the Course Authoring MFE, which now also adds a UI to configure other aspects of a course, such as configuring teams, and enabling/disabling the progress tab, notes feature, calculator tool, and course wiki.

Applications and tools that previously required fiddling with advanced course settings and now be set up in a few clicks using the Course Authoring MFE

New Mechanism for Configuring Discussions

The UI is not the only thing that's new. The whole mechanism for configuring discussions has also been revamped.

When authoring course content, you no longer need to create a discussion block and manually set a category and subcategory. With the new mechanism, you simply tick a checkbox for a Unit, and it will automatically be associated with a topic with the same name as the unit, and the discussions UI will show up for that Unit. By default, all Units will automatically be discussable unless they are in graded, or exam subsections.

There is no need for manually setting up a Discussions XBlock anymore

For units in graded subsections, discussions can be enabled using  a new configuration toggle. 

A migration path from the existing XBlock-based mechanism to the new mechanism is still in development. There are certain complex discussion setups, however, that are no longer supported with this new mechanism. 

A couple of scenarios that are no longer supported are:

New Discussions MFE

There is a brand-new Discussions MFE that is intended to replace the existing forum UI hosted by edx-platform. This new UI refresh modernizes the forum UI, making it easier to explore and navigate between topics. While it is still not officially released, it is possible to test and preview it in the latest Nutmeg release. 

This new UI is entirely API-driven, allowing quick browsing, sorting and filtering through topics, and posts. The MFE can be deployed to a subfolder or subdomain and independently accessed for any course that utilizes discussions. User avatars are now visible next to all user content, making conversations easier to follow.

A new UI has been added to manage learners in a course

There is an entirely new learners section that allows you to see learners in the course, and see their activity on the course. Moderators have the ability to sort learners based on most content reported/flagged for abuse, to make it easy to quickly spot users with most reported activity.

In-Context discussions can now be viewed in a sidebar next to units. The sidebar can be shown or hidden using an icon near the top right that can show different sidebars.

The in-context experience for discussions has also been updated. Rather than appearing in an XBlock in the course flow, discussions can now be viewed within a sidebar next to the course content.

 

New Discussions Features

The Open edX discussion forum functionality is the only backend feature that is written in Ruby as opposed to Python. While this remains the case, the Ruby forum component (cs_comments_service) has seen a lot of changes recently, with major new features.

The forum now tracks user activity, making it easier to track the level of contribution from different users. The learner section, for instance, will show users that have the highest levels of engagement first.

Edit reasons allow a moderator to clarify the reason for editing a post or comment
Post close reasons allow moderators to clarify the reason for closing a post

For moderation, there is now the ability to provide a reason when performing moderation actions, such as editing content or closing a post. When editing content or closing a post, moderators will see a UI to select a reason for performing that action. For instance, a moderator can select that a post is being closed since it's off-topic, or is a duplicate. Reasons for editing posts or comments, include corrections for grammar and spelling, or removing Personally Identifiable Information (PII), quiz/exam answers, etc. These reasons can be customized by Open edX admins during deployment through Django settings.

How to try out these new Features

If these recent changes seem exciting, you can check out the new discussions configuration experience using the Course Authoring MFE and see the new Discussions UI in action using the Discussions MFE. These MFEs can be set up like any other MFE. 

Using the Course Authoring MFE

If you’ve set up the new Course Authoring MFE, you can simply access it by visiting the following URL for any course: 

[MFE_URL]/course/[course_id]/pages-and-resources/

For instance, on the devstack, for the demo course you’d visit: 

http://localhost:2001/course/course-v1:edX+DemoX+Demo_Course/pages-and-resources/

To have better integration of this MFE with Studio, you need to add the waffle flag below to a course or globally. This will add a link to “Pages and Resources” under the “Content” menu in Studio: 

discussions.pages_and_resources_mfe

Previewing the new Discussions MFE

Once you’ve set up the Discussions MFE, you can visit the following URL for any course that uses discussions:

    [MFE_URL]/[course_id]/

For instance, on the devstack, for the demo course, you’d visit:

http://localhost:2002/course-v1:OC+NP+Test/

The following waffle flags are available to tweak this new experience:

discussions.enable_discussions_mfe
discussions.enable_learners_tab_in_discussions_mfe
discussions.enable_moderation_reason_codes
discussions.enable_view_mfe_in_iframe

Preview the new Discussion Configuration Experience

Previewing the new Discussions configuration experience is currently a little more complex, since the migration process for that is still being worked on. This area of the platform is in active development, and as such the process is bound to change. While this feature can be tested in Nutmeg, we’d recommend testing it in a sandbox or development environment running the latest Open edX code. 

However, you can test it out by with the following steps:

discussions.enable_new_structure_discussions
/course/<course-id>/pages-and-resources/discussion/configure/openedx

If you only saw one provider called “edX” it’s probably because your version doesn’t include the most recent changes. In that case, you may need to manually add a discussion configuration for your course. 

[LMS]/admin/discussions/discussionsconfiguration/

You will now be able to enable/disable discussion for individual units in your course without needing to add an XBlock.

This new experience is still actively being worked on and simplified, so expect this process to get a lot smoother over time, and the configuration to get further streamlined.

Use an Unsupported LTI Discussion Tool

While Piazza, YellowDig, InScribe, and Ed Discussion are available to set up using a simple UI Wizard. The process for configuring an unsupported provider isn’t very complex either. It just needs access to the admin panel. 

Since Lilac, the Open edX platform has had the ability to create a discussion configuration via thevia that the admin panel that will allow using an LTI tool instead of the internal forums. For this you need to visit the discussion configuration page in the LMS’s admin page at

[LMS]/admin/discussions/discussionsconfiguration/

Once there, here is what you can do to set up your custom discussion provider:

The Discussion tab on this course should now embed the LTI tool. 

Note that if your provider needs access to a user’s username or email to work, you will need to explicitly enable sharing such PII with the provider using the following additional steps:

[LMS]/admin/lti_consumer/courseallowpiisharinginltiflag/
{
    "pii_share_username": true,
    "pii_share_email": true
}

Photo by Volodymyr Hryshchenko on Unsplash

Here's a recap of our June 2022 newsletter:

Nutmeg Release

Nutmeg, the latest stable version of the Open edX platform, is now released! Nutmeg brings exciting new features such as the user tour (taking new learners through a quick tour of the course), new weekly course goals with reminder emails, and improvements to various micro front-ends (MFEs) and the mobile experience. As always, be sure to upgrade your Open edX instance(s) as soon as possible! Kudos to folks from the Build-Test-Release Working Group who worked hard to make the testing and release processes as smooth as possible! Also, please let the group know if you spot any bugs or issues. 

-> Read the Nutmeg release notes

July Meetup - Text To Speech

On Thursday, July 21, the Open edX Community will gather for an online meetup to discuss how course authors can leverage text-to-speech solutions for a more inclusive learning environment. Registration is free, so save the date and join for a captivating meetup!

-> Register for the event on Eventbrite

June Meetup Recording

Earlier this month, the Open edX Community gathered to discuss a great education project led by our friends at RacoonGang – a project in which the Open edX platform is leveraged to provide students with digital education in the difficult context of the Russian invasion of Ukraine. The recording of the meetup is now available to watch on Open edX's YouTube channel. 

-> Watch the June 9th 2022 Meetup Recording

Fox Interview

While we were soaking up the warm sun and ocean air in Portugal during the 2022 Open edX Conference, our friends at The Center for Reimagining Learning (tCRIL) grabbed the opportunity to conduct a short video interview with Fox Piacenti, who leads business development at OpenCraft. This is a good occasion to learn more about OpenCraft, what we like to work on, and how we work – so go ahead and watch it : )

-> Watch the interview with Fox Piacenti

User Retirement

To learn more about user retirement in the Open edX Platform, read this blog post!

User Retirement in an Open edX platform is the very last stage of the user account’s lifecycle, which begins with registration of a new user. That is, it is the thing that happens when a user clicks on the “Delete My Account” button on the Account Settings page.

However, it is not a single step, but a series of steps resulting in deactivation of the user account, removal of the user’s Personally Identifiable Information (PII) from all services making up the Open edX platform, and culminating in permanently disabling the username and email address from being reused ever again.

In this blog, we will explore how the user retirement workflow is designed, the steps involved in user retirement, different ways of triggering user retirement, and how to enable reuse of a retired username and email address.

User Retirement Pipeline

The Open edX platform is not a single application, but a collection of services and IDAs — each handling a specific part of the user experience, such as course-discovery, discussion forum, eCommerce, etc.  Each of these services maintains relevant user data to correctly handle users’ requests.

This makes the process of deleting a user from the platform complicated. Merely deactivating the user account and removing their credentials is not sufficient. User data also needs to be deleted from each of these services for the platform to be compliant with regulatory frameworks such as GDPR.

To make things more complicated, running some of these services on the platform is completely optional, with the possibility of installing custom services as well. Therefore, the retirement process needs to be configurable so that it attempts to delete user data only from services which are actually being used in the platform instance.

To address all this, the retirement workflow is designed as a linear pipeline, where the user deletion request moves through a series of fully configurable States.

User Retirement States

When a user retirement is initiated, an entry is created in the UserRetirementStatus model, with the state set to PENDING. This is the very first state of the Retirement Pipeline.

In this step, hash values of the username and email address respectively are generated and stored in the UserRetirementStatus model along with the original username and email address. The email address in the User model is replaced with its hash value and the password is reset. This prevents the user from logging into the user account.

At this PENDING state, it is possible for the site administrator to cancel the retirement workflow if so requested by the user. This can be done either by using the cancel_user_retirement_request management command or by clicking on the ‘Cancel’ action button in Django admin. This restores the email address in the User model and deletes the entry from UserRetirementStatus. Cancellation of retirement workflow is not possible in any other retirement state.

The user then moves through a series of unique pairs of retirement states, each indicating that a stage or action of the retirement workflow is either underway or has been completed.

RETIRING_FORUM and FORUM_COMPLETE is one such retirement state pair. Here the RETIRING_FORUM state indicates that the forum retirement API has been triggered and deletion of user data from discussion forum service is underway and the FORUM_COMPLETE state indicates that the API has been successfully executed.

Any number of such pairs of retirement states can be configured and in any order, however each RETIRING_SERVICE state should always be succeeded by the corresponding SERVICE_COMPLETE state.

The COMPLETED, ERRORED, and ABORTED are the dead end states. That means the retirement workflow cannot proceed any further from any of these states. The dead end states, along with the PENDING state need to be mandatorily configured with all other states being optional.

The COMPLETED state is the very last state of the retirement workflow, indicating that all configured stages of the retirement process have been successfully completed.

At this state, the username is replaced in the User model with the hash values generated previously. However, the entry in the UserRetirementStatus model still contains a mapping between the hashed username/email address and the actual username/email address of the user. The retirement_cleanup API can be used to delete this entry, thereby completely removing the user’s original username/email from the platform.

The retirement workflow moves to the ERRORED state for one of two reasons — either there is an execution error during one of the retirement stages, or there is a discrepancy in the retirement states (such as the user moving from one state to a previous state).

A site admin can look into the cause of the error, fix it, and then manually move the user to a correct state, which would enable the resumption of  the retirement process.

The default list of the retirement states is defined in lms/env/common.py

This list can be configured by setting the RETIREMENT_STATES variable in /edx/etc/lms.yml
The active Retirement States are maintained using the RetirementState model.

Each state has an Execution Order Number, which determines the order of the states in the workflow. Any violation of this order of execution during the retirement process will lead to an error with the user moved to the ERRORED state.

The populate_retirement_states management command can be used to populate the RetirementState model or override the states which are already configured.

There is currently no out-of-the-box mechanism in Open edX to drive this retirement workflow.

Therefore this needs to be driven from an external service, or the tubular scripts can be used to either trigger the workflow execution manually or set up as a cron job to execute workflow at regular intervals.

Initiating User Retirement

There are a number of ways in which user retirement can be initiated:

  1. Users can initiate user retirement by clicking on the “Delete My Account” button on the Account Settings page in Account MFE. This in turn calls the DeactivateLogoutView API to trigger the retirement.
  2. Retirement can be initiated for multiple users simultaneously from an external service using the bulk_retire_users API.
  3. A site admin can trigger retirement on behalf of a user, using the retire_user management command.

Enable Reuse of Retired username and email address

As mentioned previously, the generated hash value of the username and email address, is used to replace the corresponding original credentials in the User model at different stages of the User Retirement Workflow.

As part of the validation process during user registration, the hash value of the new username and email address is calculated and queried against the User model to check if those hash values are already present. If so, the validation fails and the user is requested to choose a different username and email address. This is how the platform ensures that a retired username and/or email address is never reused.

There may be certain use cases, however, where the reuse of the retired user credentials would be desirable or even necessary. We here at OpenCraft encountered one such use case for one of our clients. This client used a third party external service for user management. That means, the client’s users would register, manage and deactivate/delete their accounts in a third party UI, and that service would use the correct APIs of the Open edX platform in turn to register and/or retire the user accounts in the platform. Now, using the third party service, it was possible for the client’s users to delete an account and then create another account using the same credentials. However, the user registration API in the Open edX platform would throw an error when using the retired credentials. This was a big problem for our client.

We looked for an existing solution to this problem and, not having found anything, we set out to design a solution for this problem ourselves.

There were a few considerations during the design of the solution:

  1. There must be other members of the Open edX community who share this requirement of reuse of retired user credentials for their different use cases. So a one-off code change for our client would not be sufficient. Our solution must be usable for the wider Open edX community.
  2. The user APIs are a very core part of the Open edX platform, with almost all parts of the platform being affected by them. Therefore, any changes to the user APIs would not only require thorough regression testing, it could also be months — if not years — before they are fully reviewed, accepted, and merged with the upstream codebase. Even then, the changes would only be available in the subsequent stable release for regular platform users. We thus needed a solution that could be easily configured with existing installations and be available for use by the community right away.

This led us to create the enable_retired_username_email django app.

This app is designed to be installed along with the Open edX installation using pip:

pip install -e git+https://github.com/open-craft/enable-retired-username-email.git@v1.0#egg=enable-retired-username-email

Or by setting the EDXAPP_PRIVATE_REQUIREMENTS variable while installing the Open edX platform using ansible.

This app receives the post_save signal from the UserRetirementStatus model, and does one of two things:

  1. If an entry has just been created, it replaces the hashed username with a friendly name in the form of deleted_user_<user_id>. This is done so that during the retirement workflow, all services which replace the original username with the hashed username use this friendly name instead.
  2. If the entry is in the COMPLETE state, a hash of the string <email_id>+<current_timestamp> is calculated. This email address in the corresponding User model, which now contains the hash of the original email address, is replaced with this new hash value. The entry in the UserRetirementStatus model is deleted, thereby removing all traces of the original credentials and its corresponding hash values.

Voilà! We hope this is useful, and let us know via comments below or at contact [@] opencraft.com if you have any comments or questions!

Photo by Tandem X Visuals on Unsplash

Here's a recap of our April 2022 newsletter:

This edition of our newsletter will be shorter than usual, because our team is currently retreating in beautiful & sunny Lisbon, Portugal. ☀️

We're seeing each other for the first time in three years, and we're having a great time! The weather is beautiful (although quite windy at times!), the food is amazing, and we're spending quality time together. We'll soon be sharing a blog post and more details on what we've been doing here – but in the meantime, here are a few pictures. Até já!

(and sorry to those of us who could not attend because of visa/covid/other issues – we miss you dearly!)

Open edX Conference

At the time of reading this newsletter, our team will be right in the middle of attending the 2022 Open edX Conference, hosted in Lisbon. We're busy presenting talks and workshops, helping with conference organization, chatting with friends and members of the community, and doing all sorts of activities. We'll be posting a recap of the conference next month, so stay tuned!

-> Review the conference program

Platform Product Management

tCRIL have created three new spaces to increase engagement and interaction of Open edX Product Managers and community members across the ecosystem: the Product Working Group Slack Channel, the Open edX Roadmap, and the Open edX Product Management wiki. Please join the Product Working Group using the Slack channel if you're interested in getting involved! 

-> See Open edX blog post

The Open edX Core Contributor Program grants community members expanded rights and ownership over various aspects of the Open edX Project, allowing them to actively participate in defining and deciding the direction of the platform. Members of the Core Contributor program earn this distinction by participating in Open edX community with distinction. They embody what we call the “3 Cs”: Commitment to the project, exemplary Conduct, and high Caliber contributions.

The program began in 2020, with an initial 9 community members being granted write access rights to various Open edX code repositories. Since then, the program has expanded to include nearly 40 core contributors, who not only commit code but oversee translations, manage projects, and more.

Recently we codified the program in OEP-54. “OEP” stands for Open edX (Enhancement) Proposal. An OEP is a document that details a specific decision being made by the Open edX community; the community agrees that they will follow the processes defined in the OEPs.

In OEP-54, we define various aspects of the Program, such as membership criteria and the nomination process for a new member. I’ll dive into some of these, with a focus on Core Contributors who commit code changes.

Types of Core Contributors

As we’ve expanded the number of Core Contributors who can commit code, we’ve also begun expanding the number of roles a Core Contributor can take on. Contributors are welcome to hold more than one role, as well! A full list of roles and responsibilities can be found at this link; a few roles I’ll highlight are:


Let’s Begin!

For information on how to really dig into the community, see OEP-54’s “Where Do I Start?” section - there’s a lot of good resources there to get you started, as well as a few pointers on how you can reach out on the forums or to specific working groups. Joining a working group is a wonderful way to meet members of the community and get started on tasks identified by the group as having high value.

For those who code, I recommend joining the Build-Test-Release or Frontend working groups, as both groups tend to have a backlog of tasks they’d like people to pick up. The Deprecation working group is pretty fun (in my opinion!) - they focus on removing dead code from the system. They also tend to have a large backlog, but some tasks may be pretty complicated unless you know some Open edX architecture or are strong in Django/Python.

If you work at a company that’s developing Open edX features you’d like to someday see in the main codebase, you should reach out early in your development process to get pointers on the best way of architecting and implementing your change in order for it to have the greatest chance of being accepted. Reach out in the discussion forums in the Collaborative Proposals topic. Submitting your bug fixes, changes, and features upstream is a great path towards becoming a Core Contributor.


Becoming a Core Contributor

Community members who have demonstrated the 3 C’s, with a history of contributions to the Open edX project, may be nominated for inclusion in the program by an existing program member. For coders, the nomination would specify one or more repositories in the openedx GitHub organization for the nominee to get write access to. The process is designed to be straightforward and transparent: it takes place on the discussion forums, and other Core Contributors in the program weigh in on the nomination. Members are encouraged to give constructive feedback if they don’t feel a nominee is quite ready to join the program.

The Core Contributor program is administered by The Center for Re-Imagining Learning (tCRIL), the nonprofit organization that stewards the Open edX project. At any point on the road to becoming a core contributor, the program administrators may be reached in the #core-contributors Slack room in the Open edX Slack, or at cc-program-admins@tcril.org.

It’s been a joy and a privilege to be a part of the Open edX community and to have the chance to help administrate the Core Contributor program. I look forward to working with more and more of you as the program goes.

—---

Sarina Canelake
Engineering & Community Manager at Axim Collaborative

Sarina has 5+ years experience hacking on the Open edX platform and working with the Open Source community. She is dedicated to enabling open source contributors to the Open edX platform via extensibility and process improvements. She lives in Boston, MA with her 3 cat sons and has a lifelong love for all things Pokémon.

Photo by Chang Duong on Unsplash

Conference Themes

The 2022 Open edX Conference will be hosted in-person in Lisbon, Portugal, from Apr. 26-29. You should register as soon as possible – the early bird rates end on Feb 28th!

The Open edX team is putting together an ambitious program: the conference will present innovative uses of open source technology in higher education and inside corporations, across a global scale. Attendees will participate in exciting talks about advancements in platform features, instructional design, course production, and technical sessions for operating, extending, and enhancing the Open edX platform. All members of the OpenCraft team have submitted proposals — we're looking forward to seeing you at our sessions! Stay tuned for the conference program reveal next month.

->  Schedule outline, travel guidelines, and more

Keynote Speakers

The Open edX team have announced this year's keynote speakers for the Open edX Conference:

Keynote speeches will take place on the mornings of April 27th and 28th. Additional details about the tutorials and workshops will be announced in the coming weeks.

-> Read the full announcement

Core Contributors

After a successful pilot, the Core Contributor Program has officially been defined, reviewed, and adopted as an Open edX Proposal (OEP-54) by the community. Victory! ?  

The foundational document defines Core Contributors, explains its motivations, details all roles and processes involved (such as nominating new Core Contributors), and features a change log. Our tCRIL friend Sarina Canelake will soon publish an article on our blog that further details the history and key items of the Program.

As a reminder, Core Contributors is a program that grants rights to individuals in the Open edX community that allow them to actively participate in defining and deciding the direction of the platform. At the time of writing, 11 members of the OpenCraft team are Core Contributors, along with many more members of the community from around the world. 

We would also like to take the opportunity to welcome newcomers Jorge Londoño, Maria Grimaldi, Andrés Gonzales, JayRam Nai, and Dean Jay Matthew to the Program. Congratulations on your Core Committer nomination, and welcome aboard! : )

-> Core Committers Program definition

Translations

The Translations Working Group was formed with an initial focus on improving platform translation for ten languages: Spanish, French, Arabic, Italian, Hindi, Portuguese, Russian, Ukrainian, Mandarin, and German. The group needs additional translators for Arabic, Hindi, Russian, and Ukrainian — please let us know if you're interested!

Contribute to this Newsletter

We would love to turn this newsletter into a community effort. Do you have any news about Open edX that you would like us to share? Please let us know by going to the Newsletter threads on either OpenCraft's public discussion forum or the Official Open edX forum!

Governance

As the stewardship of the Open edX platform is moving from edX/2U to the newly formed Center For Reimagining Learning (tCRIL), the team has announced the creation of a Technical Oversight Committee (TOC) as a new governance structure to the project. The TOC will have nine members: three from The Center for Reimagining Learning, three from edX/2U, and three from members of the rest of the Open edX community. The first six members were recently nominated, and the remaining three members will be chosen soon.

-> Read the Technical Oversight Committee's foundational charter

Virtual Event

The end-of-year community virtual event took place on December 14th, bringing a successful conclusion to a landmark year for the Open edX platform. Ed Zarecor from tCRIL presented a "State of Open edX" keynote that covered the creation of tCRIL, the platform's new governance structure, and the Maple release. We also enjoyed watching other talks on the program, and had fun talking with old friends and new!

-> Watch talk recordings and download presentation materials

New Release

Maple, the latest stable version of Open edX, was released on the 20th of December, thanks to the great work of the Release working group ? ! Maple brings a good amount of fixes and features, such as the implementation of the new Learning Micro Front End as the default platform experience, granting course and library creation rights on a per-organization basis, and improvements to the Common Problem Editor — so be sure to upgrade your Open edX instance(s)! Also, please let the working group know if you spot any bugs or issues.

-> Read the official announcement

Core Contributors

Core Contributor work is now organized into 2-week sprints, which aim to help coordinate contribution efforts and drive more contributions. During the first-ever Core Contributor sprint, the focus was on helping to assign the remaining open issues for Maple from the release working group board. It was also nice to get to meet all the core contributors!

-> Check out the latest Core Contributors Sprint

Marketing

The Marketing Working Group is working on a number of issues to improve the Open edX platform's marketing ecosystem, such as preparing community member presentation videos, creating various promotional materials, and helping redesign the provider marketplace experience on the Open edX website. 2021 has been a productive year, and the group is excited about the year to come!

-> Check out the Marketing Work Group's Trello board

Translations

The Translations Working Group, was formed with an initial focus on improving platform translation for ten languages: Spanish, French, Arabic, Italian, Hindi, Portuguese, Russian, Ukrainian, Mandarin, and German. The group needs additional translators for Arabic, Hindi, Russian, and Ukrainian, so please let us know if you're interested! The group is also working on implementing automated translation for the official platform documentation — something that has been long requested by the community. We'll keep you abreast of our progress on this topic in the upcoming newsletters.

-> Check out the Transifex Work Group's Trello board

Newsletter Contributions

We would love to turn this newsletter into a community effort. Do you have any news about Open edX that you would like us to share? Please let us know by going to the Newsletter threads on either OpenCraft's public discussion forum or the Official Open edX forum!

2U Acquisition

E-Learning company 2U has completed its acquisition of the edX.org website and assets, as announced in Open edX's recent blog post. The Open edX project itself isn’t included in the sale. The proceeds from the transaction will fund a new nonprofit which will take over stewardship of the project, and also invest in other online learning projects. A Technology Oversight Committee (TOC) will be created to lead the Open edX platform's development and community governance. The committee, whose members have not been announced yet, will include representatives from the nonprofit, edX/2U, as well as other community members. edX and U2 have also made a formal pledge to contribute to the ongoing development of the platform.

-> Read the official press release by edX/2U

End-Of-Year Virtual Event

All members of the community are invited to join Open edX's end-of-year virtual conference and meetup, scheduled on December 14th, 2 pm-5 pm UTC. The keynote speech will be a "State Of Open edX" discussion about the creation of the new nonprofit, and the way forward for edX and 2U following the acquisition. Attendees can expect a few additional talks, along with ample time for chatting and networking. We are looking forward to seeing you there!

-> Read more and register for the event on the Open edX blog

Upcoming Release

The Build-Test-Release working group has launched the Maple beta 1 release and commenced testing it. The working group is encouraging all community members who have the chance to test Maple as well, especially if you’re using a feature in the Open edX platform that isn’t widely used. A few issues have already been reported, and we need volunteers to help fix them. These issues are low-hanging fruits and good first issues for anyone to get started with. If you’ve ever considered contributing, now would be a great time!

On some additional news, the Lilac 3 open release has been released. You’re encouraged to upgrade your Lilac instances.

-> Click here to check the Maples issues that need some love

Core Contributors

The Core Contributor program continues to grow with the addition of the first new Product & UX Core Contributor, Ali Hugo from OpenCraft, and a potential Product Management Core Contributor in prospect. To better provide context about each contributor’s efforts to one another, the idea of adding sprints is being discussed and contributors are encouraged to participate.

The frontend working group is working on removing IE 11 support and upgrading to Node.js 16. The data working group has recently been discussing the ElasticSearch vs OpenSearch issue.

-> Read more community meetup updates

Tech Radar

The Open edX Tech Radar, first announced a few months ago, is now live! The Open edX tech radar is a visualization tool that represents the technologies used in the platform. Its goal is to help new developers get involved, but also to facilitate reviews and discussions about technologies, frameworks, techniques, and tools used in the platform. The radar was built through community effort and is maintained by the community in Github.

-> Learn more about the tech radar

Here is a recap of our October 2021 newsletter:

Maple Release Update

The master branches for Maple, the next Open edX Release, have been prepared and announced! Note that the prepared branches are mainly for community members interested in helping review and build Maple, and not for public consumption. Tutor also recently added support for the master Maple branch.

If you’re a community member interested in helping build Maple and/or Tutor support, please set up Maple using Tutor and report any issues you face to the build/test/release working group on the official Open edX forum. 

-> Learn more about the Maple release on Confluence

Core Contributor Program

The Open edX Core Contributor Program has recently confirmed several additional members in its ranks, including additional OpenCraft team members. This brings the current number of Core Contributors to 16, including eight OpenCraft team members!

The Program, which initially focused on technical contributors called code "Committers", has now expanded to also include Non-Technical Contributors who help with platform translations, marketing activities, project management, and more. Open edX Core Contributors earn their designation through committing 20h+/month of active participation in the Open edX community by contributing code or translations to the project, serving on working groups, etc. Our team currently features 7 code Committers, and 1 Non-Technical Contributor. 

-> Read more about the Core Contributor Program

Open edX Theme

OpenCraft is on a mission to build an improved and great-looking open-source Open edX theme! We’ve started wireframing the course pages of our new theme and would love any feedback from the community.

What a cool-looking wireframe!

You can access the theme's Gitlab repository for the latest progress, and use the official forum thread linked below to suggest changes.

-> Share your feedback on this official forum thread

Platform Translations

The Transifex Working Group has been making good progress  over the past few months on advancing the Open edX's platform translations. The working group is still looking for community members to submit and review translations in the following languages: Ukrainian, Russian, Mandarin, Hindi, Portuguese, and Arabic. Let us know if you're interested in contributing!

-> Visit the group's Confluence page for detailed information

Community Event

The Open edX community hosted an online event on Friday, September 17. It featured a talk by Ed Zarecor on the state of the Open edX project, a case study on using the platform to address public sector online education needs by academia, and a review of the platform’s market niche. We also discussed where the community can focus in order to expand its reach in the e-Learning space. We enjoyed getting to talk with other community members in the Gather space and hope to see you at the next one!

-> See the event's Youtube playlist

Maple Release

The next release of the Open edX platform, called Maple, is scheduled to release on December 9, 2021. A beta version will be made available in early October to allow the community to test the software, report bugs, and improve documentation. Stay tuned for more news about Maple next month when the test branch is released!

-> Learn about early Maple features on Confluence

Multi Sites

Did you know that a single Open edX instance could be split into multiple "sites," each with its own theme, home URL, and course catalog? The process of creating and administering sites can be quite tedious. To address this, we developed Sites Generator, an open source tool that automates the whole process! Read the blog post to learn how to configure Sites.

-> Explore Sites-Generator's public code repository

Frontend

The Open edX team announced the creation of a Frontend working group that will be responsible for stewardship of the frontend of the Open edX platform. The group welcomes members of the community to discuss the goals and challenges of the platform's frontend features and partake in key technical decisions.

-> Learn more on the Frontend Working Group wiki page

This article was written by Giovanni Cimolin (OpenCraft) and Ned Batchelder (edX).

Learning Tools Interoperability® (LTI®) is a standard used to integrate different learning platforms and tools and allows a richer learning experience through the use of graded problems, interactive content, and third-party applications.

LTI support in the Open edX platform opens a wide range of possibilities for learning content.  Because of LTI’s broad adoption across ed-tech platforms, there are hundreds, if not thousands, of tools available that can be integrated into Open edX courses. LTI tools are available from a wide range of organizations, from large ed-tech vendors to universities building their own integrations.

In Open edX software, LTI is used in two ways: as an LTI consumer in courses to enrich the learner experience by embedding interactive problems and exercises from external sources, and as an LTI provider to allow other LMS’s to embed Open edX course content.

In 2018, IMS introduced the new version of the LTI specification (LTI 1.3) focusing on modernizing the LTI standard, improving security, and enabling a flexible and extensible specification. The Open edX platform has long supported the 1.1 version of the LTI specification. Adding support for the 1.3 specification version brings the Open edX platform up to date with the most capable LTI standard.

You can read more about the advantages and improvements of the new standard in Why Platforms and Tools Should Adopt LTI 1.3.

Early in 2020, edX decided to implement LTI 1.3 in the LTI consumer support through a blended development project with OpenCraft, and then followed up with another project to implement the LTI Advantage extensions (detailed in the next section).

Blended development projects are funded by edX to implement roadmap features and promote collaboration between edX teams and partners in the community while increasing edX’s development throughout. You can find more information about these projects in the Blended Development Runbook.

What is LTI Advantage?

LTI Advantage is a set of extensions to the LTI 1.3 specification that enhance its capabilities and allows deeper integration between LMS and LTI tools. Its two main goals are (1) to enable deeper integration between tools and platforms, avoiding the need for custom integrations, and (2) to provide a secure channel to transmit student and enrollment information. 

LTI Advantage includes three services, detailed below.

Assignments and Grades Service

The Assignments and Grades service (LTI-AGS) allows LTI tools to send and manage learner grades back to the platform. 

When LTI-AGS is enabled and the component is set as graded in an Open edX course, grades sent from the tool will be automatically linked to the student gradebook. The LTI tool may also manage, edit, and override student’s grades directly, and provide reports on the user status of the activity (pending, started, fully graded).  

You can enable this feature on your instance following the Assignments and Grades service setup documentation. Make sure you set up an LTI 1.3 integration in your Open edX instance first. For more information, you can follow the official LTI component documentation.

Deep Linking

The Deep Linking service (LTI-DL) allows course creators to select and configure the content displayed to learners through Open edX Studio. This removes the need to use custom parameters and settings when setting up content, improving the ease of use and content authoring experience.

For example, a tool may let course creators configure a link that will launch a specific chapter from a book rather than displaying the full book and having students manually scroll to that chapter. 

You can enable this feature on your instance – just follow the deep linking service setup documentation.

Names and Roles Provisioning Service (LTI-NRPS)

The Names and Roles Provisioning service (LTI-NRPS) allows tools to list and retrieve information about the learners that have access to an LTI component. The tools can retrieve a limited amount of personal information (full name, email, username) and the membership status of all the learners enrolled in the course.

A tool that uses LTI-NRPS will be aware of all users with access to that tool and can provide reports on student activity within the tool. For example, a tool might display a report of enrolled active users that haven’t started an activity.

Final Thoughts

With the implementation of the LTI Advantage services, the Open edX platform has been formally certified as LTI Advantage Complete (more details on Open edX platform earns LTI® Advantage Certification).

LTI 1.3 and LTI Advantage features are available in the Lilac release of the Open edX platform.

LTI® is a trademark of IMS Global Learning Consortium, Inc. (www.imsglobal.org)

Cover photo by Tamanna Rumee on Unsplash

Here is a recap of our July 2021 newsletter:

2U Acquires edX

2U, an educational technology company, announced that it is acquiring edX. The proceeds of the transaction ($800 million) will go to a non-profit that will continue under the leadership of the edX founders, Harvard and MIT. The non-profit will own and keep growing the Open edX project. This will be a good opportunity to clarify the distinction between edX.org and the Open edX platform, since both projects will have their own priorities and independent funding. It will take some time to know what the new non-profit’s plan will be, but there are good reasons to be optimistic. The changes demonstrate the belief that the open source project can be more by standing on its own. We completely agree — it’s a rare chance for an open source project!

-> Watch Q&A session about the acquisition with edX CTO JP Beaudry

OpenCraft Developer Jobs Page

OpenCraft is growing, and we are always on the lookout for new developers. We've just built a web page that summarizes the experience of working as an open source, fully remote developer at OpenCraft. Do you care about contributing to open source and appreciate a good challenge? Would you like to work with great clients, under great conditions, and with your own schedule? If so, then please consider joining our team, and submit an application.

-> Check out our jobs page, and apply!

LTI Advantage Certification

The latest version of the Open edX platform, Lilac, has been formally certified as an LTI Advantage learning platform! The work to extend the LTI Consumer XBlock to support LTI Advantage was a collaboration between our team and edX, as a blended development project. We are very proud to have worked on making the Open edX platform more extendable by adopting this widely-endorsed educational standard.

-> Read announcement on Open edX blog

Extensions Directory

The Open edX team have recently published the Open edX Extensions Directory, a filterable interface that displays the various XBlocks, plugins, and extensions made available for the platform. The long-requested tool was designed by the Open edX Marketing Working Group, of which OpenCraft are members. Just a few weeks after its creation, the Extension Directory gained considerable visibility and traffic as a valuable resource for the Open edX community.

-> Read announcement on the Open edX blog

Documentation Hack-a-thon

Following the success of their first Hack-a-thon, the Open edX team is hosting a new documentation rally on August 10-12, 2021. This is a time for everyone, not just developers, to get together, collaborate, and help make the platform documentation complete and up-to-date. Big or small, all contributions are welcome! You can read the official announcement for the full details. 

-> Discuss your ideas with the community on the official forum thread

This blog post was co-authored by OpenCraft team member Usman Khalid and edX team member Dave Ormsbee.

It is with great excitement that we're announcing that all the XModules in the Open edX platform have recently been converted into XBlocks.

What are XModules?

XModule was the original framework for course components in edx-platform, and the predecessor of the XBlock framework. When the XBlock framework was introduced into edx-platform in 2013, because of the numerous XModules in use, a compatibility layer was written to allow an incremental transition to the new framework. This compatibility layer allowed the XModule infrastructure to run XBlocks and for XBlocks to see the XModule infrastructure as the XBlock Runtime.

XModules and XBlocks had different life-cycle properties and in some cases different APIs for the same features. This transition state was dubbed “peak confusion” by the edX engineering team to express the idea that it would be an extremely confusing time for the courseware internals, but that we could eventually come down from that complexity once XModules were removed.

Transition

Over the years a number of lesser-used XModules were deprecated and removed. In 2015, the Vertical XModule was converted and in 2016 the Discussion XModule was converted.

When the Blockstore project was started, the decision was made that it would only support XBlocks and a new XBlock Runtime was written for it. As part of the work, the Video, HTML and Problem XModules were converted to XBlocks.

The remaining fifteen XModules have been converted to XBlocks through a months-long blended development effort by OpenCraft and the edX T&L team.

Why is this important?

With the system now only hosting XBlocks and not constrained by having to maintain backward compatibility with the old framework, it becomes possible to significantly simplify the courseware internals. This will make the system a lot more approachable for developers and significantly reduce the complexity of big jumps in capabilities of courseware.

We are looking forward to seeing these developments in the future!

Photo by Hunter Harritt on Unsplash

This blog post shows how to enable encryption at rest for Amazon S3 Object Storage used by your Open edX instance. When you use server-side encryption, Amazon S3 encrypts an object before saving it to a disk, and decrypts it when you download it again.

The first question is Why would you want to do this? The most important reason is privacy, as data uploaded to S3 buckets can contain personally identifiable information, such as the learner's email address in grade reports. Also keep in mind that you might be required to do this by GDPR and other privacy-focused laws.

Enabling S3 encryption on AWS: How-To

The first step is to set up an encrypted AWS S3 bucket for your Open edX instance. For the sake of simplicity, I’d recommend using SSE-S3 encryption, as AWS will manage the encryption key for you. It will use a single key for all objects, which is encrypted itself with a master key that is frequently rotated for increased security. You’ll have two choices here:

Creating an encrypted bucket

If you are just starting or testing this setup, you can create an encrypted bucket and switch your instance configuration to use this bucket.

Simply navigate to the URL below to create a new bucket. Make sure to enable Server-side encryption:

https://s3.console.aws.amazon.com/s3/bucket/create

Enabling encryption in an existing bucket

If you already have a running instance with an existing bucket, all you need to do is enable encryption for the bucket.

Just navigate to the URL below where you’ll be able to find the bucket you want to modify. Click on the bucket link and navigate to the “Properties” tab, where you’ll find encryption settings. Here, you just need to click the “Edit” button and select “Enable”.

https://s3.console.aws.amazon.com/s3/buckets/

Configuring Open edX

Now that the bucket encryption is enabled, we must make sure Open edX can properly use it. Under the hood, your instance will be using Boto3 to communicate with AWS S3.

Enabling AWS S3 Encryption

You need to modify your settings to enable S3 encryption. Add the below settings to each of these configuration files:

1. /edx/etc/lms.yml
2. /edx/etc/studio.yml:
AWS_S3_ENCRYPTION: true
AWS_S3_REGION_NAME: 'us-east-1'
AWS_S3_SIGNATURE_VERSION: 's3v4'
DEFAULT_FILE_STORAGE: 'storages.backends.s3boto3.S3Boto3Storage'

While REGION_NAME and SIGNATURE_VERSION aren’t strictly required, they are big sources of issues when running this setup. If you encounter permission issues, make sure these are correct in your settings.

Configuring Studio export bucket

Next, ensure your bucket name is correct. If you decide to use a different bucket for course exports, make sure to enable encryption on AWS for this as well.

IMPORT_EXPORT_BUCKET: 'opencraft-example-bucket'

Configuring Grade reports downloads

Again, these settings need to be applied to both lms.yml and studio.yml.

GRADES_DOWNLOAD:
     BUCKET: 'opencraft-example-bucket'
     ROOT_PATH: 'reports/grade'
     STORAGE_CLASS: 'storages.backends.s3boto3.S3Boto3Storage'
     STORAGE_KWARGS:
       default_acl: 'public-read'
       location: 'grades-download'
     STORAGE_TYPE: 's3'

Location cannot begin with a leading slash (gotcha)

S3Boto3Storage.location

If you get the above error message after migrating from the local filesystem storage, you’ll have to modify the location to remove the leading slash, for example:

VIDEO_TRANSCRIPTS_SETTINGS:
     DIRECTORY_PREFIX: video-transcripts/
     STORAGE_KWARGS:
       base_url: /media/
       location: media/ # Was /media/ before

Testing

After the setup is complete, you’ll have to test the settings to ensure that it works correctly. Obvious tests are course exports, grade report downloads, checking video transcripts, etc.

I would recommend that you use Opencraft’s Instance Test Checklist to make sure no functionalities are broken.

This checklist was developed to ensure our instances are fully operational after release upgrades, large configuration changes, and others.

I hope this helps you get peace of mind, knowing your users’ personally identifiable information is now safely encrypted in Amazon servers.

If you’re serious about your Open edX instance’s security and would like an extra pair of eyes, you can reach out to us at OpenCraft to help maintain and/or secure your Open edX instance!

Photo by Alex MotocHire on Unsplash

The Open edX platform is constantly growing in every aspect, something that’s desirable for every Open Source Software that proves to be useful and true to the name. In that sense, the ways of setting up the platform keep evolving, too. Unless you’re knowledgeable with the tools used for working with the platform in a local environment, there is no “simple” way to get started with an instance without help. That’s where we come in.

Focus on your work, leave the rest to us

Photo by Ken Suarez on Unsplash

Setting up any production-ready website requires some configuring, let alone an education platform with so many services, such as E-Commerce, forums, platform-wide annotations, analytics, and more.

Using the OpenCraft Instance Manager (OCIM) allows you to focus on what’s important: creating high-quality courses and increasing the possibilities of online education, based on one of the largest and most scalable Learning Management Systems (LMS).

However, we do have a specific way of setting up the platform for our clients, and like everything related to this massive project, it’s constantly changing for the better. The way we do deployments allows us to offer an easily-manageable installation for anyone who wants to try out what the Open edX platform has to offer. Like any other, our method has both advantages and drawbacks, but we’re constantly evaluating ways to improve it and keep contributing the ideas we come up with to the whole community.

Different paths for different purposes

There are two main ways for a developer to deploy the platform:

When we say “various platform services” we’re referring to the various services that are actively supported within Open edX. Nowadays, a DevStack has no trouble setting them up; it will boot containers for each one and keep each environment isolated, making only the necessary connections.

The edX services the DevStack sets up for you. This doesn't include databases, message brokers, and other vital components.

Ideally, scalable software services should be deployed apart from each other to ensure availability, recovery from failures, and ease of escalation and maintenance, among other things. So, the best way to have the Open edX platform running is a distributed native installation— to not put everything into a single machine, but rather set up a server for the database, another for the LMS, another for Insights, and so on.

Distributing a system is costly and requires constant supervision and technical support, and while OpenCraft offers this as part of our hosting plans, it’s necessary to have an option that brings together the security, ease of development, and scalability of having isolated environments like in the DevStack, while providing a production-viable instance of the platform. This is the main purpose of OCIM.

How we provision the Open edX platform

OCIM sets up virtual machines (VMs) that encapsulate a native installation of supported versions of the platform. We do this by using Ansible Playbooks, adapted from those that the Open edX community has worked on, to facilitate our native deployments, and also our own playbooks for monitoring, protecting and managing our client’s instances.

This allows us to offer cost-effective and easy-to-maintain instances, fully isolated from each other, adding an attractive degree of flexibility and security. Additionally, this lets users and administrators customize their instances, leaving upgrades and updates for us to handle, something that’s always recommended if using this platform in a production setting.

Having said that, using VMs does have some limitations worth considering:

While these aren’t game-changing issues for simply testing the plans we offer, we want to reduce the wait time as much as possible for all deployments, so our clients can get faster to the work that matters. For this, we’re considering different ways of provisioning the databases and other assets that are limited by some of our hardware, among other upgrades.

Also, we’re already working on newer OCIM features that will help platform administrators know the status of their instance and easily customize it to the greatest extent, all in one place.

Regardless of your subscription tier, we want to provide you with the most effective tools and the highest level of quality, so you can expand your opportunities in providing the best online education possible. Stay tuned for our upcoming updates! ?

Get in touch

We'd love to hear from you! Send us a message and a member of our team will get back to you.
Contact us
Subscribe to our newsletter
© OpenCraft 2026
edX and Open edX® are trademarks of edX Inc
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram