At OpenCraft, we do a lot of feature development for our clients. While the Open edX platform is great and feature-packed out of the box, the best part is its extensibility. And we take full advantage of that when we need to develop a new feature.
When developing a new feature, we believe the following two considerations are the most important of all:
So, usually, in addition to internal reviews, our code is reviewed by edX. To ease this process, our instance manager monitors repositories and automatically creates sandboxes, allowing testing of the feature without installing the platform locally.
It’s worth mentioning that we are members of edX's prestigious Core Committers program, which means we are involved in the process of designing, implementing, and reviewing new features for the global platform roadmap.
We aim to help our clients with the design process: We talk with them so that we can understand their needs, and then we envision how to fill the gap with a new feature.
At OpenCraft, developing a new feature starts with a technical discovery. This is where we create a document that lays down the scope of the work to be done, a description of our approach as to how to do it, a list of tasks, and how much time it will take. We then send this document to our clients to review and approve, and we’re off!
As already mentioned, we put a lot of effort into designing new features in a way that they can be included in the Open edX codebase. This allows us to keep sources open and guarantees the best possible quality, because edX keeps standards high and reviews contributions rigorously. That’s why discussions with edX and other members in the community are an important part of our work. For example, we participate in Open edX releases preparation, are active on community forums and in Slack, and maintain some popular Open edX extensions.
After having signed off on the scope of the work, it’s a simple task of getting to it!
A good practice in this step is getting all code covered with tests, and reviewed by another developer before merging. We make a lot of use of our open source instance manager and create testing sandboxes for everything. Only after ensuring that everything works as expected, we deploy changes using blue / green strategy, so we can easily roll back in case of unexpected issues.
At OpenCraft, we believe in Open Source. Depending on the work done here, we might be creating new modules like XBlocks and Django Apps in which case we’d upstream them by uploading them to our public GitHub or GitLab accounts for everybody to use and improve.
But some changes require changes to the Open edX platform itself. In this case, after a ticket has been through our thorough internal quality control, we’ll submit it to Open edX Core Committers for review. Core Committers are trusted, long-standing members of the Open edX community who have been granted permission to review and merge code into the Open edX codebase. OpenCraft has multiple Core Committers within its team, which is a great token of trust from edX!
Finally, delivery! Once the work is done, approved, and merged into the platform if needed, we are ready to deliver the finished product. This might mean installing a new XBlock or App that was created, or it might be as simple as redeploying the client’s Open edX instance to include the latest changes.
While the roadmap above is the standard process, it’s not always a straight line. Sometimes we work with features that are interconnected, or maybe we have multiple review passes, or requirements change down the line etc. But no matter what happens, we are always committed to the two pillars of OpenCraft’s success: Quality Code and Open Source.
If you’re interested in having a feature developed for your OpenEdX deployment, feel free to drop us a note! You can contact OpenCraft here.
Photo by Yancy Min 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.
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:
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
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/
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.
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.
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'
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'
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
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
Congratulations to Harvard University’s Faculty of Arts and Sciences, the Amgen Foundation, and the LabXchange team on this win!
Even though the Open edX Conference was cancelled because of the COVID-19 pandemic, the awesome team at Open edX chose to celebrate the work of its community by announcing the inaugural Open edX prize earlier this year.
Open edX have published an official blog post to announce the good news. Read it here.
The nominations were evaluated according to two categories, the “most important technical project” and the “most important project in instruction or learning design”.
LabXchange was one of the many nominated projects by the community. It is a free and powerful online learning platform charged with innovative features and content. Powered by Open edX software, it provides users with enriching learning experiences and assets to help them grow. Through the development of the LabXchange platform, OpenCraft has contributed major new Open edX features such as Blockstore, a new XBlock Runtime, and a new visual assessment editor. You can learn more about LabXchange by checking our other blog post.
It gives us immense pleasure to announce that LabXchange was chosen to be “the most important technical project” among the many compelling nominations submitted by the community. We would like to congratulate Robert Lue, Professor of the Practice of Molecular and Cellular Biology at Harvard University and UNESCO Chair on Life Sciences and Social Innovation, Gaurav Vazirani, Managing Director of LabXchange, and David Ormsbee, Staff Software Engineer at edX. We would also like to congratulate Braden MacDonald, our CTO at OpenCraft, Usman Khalid, Senior Open Source Developer at OpenCraft, and every OpenCraft member who put any of their valuable time towards growing this platform; after all, we are a team working together to help each other grow alongside OpenCraft.
As a company dedicated to contributing to Open Source Software, such a prize is a bright indication of the appreciation the community has for the work we are proud to be contributing daily.
At OpenCraft, we work daily with top-tier universities. This probably isn’t all that surprising given that we specialize in developing and maintaining custom instances of Open edX, which is an open source course management platform that hosts Massive Open Online Courses (MOOCs) and online learning.
A massive number of institutions worldwide are members of edX.org, with more than 50 who are charter members. And they’re not just using the platform to power MOOCs, the original use case for Open edX. Today, they’re using Open edX to complement residential programs and offer blended learning experiences, especially in the face of the COVID-19 outbreak, because the platform's streamlined authoring experience allows instructors to easily shift to online courses and get them up and running quickly.
So, why are so many turning to the open source Open edX platform and, consequently, OpenCraft? After all, when it comes to learning management systems (LMS), Open edX is far from the only game in town, and prestigious institutions certainly have the budget to purchase proprietary software.
Universities have a dual humanitarian mission of providing high quality instruction and increasing our collective understanding of the world through research, but they still operate in a competitive environment. These institutions are constantly vying against each other for prestige, research funds and talented students. So, just as processes and business models evolve in the corporate world in response to competitive pressure, curriculum and research are constantly evolving at top-tier universities. This is especially critical in the wake of COVID-19, as higher ed institutions are now determining how they’ll continue instruction for the rest of 2020 and into 2021 — online learning will continue to play a key role.
Universities often need to expand, adapt and customize their LMS platform to meet their goals for learning innovation and research projects. Open edX is ideal for this purpose. It’s an open source, massively scalable platform that’s supported by an enthusiastic global community. And though its original use case, of course, was to power MOOCs, the platform has evolved into a powerful, flexible LMS.
For example, here’s some customizations we have done for our university clients:
A great example of a large-scale customization project is LabXChange. You can read much more about that particular project in our LabXChange launch blog post, but, briefly, LabXChange is an online science resource for students, teachers and the general public that we developed for Harvard University. It’s simple for anyone to build and share learning pathways (sort of like mini-courses) from smaller pieces of content that can be easily remixed and reused.
This was a two-year project built on Open edX, and it required extensive customization and new capabilities. This resulted in our contributing several major new Open edX features such as Blockstore (a new storage architecture), Content Libraries version 2, a new XBlock Runtime, anonymous platform access and a new visual assessment editor.
Having worked with dozens of universities over the past seven years, we’ve learned a great deal about how best to work with them.
You have to be patient. The academic world typically moves more slowly than the business world. We’ve had projects that took two years to come into place, from initial discussions to a signed contract.
Additionally, universities’ needs and goals change over time, which often affects the scope and timeline of our projects. Our iterative development approach allows us to be as nimble as our clients, so we can make changes, stay transparent and ensure that projects are delivered on time and with no surprises.
Finally, universities appreciate our commitment to open source and the larger Open edX community. They can expect that our solutions will be reviewed and approved by edX engineers and that they will align with edX's long-term roadmap. After all, it’s much less expensive to maintain new features and capabilities once a feature is merged into Open edX, because then it's maintained by edX and the community as a whole.
We really enjoy working with universities because they’re often pushing the boundaries of what’s been done before, giving us the opportunity to do creative, complex work. Plus, their high quality standards keep us sharp as we work to meet and exceed them, augmenting our expertise and increasing our ability to meet the challenges that all of our clients bring to us.
Learn more about our work with colleges and universities.
Photo by Christopher on Unsplash