RCE Updates - Fall 2020

Instructure
Instructure
7 21 894

Hi!

You’ve got that stressed look on your face and my little boy is suddenly in preschool, so I guess fall start has begun! Here’s a quick update on the new RCE.

Things are going well. I mentioned losing sleep over the new RCE in my last post. Well, it’s a lot better now than it was then, thanks to your feedback and the work of a lot of people. Here are just some of the changes we’ve made in the last two months:

  • Added recently-used LTIs, LTI favorites, and the LTI toolbar group. In addition to lowering barriers to LTI tools in the editor, we’ve also allowed schools to hide the Canvas Media options in the toolbar to avoid confusion with other media tools.
  • Added split buttons to content input toolbar group. So now each of the content input buttons has a default action on the left side (insert external link, upload photo, upload media, upload document), and the dropdown which already existed on the right side. This means one less click for the default actions. Split buttons look like this:

Screen Shot 2020-09-07 at 11.04.05 PM.png

  • Added memory to the link navigator. Though the sidebar still collapses after a link addition, it remembers where you were last time when it reopens. (More on this below.)
  • Rearranged the toolbar to optimize for less-than-full-width screens. The placement of toolbar buttons now hopefully better reflects the priority of the average Canvas user. In short, bold is more common than LTIs are more common than tables. As screens shrink, we want truncation to reflect those priorities.
  • Made the menu bar always on. I admit this is prioritizing function over form, but it's also better than it was.
  • Removed auto-resizing and increased the default height of the text area. If you're still experiencing pain related to RCE resizing in beta, say so, because as far as I've seen we're solid now.
  • Dozens of bug fixes (and more incoming!)

These things are in varying states of release so keep your eyes peeled for the notes, but they’re all complete from a development perspective. Compared to where we were a couple of months ago, we've got a less clicky, easier to use, more accessible editor, and we're very excited about that! 

There are a few more things we’re in the process of working out.

  • Math in new RCE. We plan to expand our use of a library called MathJax in the new RCE to ensure that the math equations we render are easier to work with and more screen reader friendly than what we currently offer to people using the math editor. The current math editor outputs an image of an equation with alt text describing the image in LaTeX formatting, which is less-than-awesome for everybody working with that equation. To improve this situation, we plan to use MathJax to render math equations created in the math editor as MathML.
  • Extending the reach of new RCE. With a little bit of work, tools that aren’t a part of “core Canvas” -- namely our new quizzes tool -- could also make use of the Canvas RCE to provide a more consistent content creation experience across the platform.
  • Sidebar, slidebar, drawer, tray improvements. We’re still figuring out how to reduce unnecessary clicks in some sidebar flows. And we will figure it out -- it’s just a lotta ins, lotta outs. File search is also still pending.

If you hadn't already heard, the enforcement date for the new RCE was moved from December to January to avoid conflicts with finals. Our hope is that this provides a buffer for schools to plan for the best time to switch it on over the holidays if they haven’t done so already.

As usual, keep the feedback and bug reports coming because it’s your tool. Our oldest bug ticket that isn’t in progress was reported last week, so we’re doing what we can to respond quickly.

Feel free to ask all your questions and provide feedback in our New Rich Content Editor Beta Users Group.

 

21 Comments
Surveyor II

Thanks for this update @pcraighill, and especially for looking into math accessibility.  Regarding that specifically, if I'm not mistaken you're already deploying MathJax; you just aren't using it effectively.  When a math equation is added via the RCE, the output rendered to the Canvas page, as you mentioned, includes an image with LaTeX as alt text. However, the image is accompanied by the formula in MathML. Here's example code, showing the Quadratic Formula (simplified for purposes of this illustration):

<p>
  <img class="equation_image" alt="LaTeX: x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}">
  <span class="hidden-readable">
    <math xmlns="http://www.w3.org/1998/Math/MathML">
      <!-- math formula goes here -->
    </math>
  </span>
</p>

The "hidden-readable" class positions the math formula off-screen to the left so it's hidden from sighted users but accessible to screen reader users. If I remove that class in my browser's HTML inspector, the math formula becomes visible, and it is indeed rendered using MathJax.  If I right click on the formula, a MathJax menu appears, from which I can (among other things) select "About MathJax" to see that you're using MathJax v2.7.5.

The visible formula, rendered as it is with MathJax, has a variety of features that make it far superior than an image for rendering math.  And for screen reader users, they can already access the MathML but it's currently obstructed by the image. Advanced math students may know LaTeX, but for those who don't, the alt text is extremely confusing and users often don't get past what they perceive to be noise in order to discover the accessible MathML formula. 

From my perspective, since you're already producing MathML + MathJax as output, the solution might be as simple as this:

  1. Remove the image.
  2. Remove the "hidden-readable" class from the <span> that contains the math formula, so everyone can see it.

 

Community Advocate
Community Advocate

The same RCE (and math editor) for New Quizzes and core Canvas? Music to my ears! My math teachers will be very happy to see some attention given to the equation editor. 

Surveyor

How does the new RCE handle subaccounts using different LTIs? We have certain LTIs are that are available in the root account but not in our subaccount and vice versa. How can we make sure the users in our subaccount see only the LTIs available to them? We would not want to see a favorited LTI that is not available in our subaccount and we (at the subaccount) would want to be able to favorite the LTIs that are only available in our subaccount. 

Instructure
Instructure

@tft Thanks for the reply! I think we're on the same page. We're working on a proof of concept right now and we'll run it by you for validation.

@MattHanes 

pcraighill_0-1599755763978.gif

@dianelee We're in the process of adding LTI favoriting to sub-accounts so that root accounts can set default favorites (like a K-12 district with a common set of tools at all locations) and sub-accounts can override the default (like a nursing school that has a specific LTI that isn't relevant to other sub-accounts). 

Surveyor

thanks @pcraighill ! this is really fantastic news. do you have any sense of timing? i'm worried that it will not be in place before january when we are forced to enable the new rce. 

Instructure
Instructure

Hello. This is the engineer working on the new RCE here. I'd like your feedback on the direction I'm exploring for editing math equations.

Instructure
Instructure

A little update to the previous comment. When the equation image is the active element in the RCE, you'll get a popup button to edit the equation.

Screen Shot 2020-09-11 at 1.32.41 PM.png

Surveyor II

Thanks so much for this work you're doing @eschiebel. It really is very helpful for those of use who are working in the mathematics education area. I'm by no means a mathematician but got involved in this by way of working with accessibility needs, where support for learning maths in the LMS space has traditionally been pretty awful.

The ability to use MathJax in Canvas has been something I noticed a while ago by accident, so it's great to see that it's not going to go away anytime soon. I was worried about that because it's very much an undocumented feature! 

It would be good to provide feedback on the maths editor (which I believe is MathQuill) more directly than via these forums. Is there a way that we can collaborate on the development more closely with you and @pcraighill ? Thanks again for all the work you're doing.

Instructure
Instructure

@phillip_mills, you are mostly correct about the equation editor. The basic view is MathQuill, while the advanced view is just a textarea for you to enter LaTex or mathml. Updating the editor is in our work queue. If you have any ideas, @pcraighill and I would love to hear them.

Surveyor

This looks very good.

Can I just check something (which is a common request here at Oxford). Our maths dept would like to be able to paste text with in-lined LaTeX, eg, ".. we see that $$y$$ is equal to $$\int_0^\infty e^{-x^2} dx=\frac{\sqrt{\pi}}{2}$$ ...."

Can this be pasted into the 'textarea'? If not I'd say that would be a strong requirement.

Allowing this would (presumably) also mean that big chunks of text and latex could be pasted into the editor.

I suspect a lot of people would like to be able to cut and paste from existing latex documents which would save a lot of time

Instructure
Instructure

@dr_adam_marshal that's not currently possible, but I'll add it to the wishlist of features for the upcoming new equation editor dialog. Thanks for the input.

Surveyor

@eschiebel 

Two things.

1. Is there any way to use this in the multiple question formats in quizzes? I would love to be able to render equations in the various formats: fill in the blank, drop down menu, category questions, etc...This would allow us math teachers to really use all the resources the new quiz engine has to offer. Currently, we are limited to only using question options which grant us access to the RCE. I know adding the RCE to every question is a stretch, but just adding the option to render equations would be a HUGE HELP!!! Every math teacher who uses Canvas is begging for something like this.  

2. In order for Canvas to continue in its pursuit of educational LMS dominance, there needs to be a question option of "math response". This would work just like a short answer question, only the student would answer with a math expression or equation. When typing their response they should be typing in the equation editor and then Canvas renders the equation as the image you mentioned in your video; however, Canvas grades the latex code. Is this possible? The ability for students to submit answers such as x^2+7x+12, and their response look like a math expression, and Canvas grade it... we are talking complete dominance of the competition. Something to this degree would push Canvas way out in front of the other LMSs. There really is no way for the students to submit true math responses currently. 

I, along with all other math teachers, am begging for something like this to be added to Canvas. 

Instructure
Instructure

I've passed your comment on to the quiz engineers, and got this response

New quizzes already supports math equations in question options (in most question types, probably not dropdown though). And while we certainly don't support any kind of auto-graded equation answer (this would be incredibly difficult to build and support), it's already possible to build essay questions (manually graded) that allow students to respond with an equation.

Not fill in the blank, matching, or categorization

Surveyor
@wkylephillips totally agree with your point number 1.
Surveyor

@eschiebel 

Sorry to make you the middle man with the quiz engineers, but I’d like to make an edit to my point #2. 

If student responses with a full equation is too difficult to build and support, what if there was just a math fill in the blank. I’m hung up on this idea of Canvas doing all the grading. 🙂  It would work the same as it currently does, but the response was just recorded using a math font. This way equations and expressions wouldn’t look like (3x^2 +4x+5)/(x^2 +2), but rather would look like B8FDFE25-6DD5-4212-B691-7203104AA1D4.jpeg. The student doesn’t need access to the full equation editor, their responses just need to be written in a math font. Canvas would not have to grade any latex code, it would just be grading the equation the student wrote, the response is just in a different font, which handles basic math expressions. Would something along these lines make it easier to build and support? 

Surveyor

Love the additions to RCE.  Two suggestions...

We have 3300+ questions in our AP Calculus item banks.  Several of these are free response items that must be graded by instructors.  Because GRADING NOTES does not have the RCE, teachers must "verbalize" the answer to a calculus question for their grading.

Again for math specifically, it would  be very helpful if the feedback areas allowed for the RCE so instructors can add images or equations to help explain material.

Would be very helpful and hope you're considering these additions!

Surveyor II

The New RCE enhancements are looking good, keen to see what is next 🙂

@pcraighill regarding External Tool Favourites (a great step to reducing clickiness!) - it would be fantastic if these could be determined by User Role.

As a use case example, we'd love our Course Designers to be able to access design tools easily (reduced clicks), but these design tools are not available (or useful) to other Roles, whereas Students and Teachers would want different tools as Favourites. 👍

Navigator

As much as it makes sense to use the same equation editor everywhere, there are advantages to the equation editor in New Quizzes. Namely the ability to inline LaTeX by using \( and \) and speed in rendering (last I checked, New Quizzes uses KaTeX instead of MathJax).

One huge downside for student use is that there is no advanced mode preview for math content. This would be solved using the suggested approach, but the ability to insert math content without going into the equation editor should not be lost.

If I remember correctly, and it's been a rough month so I may not, You can currently use \( and \) inside Canvas for pages that have MathML. This might have been a Chrome thing, but since Chrome can't display MathML, Canvas loaded MathJax on pages that have MathML and then you can use the benefits of MathJax on the page in other places.

I set up a sub-account for my classes this semester and added MathJax to it via the theming for the subaccount and the global JavaScript file. I checked to see if MathJax was already loaded by Canvas before I did this, but I still ran into problems. When you go to edit a page using the RCE, Canvas was picking up my MathJax that got loaded but it didn't have all of the properties that their MathJax has and loading the equation editor from the RCE broke things terribly. I had to further refine the pages where I tried to install MathJax.

@eschiebel is right that MathJax doesn't like to handle dynamic content, but there is a page devoted to it on their website. You need to call MathJax.typeset() or MathJax.typesetPromise(). I don't know what version of MathJax that became available in. I do know that even though I know what LaTeX I'm typing, I still get it wrong occasionally and having a preview without having to save the page would be awesome.

Many years ago, a classroom response system I was using had the ability to support math content, separated by backticks. You would go along and be editing and it would preview until you were inside the backticks and then you could edit the LaTeX or ASCIIMath or whatever and once you left the backticks, it went back to preview mode. 

Do something like that with the \( and \) for inline LaTeX and then you would really have something useful.

 

Navigator

@dr_adam_marshal 

MathJax defaults $$ to be displaymode math, not inline math, so I can't get on board with using the $$ delimiter for inline since that would be a major departure from what people may be used to with MathJax. \( and \) are used for inline math mode with MathJax. For hopefully obvious reasons, the single $ delimiter is not supported.

Inline pasting of LaTeX is supported with \( and \) provided that there is existing MathML on the page and that you're using Chrome. Since Chrome doesn't support MathML, Canvas loads MathJax to display it. But then that allows you to use LaTeX in other places as well.

Unfortunately, if you're using a browser that supports MathML (Firefox and Safari), then it doesn't load MathJax and your inline content is not rendered.

If Canvas would load MathJax on any page that has math content rather as is being proposed, then we should be able to use the delimiters that MathJax supports as a side effect.

Instructure
Instructure

@James

This is good input. Canvas will load MathJax if it detects math on the page. How we do that needs to be improved to detect user-entered LaTex.  Currently, canvas looks for a <math> element on the page, but unfortunately only if it's a descendent of an element with the "hidden-readable" class name.

When the update to math rendering hits beta/prod, turn on the new Updated math equation display  and canvas will also look for the existence of an element with the class "math_equation_latex", so wrapping your LaTex like that will soon become a possible workaround. 

Some inside baseball:

The RCE inserts an image of the equation into your content. With the Updated math equation display flag on, that image gets replaced with

<span class="math_equation_latex">\\(your latex here\\)</span>

on the fly as it's returned to canvas in the final (not-rce-editing) page, so it will render inline. (The RCE continues to use the image as before.) This has the nice side-effect of improving the rendering and accessibility of all existing content with equation images.

I will work to make detecting math on the page more robust.

Navigator

@eschiebel 

Having to wrap all of your user-LaTeX in a span is not user friendly. The whole point of allowing inline LaTeX is to make it fast to type and going into the HTML view to do that isn't fast. New Quizzes already supports it, which is why I am worried about loss of functionality with replacing the New Quizzes equation editor with the existing one.

Wrapping one of the elements that way might be doable, but it's going to be a hassle if you have to do it for all of them. In fact, as part of my quest for clean and consistent HTML, I have a macro that goes through and removes all spans because the use of a span within the RCE is normally a hack or work around for something.

If I understand what you're saying is that you're using the span.math_equation_latex to determine whether or not to load MathJax. I guess actually you didn't say there needed to be a span, just that the class needed to exist, so I could put it in a div.

Once MathJax is loaded on a page it doesn't require the span, it's only looking for the \( and \) or other defined delimiters.

I borrowed my code to detect math on the page from the MathJax documentation in the  section Loading MathJax Only on Pages with Math. I removed the check for $ because I don't want $ to signify math (maybe if I was the only person using it, but not if anyone else has the ability to create content -- and students do). I use the regex.test() instead of string.match(), but there doesn't appear to be much of a speed difference.

If you're into optimizing, then it does take longer to scan for \( and \) than to look up a classname. How much longer depends on the the amount of content, but in my very limited testing of 25 paragraphs of lorem ipsum text, it was under 0.25ms to scan and under 0.02ms to use getElementsByClassName. That's when there was no math content on the page - don't konw what the lorem ipsum guys were thinking when they didn't include any math tags.

A more substantial change could be to add a class to the body element to identify that this page contains math content and then the loading of MathJax could begin sooner and be ready by the time the content is displayed to minimize the amount of time that the LaTeX is visible before being rendered. One has to consider that MathJax might be ready before the content is in this case. Nothing is ever easy.

About the Author
I’ve worked in product management at Instructure for five years. I love my teams, and Canvas, and solving problems to make Canvas better.