Arguably, one of the biggest things about the most recent Open edX release, Koa, is that it officially supports the deployment of (some of) the newfangled micro-frontends edX has been putting out.  Among them is edX Publisher, also known as frontend-app-publisher, and we at OpenCraft feel it warrants some introduction in addition to what’s in the README – much like we did for the Gradebook MFE.

(You’ll see this post duplicate some of what’s in the README.  Don’t sweat it, we’re not plagiarizing; we wrote that too!)

Contrary to some of the Open edX IDAs, running Publisher is completely optional.  As such, it may not be easy to decide whether you have a pressing need for it.  This post’s raison d’être is to help you decide.  (And if the text doesn’t live up to it, it’ll at least tell you how to try it out for yourself!)

Let’s start by looking at what Publisher is not.

Does Publisher replace Studio?

You guessed it. Publisher is not a course authoring tool.  And it definitely doesn’t replace Studio for the editing of course content.

However, it does fill the same niche that some Studio features do, particularly as they relate to creating and editing course metadata. Put simply, if you use Publisher, you’ll no longer use Studio when creating courses, configuring their settings, writing about pages, and instantiating course runs.  You’ll do so via Publisher – but will still go to Studio to flesh out course content.

So, it doesn’t replace Studio… entirely.  What’s it good for, again?

edx created Publisher primarily to make it possible for courses to undergo a draft, review, and publish cycle, in a workflow that resembles Github reviews:

  1. A course author creates a course or a course run, then submits it for review.
  2. Review staff is automatically notified. Afterwards, they can suggest changes to the course. Think colored diffs.
  3. Once staff reviews the course, Publisher notifies the author. They can then accept, reject, or modify the suggested changes.
  4. After completing the review process, the author can publish the course automatically.

This is not all, though. In implementing the above, Publisher also:

  • Streamlines the management of course runs. Where in Studio it’s difficult to find all a course’s runs at a glance, Publisher shows them more directly and concisely.
  • Standardizes the process of creating About pages.
  • Facilitates integration of courses with other Open edX components such as Discovery and eCommerce. Authors no longer need to manage runs separately. For instance, whenan author creates a course in Publisher, they have toenter a price for the certificate. This bit of info is subsequently published in eCommerce automatically.

Sounds nice, but do I really need it?

Publisher is most useful for organizations that:

  • Require an Open edX-integrated tool that facilitates the review and publication process for many of courses.
  • Need to review and publish course content produced by third parties.
  • Host a significant number of courses or create course runs frequently, and are interested in a more efficient way of managing them.
  • Are heavy users of eCommerce or Programs, and would like a centralized way to manage courses.

If your organization doesn’t fall into one of the above, Publisher can still be useful but will likely not be considered mission-critical.

Still not sure.  How about a quick walk-through?

Sure thing!  Let’s start by using it on a devstack.  It’s rather easy: just follow the devstack setup instructions.  The default setup will get you a basic frontend-app-publisher instance all ready to go!

Once your devstack is up and running, open a browser and direct it to https://localhost:18400.  If you’re not already logged in to the LMS, use the default “edx@example.com” account, with password “edx”.  Once in, this is what you’ll see:

Open edX Publisher's front page, after log-in.

Front page, after log-in.

Note: If you get a connection reset error, the MFE likely did not finish compiling. It’s sensitive to slow internet connections, and does not like being behind a proxy. Check if it was compiled correctly via make frontend-app-publisher-logs.

You might recognize the demonstration course: this is the same one that has shipped with the devstack for as many years.  And above it, note the ability to create a new course, filter by status (“In review”, “Published”, “Scheduled”, and “Unsubmitted”), and search by name.  Quite an improvement over Studio!

If you click on the demonstration course, you’ll see a page where you can edit the course’s metadata and create runs.

Open edX Publisher: screenshot of the course page.
Screenshot of the course page.

Are courses now separate entities from runs? 

Not really, no.  This is just a presentation-layer feature that makes it easier to manage metadata.  From the point of view of the learner using the LMS, it’s still all runs.

They’re much easier to create with Publisher, though.  Simply click on “Add Course Run”, and after configuring it, you’ll see it “Unpublished”, like the Jan-25-2021 one you can see above.  After you set all the run’s metadata, you can submit it for review by course staff with the click of a button:

Open edX Publisher: screenshot of the run submission modal.
Screenshot of the run submission modal.

This is probably enough for you to get the gist.  For a more detailed feature-by-feature guide, refer to the Introduction to Publisher chapter of the courseware development documentation.

Note: Can’t get comments working?  That’s probably because to do so you must first configure integration with Salesforce.  See this decision document in the course-discovery repository.  In essence, if you don’t have a Salesforce account, you’re out of luck.

How does it work?

As an MFE, Publisher must communicate with other Open edX IDAs to do its job. The three whose APIs are consumed directly can be gleaned from its default environment files: LMS, Studio, and Discovery. The first two are a given, but for proper functioning of Publisher one needs to set up Discovery. Discovery must be made aware that Publisher is in use via the ENABLE_PUBLISHER setting.  It will then be responsible for integrating course runs into other Open edX services such as eCommerce and Programs.

Both Studio and the LMS use of the same ENABLE_PUBLISHER setting, but its primary effect is to forbid the editing of course about pages in Studio. (The relevant fields actually disappear from the /settings/details page for a course.) This makes sense, as producing about pages is Publisher’s main purpose, after all.

Need help!

Can’t get Publisher to work, or want a demonstration?  Get in touch!  We’ll lend you a hand!

This article was written by team member Adolfo R Brandes.

 Cover image: “Print press” by Herkie is licensed under CC BY-SA 2.0