Disallow Threaded Replies option in Discussions

TamasBalogh
Instructure
Instructure
51
17636

Canvas.png

On August 14th, 2024, we deployed an option in Discussions that allows you to disallow threaded replies. This feature was previously available in the legacy Discussions but was missing in the redesigned version. As a result, some of you may have noticed discrepancies with the new setting checked or not on your existing discussions. I would like to take this opportunity to clarify the situation.

Until now, in the database, we stored all new Discussions with the same property as we did for legacy discussions which were not threaded. Due to this, we could not distinguish whether a discussion had been created in the legacy Discussions with threaded replies disabled or if it had been created in the Discussions where threads had not yet been added. With the introduction of this feature, we needed to check the Disallow Threaded Replies setting for some of the Discussions.

At the time of the change, three scenarios were possible:

  1. If an existing discussion was explicitly set to threaded, the Disallow Threaded Replies setting remained unchecked. This indicates that the discussion was clearly created using the legacy Discussions with threading allowed.
  2. If an existing discussion was not set to threaded, but contained threads, the Disallow Threaded Replies setting also remained unchecked and we converted the underlying . This scenario indicates that the discussion was created using the Discussions and students had already added threaded replies.
  3. If an existing discussion was not explicitly set to threaded and did not contain threads, the Disallow Threaded Replies setting was set to checked, regardless if it was a new discussion or not, since this scenario could mean the discussion was either created in legacy Discussions with threading disabled or in Discussions without any threads.

This means, if you created a discussion recently and intended to allow threaded replies but did not have any threaded responses yet, this change would have set the setting to disallow threaded replies. To allow threaded replies again you can uncheck the Disallow Threaded Replies option when editing your discussion. We apologize if this change created any additional work. 

Moving forward, all newly created discussions will respect the Disallow Threaded Replies setting. If the setting is unchecked, the discussion will be threaded, while if the setting is checked, the discussion will be not threaded. Additionally, if a discussion is published and contains at least one threaded reply, the Disallow Threaded Replies setting will become locked and cannot be changed.

Should you have any questions or concerns, please feel free to reach out to your CSM or Support.

51 Comments
kailey
Community Participant

@TamasBalogh Thank you for this post. I've been working with Instructure Support yesterday and most of today to try and get an understanding of this exact issue. We have a case that doesn't seem to fit into any of the three categories you shared. We have a new, unpublished course with imported discussion topics. At least one of the discussions had the 'Disallow threaded replies' setting auto-enabled after the deploy, but the original discussion from the source course included threaded replies. So wouldn't this fall into #1 or #2 where the setting should be disabled? Or are imported discussions treated differently?

For #3, I don't think Instructure deployed that with the right mindset. Instructure is assuming the instructor's preference is to not allow threaded replies. However, discussions created with Discussions Redesign had no option for instructors to choose between threaded or not. So, instructors completed the discussion creation process with the understanding and impression that threaded replies will be applied. There are a number of reasons why there may not be any threaded replies to a discussion yet. For example, we bulk created Fall 2024 Canvas shells with Discussions Redesign enabled. Instructors have been setting up discussion prompts over the summer and those have no replies because the term has not started. Unless an instructor intentionally enabled the new setting, it shouldn't have been automatically enabled on their behalf. Without the instructor's knowledge, it's only going to cause them confusion. Institutions should have been given the choice to not have the setting auto-enabled for their instance if it doesn't work for their users.

 

bhmills
Community Explorer

Major impact in our live courses... It seems this was toggled in all discussions in all of our courses. Students can't post replies to their peers, which is a pretty standard discussion requirement. Hoping our internal ITS team can resolve the issue... Still wondering would you would roll out this update assuming that "disallow threaded replies" should be the default?

Jeff_F
Community Coach
Community Coach

I disagree with the decision to roll out this feature if it was known that doing so would negatively impact live courses. As noted by @bhmills this has had a major impact for us and is still an issue. If enabling this was going to cause problems, then we should be informed ahead of time. We spent quite a bit of time attempting to determine the cause all the while responding to dozens of instructor and student pleas for assistance. When I called to report the problem on 8/13, the support folks wanted to be helpful but it seemed to me that they didn't know about this change and the impact. The solution they offered made little sense as it wouldn't resolve the issue of this setting being enabled and greyed out (add availability dates).

We should be made aware of such changes so we can alert our users ahead of the implementation. We would call for a discussions 'downtime'. This is crucial as even during the summer we have over 1,000 active courses. And we should be provided with a solution ahead of time as well. For example, Canvas performing API calls to list the impacted courses/ discussions as well as API calls to change the setting. This is necessary as this change enabled the setting in active discussions and as students already posted, instructors nor our support team could edit the setting via the GUI. It is also needed due to the scale. Using Canvas Data we detected there being over 5,400 discussions with this setting enabled. Our LMS administrator created a support request last night requesting Canvas to remove the setting from these discussions.

In addition, while the deploy notes state this was to be enabled on 8/14 I believe it was enabled a day early on 8/13 as that is when we started receiving reports of missing reply buttons. This leads to a question of when exactly are system changes made? The system time is tied to the Eastern time zone. Are system updates then made according to that time zone?

https://community.canvaslms.com/t5/Canvas-Releases/Canvas-Deploy-Notes-2024-08-14/ta-p/610769#toc-hI...

dbrace
Community Coach
Community Coach

@TamasBalogh, while I could be wrong and this is my opinion, I believe that if a discussion already existed and did not have any threads, it would have been safer to allow threads while also informing the community at large in this style of blog post so that discussions could have been reviewed for accuracy with how they are configured.

Question: Is this incident (https://status.instructure.com/incidents/3lnwrvxp8nmz) related to this problem? The incident start time was officially Aug 13, 2024 - 21:53 MDT and end time was Aug 14, 2024 - 06:28 MDT.

James
Community Champion

@Jeff_F 

I haven't been following this closely, so my thought process might be off here. I'm exploring how this impacts our institution and trying to narrow down where the problem is coming from.

I use July 20 here because that's the date we were switched forced to the new discussions, but I know some people wisely adopted it before the semester began rather than being forced into it in the middle of a semester.

Based on memory and using Canvas for 12 years, prior to July 20, instructors would have had to check a box to make it a threaded discussion if they wanted that. And if that box was checked before July 20, then the discussions are still threaded, which is what the instructor wanted.

If the instructor had not selected threaded discussions prior to July 20, then they did not want (or perhaps didn't know how to set things up) threaded discussions.  Since they could not have threaded replies (unless the instructor had changed things mid-discussion), they got set to non-threaded, which is what the instructor wanted.

I'm interpreting that as only discussions created after switching to the Discussions Redesign (July 20 for us) that are potentially affected.

Since we're only a month into that, the number is small. That doesn't jive with what other people are saying in this thread, so this is where someone can tell me my logic is off. But perhaps the difference is just because other people made the switch earlier and the logic is valid.

After my initial freak out, I checked my discussions for the upcoming term and they were okay. I had specifically used threaded in the previous course, but I had copied the content over back in May.

I then checked our Canvas Data 2 (CD2) database to see how big of an impact this would be.

We had ~2500 discussions for the upcoming term, about 500 of those were marked as side_comment (non-threaded). I figured I only had to worry about those created since July 20. That narrowed it down to about 300.

Of course "created_at" doesn't mean that the discussion is new. It means that's when it was created for the course. That could have been a course import from a previous course. The settings would come through correctly from the previous course.

I then looked at the migration_id in CD2 and every single discussion I was worried about had a migration_id. There were no new discussions created during that time.

Whew! I was safe. Nothing to worry about.

But then I had question as I was preparing this.

If a course was copied DURING the time between July 20 and August 13, would it honor the settings of the previous course, even if there was no equivalent setting in the discussions redesign?

Knowing the migration_id itself in CD2 isn't particularly useful. There is a content_migrations table, but it uses an integer ID, which seems to apply to the migration itself, while the migration_id appears unique for each individual item that is migrated.

I took one of those discussions marked as side_comment where students had already replied for this semester and dug in further. I found the same discussion in the offering from Spring 2024 and it was marked as threaded. It's possible that the discussion was copied from Summer 2023 -- the last time it was non-threaded -- but unlikely. To make sure, I used the course audit log API to get where the course was imported from. Note that you can also use the list course migrations endpoint to get the source course. The source course wasn't the one I thought it was. For some reason, the course that it actually came from didn't show up in the query, but once I found the actual ID, I was able to look up the discussion and it was non-threaded in that course. Since it was non-threaded in Summer 2024, the source course used in the import, it should have been non-threaded here -- and it is. 

I checked another discussion from a different course that was copied between July 20 and August 13. That discussion was non-threaded in the original and non-threaded in the new course as well. That discussion had also been renamed from "Weekly Chat" (the source course had 10 discussions called "Weekly Chat" and the new one is "Weekly Chat 1"). That makes it hard to be able to match up assignments exactly when comparing, but all 10 Weekly Chats were side_comment.

Two checks and it looks correct so far, but two is a really small number.

I checked a psychology discussion this time, one that didn't already have a reply. This time, it was non-threaded in the new course, but threaded in the original course. However, the instructor edited the discussion on August 6 and it's possible that they changed the settings at that time. Possibly a problem, but there's a reasonable explanation.

I then focused on discussions that had never been edited since their original creation. That narrowed my list down to about 200.

It's going to be impossible for me to automatically check every discussion, but so far it's looking like the transition was smooth for me.

I checked one more. This time, I know the instructor hasn't edited the discussion. It's side_comment in the new discussion and threaded in the original discussion.

That means I can confirm that the transition is not smooth and that courses migrated after switching to the Discussions Redesign but before August 13 do not honor their settings (I haven't checked courses copied after August 13). That makes it more of an impact for institutions that switched early.

I haven't written code to go through and test this (I still have one more class finish getting ready before school starts on Monday).

It seems that I could use CD2 to get a list of all current and future discussions that were side_comment. Then use the API to get which courses the discussions were originally copied from and try to match them up. This could be simple provided the titles were unique and haven't changed (those conditions are not guaranteed). I might have to resort to comparing the text of the discussion itself, but I'm guessing that's not unique either. I could then use the API or CD2 to find out which of those discussions were threaded in the original course. Presumably, since Canvas has those migration ids, they know which assignment it came from and could have programmed that in the first place, but then they would have had to deal with new discussions using their logic.

 

Does this sound like what you're seeing?

 

Do you know of a more definitive way to link the new discussion to the original one? The migration_id in the CD2 discussion_topics table is a UUID and cannot be used to look up anything that I know how to access. There is an old_assignment_id but it is the same as assignment_id and not one to a previous course. I know you've done a lot more work CD2 than I have, so perhaps you see something I don't?

Edit: I did discover that the content_migrations table in CD2 has the source_course_id when the migration_type = 'course_copy_importer'. This could save having to look the previous course up using the API.

LayaKafle
Community Member

Dear friends and Respected Professors, Namaskar!

Nice to see you on the canvas of IVC.

I have been using canvas on chrome browser for two years. i had no any problems, but when I saw this disallowed discussions, I got surprised and could not understand what it is and why it was set like this. I am confused what it aims to do and what I am supposed to do. Thank you so much for the post. Namaskar.

James
Community Champion

@LayaKafle 

Here is the short version. It purposefully leaves out some of the details that may confuse the situation.

If you are a student, you don't need to do anything.

If you are an instructor, instructional designer, or other person responsible for creating discussions, then you should check the settings for each of your discussions in all of your current or future classes. See the How do I edit a discussion in a course? lesson from the Canvas Instructor Guide if you need help doing that.

Check the options section where it says "Disallow threaded discussions."

  • Select (check) that checkbox if you want a flat, non-threaded discussion. This prevents users from responding to other student's replies and forces them to respond to the main discussion topic.
  • Deselect (uncheck) that checkbox if you want a threaded discussion. This allows students to respond to each others replies.

If you change the setting, be sure to scroll down and hit save.

You may think that you already have it set from a previous semester. The problem is that for a while, Canvas did not keep your settings when you copied the course content over and it may be set to something other than what you want.

nwilson7
Community Champion

@TamasBalogh I completely agree with the thoughts shared by others.  #3 seems completely backwards for people that were building courses over the summer as they did not have an option to check the box to allow threaded replies.  We were forced to turn on the discussion redesign early because July 20th is in the middle of our summer term and we did not want things switching in live courses.  This means that the majority of the courses we built this summer are all wrong as we would never have selected a box to disable threaded replies BUT those courses don't become live until next week so no students have posted yet for #2 to apply.  Can Instructure do something to change this?

ADDED LATER: I find it interesting that when Instructure developed the Discussion Redesign they made the assumption that everyone always wanted threaded replies and then when they made this change, they assumed everyone wanted the exact opposite.

-Nick

paulamiranda
Community Participant

To my knowledge and testing, "Disallow Threaded Replies" was pulled from production shortly after Wednesday's deploy. There was a related service incident, and the fix appeared to be to remove this setting from prod altogether. When I read this blog post on Friday afternoon, there was nothing in the message that indicated that it would be bundled with Saturday's release.

Also, shoutout to @kailey (Hi, Kailey!) for highlighting the fact there were no settings for threaded replies at all in Discussions Redesign to begin with, which increases the amount of people/discussions this has impacted, given the 3rd condition in the blog post (“3. If an existing discussion was not explicitly set to threaded...”). Here is a screenshot of discussion settings that was taken prior to this change, confirming that there was no setting allowing for threaded discussions, therefore no ability for instructors or designers to set this option.

deploy_disallow-threaded-replies-before.png

As of this morning, there aren't any updates on the August 14 Deploy Notes about this change (or the change to the Sections Added to Course Tray, which ended up being hidden behind an account setting), nor were there updates made to the August 17 Release Notes. We rely on these notes to test upcoming changes and validate them once they are live. 

ccarnes
Community Explorer

Here is what I don't understand.

We use Blueprint courses. So I understand how the settings should or should not change.

BUT when it is set to Disallow threaded - it is not allowing any replies to any of the initial posts. Is it supposed to work that way? That if it is set to Disallow threaded that it won't allow replies to initial posts?

Thank you. We are hurriedly going through all of the Blueprints and turning of the Disallow so our students make make reply posts as classes have just started. What a mess!

TimVanNorman
Community Member

I am a little confused on this issue, just like several of the people who have posted here.

It appears that Canvas wants to make all discussions not threaded, by default. This goes contrary to what many faculty use Discussions for, peer-to-peer/student-to-student interactions.  As this occurred just when classes have started for our faculty, this means that EVERY discussion needs to be opened and the button de-selected, for all discussions that were created since we turned on Discussion Redesign.  

Was that the idea behind this change, force all faculty to individually edit each discussion?

Also, since many faculty would choose to either have threaded or non-threaded discussions.  Couldn't a setting have been made to default all Discussions one way, then allow the faculty to only change this, when they wanted to?  Having Disable Threaded Discussions turned off, by default, is now causing confusion for all faculty who have never had to worry about it, prior to today.

I hope this makes a little sense.

TrentMcMahon
Community Explorer

Echoing the sentiments of others here. Bold of Instructure to assume that being unable to check a button which is not there in Discussions Redesign must mean that users want to disallow threaded discussions, a feature which, quite honestly, I have never once used in my years as an admin and course designer. 

We adopted the new UI to align with the start of summer term, meaning we have hundreds of courses to check to make sure that our learners are able to reply properly to their discussion board assignments... awesome. 

JennyDruckrey
Community Explorer

This has also caused issues for our school.  We've been using discussions redesign since we first migrated to Canvas last year.  This morning, we had a lot of instructors reaching out wondering why students couldn't reply to discussions and found that this was checked in their fall courses.  Our semester is just starting so this caused a large number of issues in discussion boards that didn't have any activity yet.  Furthermore, it seems complicated that students cannot reply to anything but the main prompt--not just secondary replies.  To me, that defeats the purpose of a discussion board.  Our CSM told us we could use the API to change, which resulted in me spending a lot of time getting that sorted instead of dealing with all the other start of semester issues.  It'll all work out, but I did want to share my PowerShell API code that I used to update our fall courses.  Initial results look promising and if you're comfortable with API's and PowerShell, please feel free to use.  This may not be a good fit for your school, so if you unsure of the results, please use your BETA environment to test or work with someone who feels more comfortable with API's.  I won't be able to help with additional troubleshooting but hope that this gives someone else a starting point.  Someone else may also have a more elegant solution.

---

#Update these values
$term = '<term_id>'
$token = '<token>'
$instanceUrl = 'https://someSchool.instructure.com'

#Get list of classes for a given term
$page = 1;
$oldcount = 0;
$urlclasses = $instanceUrl + '/api/v1/accounts/1/courses/?enrollment_term_id=' +$term +'&access_token=' + $token + '&per_page=100&page=' + $page
$semesterclasses = Invoke-RestMethod $urlclasses -Method get


#For more than 100 courses
while ($semesterclasses.Count -gt $oldcount)
{
$page ++;
$oldcount = $semesterclasses.Count
$urlclasses = $instanceUrl + '/api/v1/accounts/1/courses/?enrollment_term_id=' +$term +'&access_token=' + $token + '&per_page=100&page=' + $page
$semesterclasses += Invoke-RestMethod $urlclasses -Method get
}
$semesterclasses.Count #shows how many classes will be updated

#For every class returned, get a list of discussion topics
foreach ($s in $semesterclasses) {
#Get a list of dicussion topics
$dtopicsurl = $instanceUrl + 'v1/courses/'+ $s.id +'/discussion_topics?access_token=' + $token
$dtopiclist = Invoke-RestMethod $dtopicsurl -Method get

#Update each topic (if they exist)to allow threaded replies
if ($dtopiclist -ne $null) {
foreach ($d in $dtopiclist) {
$updateurl = $instanceUrl + '/api/v1/courses/'+ $s.id +'/discussion_topics/'+$d.id+'/?access_token=' + $token + '&discussion_type=threaded'
$updatetopic = Invoke-RestMethod $updateurl -Method Put
}
}
$s.course_code #tracker to see how script progress

James
Community Champion

@ccarnes 

Disallowing threaded discussions prevents replies to replies and only allows replies to the original discussion prompt. This is documented in the How do I create a discussion as an instructor? lesson in the Canvas Instructor Guide. See the "Set additional options" section for the exact wording.

 

sima_tarokh
Community Participant

@TamasBalogh 

We strongly urge you to reconsider making "Disallow threaded replies" the "default" setting for Canvas discussions.

Traditional discussions are naturally designed for back-and-forth conversations and interactions among multiple participants. Setting this as the default disrupts effective communication and collaboration within Canvas.

Since our master courses have already been imported into many active courses, this change is likely to cause significant disruption and confusion among both instructors and students. We've already received reports of issues resulting from this new default setting.

We respectfully request that you maintain the current behavior to avoid imposing this limitation on our users.

pray4
Community Participant

We are triaging along with the rest of you, but I sincerely hope that Canvas learns its lesson and listens to its community going forward. Myself and others pleaded to delay the launch of the redesign until we had final product in beta and test to thoroughly test. Those requests were met with silence here, and so we escalated through our Success Representative. Everyone makes mistakes, but it would be welcome to see some more efforts made to minimize these types of issues going forward.

The cadence of substantive updates needs to be spread out in such a way that Canvas' staff can effective deploy, and clients can effectively test. I've some suspicion that what we're currently dealing with is tied to the recent Canvas sale, but regardless of the whys, I hope Canvas recognizes the goodwill it has built over the years and does not squander it as other EdTech platforms before it.

Now I'm off to find a Lucid app thread so I can share to some additional displeasure, albeit in a polite yet direct tone. 😉

ccarnes
Community Explorer

Yesterday, last night and today - all the my colleagues and I have been doing is going into the BluePrint courses and changing the setting to off.

In the older versions of the discussions - the idea was the discussions showed up and you were able to reply whether you said threaded discussion or not. So for many courses, we had not checked the Allow Threaded Discussions.

We switched to the New Discussions - there was no setting to check or not check.

Now the people who are in charge of the BluePrints must go through our 100s of BluePrints and go through every discussion in those BluePrints for any course that has that setting marked - NO INDIVIDUAL INSTRUCTORS cannot change the settings for that. It must be synced out through the BluePrint settings.

So we are spending all our time - going through the BluePrints and changing the discussion forums. After we spent the last week, helping professors figure out how to change dates in their discussion forums.

It used to be when you copied out the BluePrints, the professors could click on the edit of the discussion itself and change the date setting on teach individual assignment. Many of our professors did that this way.

We started getting calls that they could not set the dates that way. So we have to tell everyone - do not go into the discussion when setting dates - go to the calendar or go to the Batch edit for all the dates. It was just a preference - and because some had learned that that is the way they do it they had to relearn it.

Then we had someone who was making an edit NOT in a BluePrint course but the Save button was not working. We could not figure it out  - until we figured out it was an issue with the dates. The error with the dates is hidden in the popup. So you don't know their is an error unless you click it open after you have tried to save it.

We have spent last week and these few days - just trying to cope with all the errors, and the new messes that this update has caused. I'm really disappointed because we switched to Canvas to make things easier. I understand the updates try to make things easier yet - but sometimes trying to make things fancier - just makes everything more difficult and causes a great deal of stress for the end users.

Thank you for hearing me out - just frustrated and tired.

 

TomGibbons
Community Explorer

So, this is really a new feature in the Discussions redesign. Here's what it looked like on July 5: https://www.youtube.com/watch?v=bDbXqHbbMB0&t=676s There were no options, and we had to live with it that way for nearly a month, if not more. 

The state of the setting when the feature was released is a little annoying--using legacy settings that were no longer even configurable by users to make the decision just seems weird. 

Here's my big issue: Needing to toggle a setting to True/Checked to achieve a "not" function. It's not great, and can be confusing and easily misread as "Allow Threaded Replies." Every other setting in the list is phrased as activating a feature, not disabling/disallowing a feature. Usually, you want to go with positive expressions, not negative, when at all possible. 

The expression in the opening sentence of this original blog post is a clear demonstration of the difficulty of the current label: "...we deployed an option in Discussions that allows you to disallow threaded replies." It allows us to disallow? That's rough. 

Considering that the setting in legacy was "Allow Threaded Replies" and the default was unchecked, and now it's "Disallow Threaded Discussions," which is *also* defaulted to unchecked, users aren't being set up for success. 

It would be great if: 

  1. The setting were "Allow Threaded Replies"
  2. The default for a newly created discussion were "True" so that replies are threaded by default. (I can't speak for all use cases and users, but I can count on one hand the number of times I've seen an instructor or designer use Focused discussions intentionally over the last 12 years.)

Changing the label to "Allow Threaded Replies" and the default state to "True" right now will add to the initial feature release confusion, but it's going to save users and admins a lot of low-level frustration in the future.  

PallaviJalakam
Community Contributor

What a hassle right before the courses go live!

All unpublished courses that have the threaded discussion option enabled but lack threaded discussions now need to be updated one by one.

The settings are inconsistent across the courses. Some newly developed courses have the "Disallow threaded replies" option enabled, while others do not. With so many courses about to go live, checking each discussion is a complete mess.

Can we just have the Allow Threaded Replies option back as default?

JeremyDavis144
Community Member

I'm glad you have admitted to your mistake. We have been scrambling and scratching our heads.

But thanks for posting this and owning up to it. I would just have preferred some kind of warning. 

mwolfenstein
Community Participant

A lot of folks have already weighed in on why this whole roll out process was extremely problematic. I just wanted to add some feedback that actually goes to a deeper UX issue.

Instructure decided to have a checkbox for a negative in this interface. There are a few different ways this could have been approached, but selecting the negative is incredibly counterintuitive and frankly goes against basic UI design principles.

First, as others have pointed out, the default both for the redesign and for the vast majority of discussion forum use cases is to have threaded replies.

Second, from an information design standpoint checkboxes should be used to affirm a state, not negate it. At the very least, that checkbox might read, "Limit replies to a single level." which would at least be asserting a state rather than asserting a negative. The far more sensible version which would have avoided this entire cluster of a situation would be for the checkbox to be selected by default and to read "Allow threaded replies."

At this point, I'm worried that if Instructure attempted to implement that UI change it might blow up everyone's discussions again, but if there is any chance of ensuring that existing discussion settings are in no way tampered with I strongly recommend switching over to the default selected checkbox for the enabled state of threaded replies as this would conform with UX and interface design principles.

TomGibbons
Community Explorer

@mwolfenstein Same. See my reply from earlier today in this thread. The whole UI approach is opposite to both the legacy approach and to the current list of settings in the redesign--which are all framed as activating a feature, not preventing one. 

dbrace
Community Coach
Community Coach

An email I received on 2024-08-20 at 6:59 PM ET, with the following subject: Public Incident Report: 2024.08.13 Threaded Replies disabled in discussions


Summary

Threaded replies disabled in discussions on 8/13/24 to 8/14/24

 

Overview

The “Disallow Threaded Replies” setting for Canvas Discussions was enabled and locked for some discussions in all regions from 9:35 AM MT 8/13/24 to 6:31 AM MT 8/14/24. This kept users from being able to add threaded replies on discussions. Teachers and admins were also unable to modify the setting on their discussions to allow threaded responses.

 

Details

At 9:35 AM MT on 8/13/24, we deployed code in production that anticipated a database migration to add required data and columns within the database would occur immediately after deployment. Since the migration was set to occur after the deploy was completed everywhere later on 8/14/24, the new code changed the setting on discussions immediately. The “Disallow threaded replies” settings were enabled and locked for all existing discussions which had not been explicitly set to threaded, and did not yet contain threads.

We first became aware of issues with discussions not allowing threaded replies at 9:46 PM MT on 8/13/24. Additionally, the setting to enable threads could not be modified. Initially, we planned to revert the change that caused the issue, but encountered difficulties due to complexities in the code. Instead, we opted to implement an alternative solution that addressed the pre-migration state and resolved the problem for users. This fix was successfully deployed by 6:31 AM MT on 8/14/24.

 

Mitigation

Our Engineers implemented a fix to resolve the immediate issue by adding the necessary data that would have been included in a later migration. For future fixes, we will ensure that new code integrates seamlessly with existing code and does not depend on data that hasn't yet been added to Canvas.

Despite the resolution, some discussions remained in a state that prevented threaded replies. This can be corrected using the “Update a topic” API endpoint by setting the discussion_type parameter to “side_comment.” If you need help with this process, please submit a support request, and our team will assist you. For more details about the incident, refer to this blog post https://community.canvaslms.com/t5/The-Product-Blog/Disallow-Threaded-Replies-option-in-Discussions/....

 

Conclusion

We apologize for the inconvenience. We understand that any service downtime is challenging and are working diligently to prevent such issues in the future.

TraceyDeCicco
Community Participant

I, too, am very curious as to why the decision was made to make this enabled by default. Discussions are usually added as an engagement activity so students will converse with each other, so disabling this by default is puzzling to me. This is the first week of the Fall semester, so this has resulted in a great deal of extra work for the instructors in an already busy week and great confusion among students. I'm not trying to "pile on", but I am just confused as to why it was decided that not allowing replies in discussion boards should be the default.

TamasBalogh
Instructure
Instructure
Author

Hello everyone,

First and foremost, I want to sincerely apologize on behalf of the entire team for the inconvenience and disruption caused by this recent change. I understand it led to confusion and frustration, particularly with the additional work required to reset your discussions to be threaded. We also acknowledge that communication prior to this change would have been essential in keeping you informed.

@James provided an excellent summary of the issue and the reasoning behind the change. To clarify, the Discussion Redesign shares the same database as the legacy Discussions, enabling support for both newly created discussions and those from the legacy system. Due to this and the initial absence of an option to mark a discussion as threaded or non-threaded, it was impossible to distinguish whether a discussion was created before or after the transition to Discussions Redesign. As a result, our goal was to minimize the number of discussions affected, ideally limiting the impact to only those created post-switch. It's important to note that we do not assume our users prefer non-threaded discussions. By default, when you create a new discussion, the “Disallow threaded replies” setting is not enabled.

In addition to the change which led to disruptions, there were complications during the deployment and database migration. @dbrace has kindly shared the incident report email that provides further details on the issue.

Moving forward, we are looking into updating the “Disallow threaded Replies” option to “Allow threaded Replies,” with the checkbox enabled by default. If we proceed with this change, we will ensure it is implemented smoothly, with ample communication well in advance to avoid any further disruptions.

I want to assure you that the team has learned a great deal from these events and is committed to preventing similar issues in the future.

cinman
Community Explorer

T

rtoon
Community Contributor

For those of you familiar with installing and using canvasapi, here's the script I ran for our system to fix a subaccount of courses.

#!/usr/bin/env python3

import os

from canvasapi import Canvas  # used for interfacing with canvas

# Canvas API URL
API_URL = os.environ["IVY_CANVAS_SERVER_NAME"]
# Canvas API key
API_KEY = os.environ["IVY_CANVAS_LMS_TOKEN"]
IOL = 16185
TERM = 3378
# Initialize a new Canvas object
canvas = Canvas(API_URL, API_KEY)
iol_account = canvas.get_account(IOL)  # IvyOnline

courses = iol_account.get_courses(enrollment_term_id=TERM)
for course in courses:
    print(course)
    discussions = course.get_discussion_topics()
    for disc in discussions:
        disc.update(discussion_type="threaded")
MarkNowowiejski
Community Member

Having tons of issues with the moronic feature (why would anyone want this?!)

It seems to be ranodomly applying through out our blueprint and live courses all week with no rhyme reason

our helpdesk is getting flooded.

TamasBalogh
Instructure
Instructure
Author

@ccarnes I'm sorry to hear about additional issues you face. We received both bugs and they are being resolved now and will be deployed soon:
1. Synced discussion's date can't be edited even if the date is not locked 
2. Error message is hidden in the Assign To tray

I was not able to reproduce the other issue you mentioned, that if a blueprint discussion is set to disallow threaded replies, users can't reply to the initial post neither. If you are still experiencing that, please contact support so they can document it. Thank you!

Jeff_F
Community Coach
Community Coach

@TamasBalogh 

This experience reminded me of an approach where we held off on making system changes in the weeks leading up to the term start. Sure, everyone has different term start dates and we actually have ten. But if major changes were not applied in the 2-3 weeks ahead of the typical Fall and Spring term start dates it may well help a great deal of people. Especially when an unexpected kerfuffle occurs with the deploy of new code that didn't work as envisioned. 

I would gamble that 99% of the faculty prefer a stable environment more than they favor pressing forward with new features at an already busy time.

Please pass this suggestion on to management for consideration.

 

Thanks!!  ~ Jeff

Charles_Barbour
Community Participant

Amen @Jeff_F . We have change freezes in place for exactly this reason!

During BTS, we have a 2 week period in which we aren't allowed to apply updates, update code, or make configuration changes unless there is an absolutely critical need.

Of course our SaaS vendors can still push any changes they want... (seemingly without consulting their customers' academic calendars).

It's astounding and frankly irresponsible.

I can't imagine many accounting and bookkeeping software providers push significant changes  in the week before April 15th.

helfco
Community Participant

@rtoon  Thanks so much for sharing your code! I owe you one!

After a lot of trial and error (I'm a python noob) I was able to get this to work in our Fall term courses. (edit) One warning to anyone running this, your Canvas username will appear under any discussion that is fixed. I had a few concerned instructors contact me asking if I was making changes to their discussions without permission.

Had to install/update python/canvas api libraries in the Mac terminal, set up the environment, edit the script, etc. I was stuck in "LibreSSL" so I had to figure out how to change to "OpenSSL"

Was working great then stopped with an error when a "discussion topic has specific section visibility settings, and the API call you're making doesn't align with those settings."

ChatGPT had me: 

  • Skip Sections with Visibility Settings: You can modify your script to skip discussions with section visibility settings.

  • Handle the Error Gracefully: Modify the script to continue processing the next discussion even if one fails.

Then I asked it to sort the courses in alphabetical order so I can watch it run and estimate when it is almost complete.

Here's what worked finally:

 

import os
from canvasapi import Canvas
from canvasapi.exceptions import BadRequest

# Canvas API URL
API_URL = "https://ADD YOUR COLLEGE INSTANCE HERE"
# Canvas API key
API_KEY = os.getenv("IVY_CANVAS_LMS_TOKEN")

if not API_KEY:
    print("Error: API Key not found. Make sure the IVY_CANVAS_LMS_TOKEN environment variable is set.")
    exit(1)

print(f"API_KEY: {API_KEY[:5]}...")  # Only print the first 5 characters for verification

# Subaccount ID and Term ID
SUBACCOUNT_ID = 583
TERM_ID = 314

# Initialize a new Canvas object
canvas = Canvas(API_URL, API_KEY)
subaccount = canvas.get_account(SUBACCOUNT_ID)

print(f"Fetching courses for subaccount {SUBACCOUNT_ID} in term {TERM_ID}")
courses = subaccount.get_courses(enrollment_term_id=TERM_ID)
courses = sorted(courses, key=lambda course: course.name)  # Sort courses alphabetically by name
print("Courses fetched and sorted successfully.")

for course in courses:
    print(f"Processing course: {course.name}")
    discussions = course.get_discussion_topics()
    for disc in discussions:
        try:
            print(f"Updating discussion: {disc.title}")
            disc.update(discussion_type="threaded")
        except BadRequest as e:
            print(f"Failed to update discussion '{disc.title}': {e}")
            continue

print("Discussion updates completed.")

 

 

 

gmuro
Community Member

@TamasBalogh Terrible idea that no one wanted, but you forced it on us (after semester starts, for many)

No one ever asks for these "features"

Stop it.

helfco
Community Participant

Not to go off topic, but Announcements is related to Discussions. I'm not a fan of the default in Announcements to allow students to reply. Not sure everyone else's thoughts on this, but I would like this to be unchecked by default. I prefer back/forth communication in Inbox, Discussions, Submission Feedback etc. and prefer my Announcements to be one-way. I understand that some instructors like replies on Announcements, but I don't like that it is the default.

On the plus side I do like the new until date feature on Announcements and the blue reply button for teachers who want students to interact with their announcement.

It'd be nice if Canvas started sending out surveys to get user feedback on these new features before deploying them.

dbrace
Community Coach
Community Coach

Completely agree with @helfco, especially with Announcements.

We have a "Student Life" course that various people with the appropriate level of access and they have the ability to post announcements for our community (everyone is enrolled into the course with a custom role that disabled using the Canvas Inbox). We had someone post an announcement and a few students commented on the announcement.

If would be great if comments for announcements (which is how it used to be) were disabled by default.

rtoon
Community Contributor

@helfco the entire configuration for announcements is kind of weird right now. We turned off students can reply to announcements at the root level, but left it unlocked, so that instructors can turn it on for their course if they'd like. I think the announcements still default to saying students can reply, but it throws an error if they try unless the instructor turns it on in course settings. Settings seem very detached from use case (we just want the ability to change the "students can reply to announcements" default.)

rtoon
Community Contributor

@helfco Glad you were able to get some use out of the python snippet! I threw that together very quickly and know our system well enough that I skipped error handling/checking, but I'm glad you were able to coax it into fitting your setup. On Mac, I'd definitely recommend installing homebrew (https://brew.sh/) if you're about to get roped into more Python scripting for your instance (and given you just fixed a whole bunch of discussions in one fell swoop, I suspect you are!)

hollands
Community Contributor

Hello,

 

I know this is all under revision so perhaps this will be addressed later but I ran into what I believe to be some additional confusing UI with the whole threaded replies/no threaded replies issue. 

In our online courses we disable announcement comments by default. This is how it is appears in the course in which I am an instructor (Attached image). However I still see the disallow threaded replies option on my Announcements when I am creating them. 

I'm sure the actual function is as intended but I'd be lying if it did not give me pause and confusion. Setting aside the UX confusion of "select yes to say no",  I believe it makes sense to remove that option in announcements all together? Please keep in mind this may be a result of some ignorance or naiveté on my part., but it definitely confused me for a few moments. 1.png2.png

dbrace
Community Coach
Community Coach

@hollands raises a good point about something being confusing.  Thank you!

Yes, I understand that there is a difference between comments and threaded replies but they are connected to each other.

In beta I have activated the "Disable comments on announcements" setting.  I then went into a sample course and created a new announcement.  While creating the new announcement, the "Disallow threaded replies" option was available and could checked and un-checked.

01A.png

01B.png

 

02A.png

02B.png

 

03.png

 

While the intended experience is happening (comments are not allowed and threaded replies are disabled), from an author perspective it can be confusing.

When activating the "Disable comments on announcements" setting (whether at the course-level or (sub)account-level) the "Allow Participants to Comment" option does not appear.

This means that, ideally, when comments are not allowed for announcements (whether at the course level or the (sub)account-level), the "Disallow threaded replies" option should also not appear at all.

 

I have reached out to Canvas Support about this in case 11113197.

nwilson7
Community Champion

Is anyone else the ran the API or any other script noticing that the discussions that did actually change (I realize the script may say it updated a discussion board but the board already had the disable threaded unchecked so it really did not make an update) now have the name of the person that ran the script (whomever's token was used) as the most recent person to edit the discussion. 

We now have faculty asking why people are in their courses making changes without their permission and running this script is the only link we have found.

Thanks,

Nick

helfco
Community Participant

@nwilson7  Yes this happened with my situation. My admin name in "edited by..." and it wouldn't go away. It should only show that in the discussions that were fixed. I believe Canvas pushed an update yesterday that addressed some bugs and thankfully it removed my admin name from those logs, but if you ran the script after that update, you might still encounter the issue.

I had to send out responses to concerned instructors,

"Hi Professor,
Canvas made an update in July to the Discussions tool that inadvertently disallowed student threaded replies. This prevented students from replying to each other in affected discussions, which is a critical function for most courses.
It is fully explained in this Canvas article
 
To address this, I programmed a script to automatically scan all Fall courses and fix the issue where necessary. At no point did I manually enter your course; the script used my Canvas admin account to make these changes, which is why my name appears in the edit log.
This fix was thoroughly tested, discussed with the DE Committee, and announced in a Global Announcement on Monday.
I apologize for any concern this may have caused."
 
It didn't satisfy all the instructors, but it was a necessary emergency fix. It's better to have a small scratch on the car than to have the brakes not working.
 

The update brought back the "Assign To" box which is fantastic. Now instructors can see a warning if they try to save edited content and their open/due dates fall outside the semester. Before the screen just sat there and nothing saved. If the teacher left the screen all their work was gone.

 

ken_i_mayer
Community Participant

Well, this is just the cherry on top of a completely ass-backwards product rollout. Updating everything just at the beginning of the semester and telling us in a blog post two days after the fact is just rich. Why did it revoke the settings our designers had made in thousands of courses?

Everything about the Assign To rollout (and fix!) and LUCID rollouts has been so blind to our user experience and our needs.

Now we have hundreds of courses crafted by instructional designers with over a dozen discussions that we have to go back and modify by hand? This is untenable. WTF?

 

dbrace
Community Coach
Community Coach

@TamasBalogh 

@hollands 

 

 

I received the following update to my 11119247 Canvas Support case.

 

=====

On Sun, Sep 1, 2024 at 12:27 PM Instructure Support

Thank you for contacting Canvas Support and for bringing this inconsistency to our attention. I understand from your previous interaction that you noticed an issue in your institution's beta environment where the "Disallow threaded replies" option remained available even when "Disable comments on announcements" was enabled.

I completely empathize with your frustration. It's important for features to work seamlessly together, especially in a beta environment where new functionalities are being tested. You're absolutely right – these settings are interconnected, and disabling comments should logically remove the option for threaded replies.

While the beta environment undergoes frequent updates, we appreciate you taking the time to report this inconsistency. This valuable feedback helps us improve Canvas for everyone.

As you mentioned, the best way to make suggestions for future development is through our Canvas Ideas forum:

https://community.canvaslms.com

Here, you can submit your idea, explain the desired behavior, and even gather further support from the Canvas community.

We encourage you to create a new idea on the forum. Here are some additional tips for your submission:

Title: Be clear and concise about the desired change (e.g., "Remove 'Disallow Threaded Replies' for Announcements with Disabled Comments").
Description: Explain the inconsistency you observed and why you think these settings should be linked.
Benefits: Briefly mention how this change would improve the user experience for instructors.
By sharing your idea, you are contributing to the future development of Canvas and potentially helping other users who might be encountering this same issue.

Our team at Canvas Ideas carefully reviews all submissions to see how they can be implemented. We appreciate your understanding and continued use of Canvas!

=====

So many inconsistencies need to be submitted as a feature idea.

TamasBalogh
Instructure
Instructure
Author

Hi @dbrace@helfco@hollands 

Thank you for pointing out the weird behavior of Disallow Threaded Replies option in announcements where the comments are disabled on a course or account level. No need to raise it as an idea in the forum as it is clearly not an ideal way of working. We've already started to investigate it and working on a design to eliminate the confusion. 

Thanks again!

dbrace
Community Coach
Community Coach

@TamasBalogh, thank you for the update.

Since Discussions Redesign is now Canvas' default, are there plans to update the Discussions Overview (Students) and Discussions Overview (Instructors) videos linked to on the Video Guides webpage?

TamasBalogh
Instructure
Instructure
Author

@dbrace yes, I'm working through all of the Announcements/Discussions guides and request updates where it is needed. 

dbrace
Community Coach
Community Coach

@TamasBalogh, do you have an ETA for when video guides will be updated?  If not in the next week, individual institutions may have to create them themselves because the Canvas Community does not have anything.

helfco
Community Participant

@nwilson7 Sorry this is weeks too late, but if you are still getting concerned instructors contacting you over the "edited by..." issue after you ran the API fix there are a couple options.

Option 1. Change your Canvas display name to "Canvas Admin" You can always change it back after the semester, but at least they won't see some strange name in their discussion.

Option 2 (edited thanks to @JamesG  feedback). Get course number(s) directly from the instructor, masqueraded as the instructor, edit your script so that it only updates the course and not the whole account.

Here is the updated course specific script:

 

 

 

import os
from canvasapi import Canvas
from canvasapi.exceptions import BadRequest

# Canvas API URL 
API_URL = "https://ilearn.laccd.edu" # Replace this with your institution URL
# Canvas API key
API_KEY = os.getenv("IVY_CANVAS_LMS_TOKEN")

if not API_KEY:
    print("Error: API Key not found. Make sure the IVY_CANVAS_LMS_TOKEN environment variable is set.")
    exit(1)

print(f"API_KEY: {API_KEY[:5]}...")  # Only print the first 5 characters for verification

# Course ID
COURSE_ID = 123456  # Replace this with the specific course ID you want to update

# Initialize a new Canvas object
canvas = Canvas(API_URL, API_KEY)

# Fetch the course
try:
    course = canvas.get_course(COURSE_ID)
    print(f"Processing course: {course.name}")
    
    # Get the discussions in the course
    discussions = course.get_discussion_topics()
    for disc in discussions:
        try:
            print(f"Updating discussion: {disc.title}")
            disc.update(discussion_type="threaded")
        except BadRequest as e:
            print(f"Failed to update discussion '{disc.title}': {e}")
            continue

    print(f"All discussions updated for course {course.name}.")

except Exception as e:
    print(f"Error fetching course {COURSE_ID}: {e}")

 

 

 

 

James
Community Champion

@helfco 

Please don't recommend option 2. It's a violation of Canvas' terms of usage to ask someone for an access token in this way. It's also transmitting an access token through an insecure method (email). The instructors are likely to not set the expire date on the token, meaning it exposes a security risk for a long time. It's also very complicated for the instructors to do.

A better way would be to use an admin token and then masquerade as the instructor when you change the setting using the API.

 

TamasBalogh
Instructure
Instructure
Author

Hi all, Please see an update on this matter here. We are going to provide a temporary, self-service button to uncheck the option on a course level.