They have not succeeded in forcing me, yet. But it's sad how many computing faculty apparently can't operate the basic online infrastructure needed to support their courses. Not that universities make it easy for us.
And of course the other serious concern I have with Canvas is that they are likely using all the materials faculty upload to train their AI replacements. Many of my colleagues engage in dark humor about this but I haven't noticed much action.
I would guess these plugins are chosen so a majority of user won't want to live without them.
It also seems these plugins "link" to canvas-lms, so keeping the proprietary would be a GPL violation if anyone except Instructure holds part of the copyright to Canvas.
Former Instructure engineer here. Ive been gone almost 10 years at this point, but some of the best engineers I've ever worked with were at INST.
I'm not sure where your stereotype even comes from, because Canvas is not trivial software. You can see for yourself as it's AGPL and I assume you looked at the code before criticizing it because any good engineer would do that.
I don't care how good you think it is, the fact that it (back when I used to be a TA) would break if two TAs tried concurrently grading different parts of an assignment of a student is bonkers. The workaround for that was to use a Google Sheet document so TAs just looked at the submission in Canvas, then filed in their grades and feedback on the sheet. The issue is that Canvas, as far as I could tell, did not support mass uploads from a csv, so we had a script which would read every entry on the csv, map that to the student's ID and grade them, which made it look like the TA which had generated the API key graded all of the students (and would get all the backlash from poor grades).
I completely agree that it is not trivial software in the worst sense, it tries to do too much, while not being particularly good at any one of those things, and is way too rigid for how diverse the needs of different courses might be even inside a single faculty. And saying "It's AGPL, just self host and add your requirements to it" is not really useful, that would mean way more money and effort than what a university's overworked IT dept. is capable of.
This particular section of your comment sounds a helluvalot like some of the SAP implementations I've seen:
> it is not trivial software in the worst sense, it tries to do too much, while not being particularly good at any one of those things, and is way too rigid
What I meant is they aren't capable of building AI capable of replacing professors. I still consider it a reasonable assumption, as it has nothing to do with how well engineered canvas is. It's a different competency than instructure would have, and I've heard from insiders instructure has been spinning their wheels on way more trivial AI challenges. I also understand well how hard it would be to create AI that replaces professors and how the current best AI from Google, Anthropic, OpenAI is orders of magnitude away from being able to do that.
An engineering culture can change a lot in 10 years, and a company's engineers' ability to do stuff depends both on the individual engineers abilities as well as the company systems and culture.
I've been using Canvas for years and it's some of the worst written software I've ever used. It's slow, buggy, with an atrocious 2001-era UI. It's a CRUD app that has no excuse for being so cumbersome. I'm not surprised at all that their security is just as bad as the rest of the product.
A bright undergrad could build a superior replacement in a few months, even without AI.
It is a very common error to look at a specialist piece of software, superficially consider the basic data structure it appears to have and think ‘seems simple enough. Basic CRUD app.’
But it’s rarely the case in practice.
In a sibling comment right here for example someone bemoaned the difficulty in Canvas of having two TAs simultaneously grade separate parts of the same assignment. That sounds like something that goes beyond CRUD.
But more importantly any workflow system, which an LMS will be full of, has to handle the always tricky problem of how changes to workflows affect the things that are currently in the workflow. Assignments posted in course X need to be approved by person Y; some assignments are submitted for approval; person Y goes on leave and now the approval needs to be person Z. Not a simple CRUD problem.
These are things that occur to me with only a moment’s consideration of what an LMS system might need to deal with. The actual domain probably has considerable more complexity that I can’t even imagine.
LMSes have to balance a lot of directly competing needs.
It has to be simple enough for the average person to use (both on the learner side and the instruction side) and have enough complexity to allow for a lot of flexibility in setup because every organization is slightly different. They have to support 50 million file formats and everything has to be backwards compatible until the end of time and everything has to load properly and quickly on 50 million different device/OS/browser combinations. Yes, there's SCORM as a standard, but even that is rickety, and an LMS that doesn't support non SCORM files is dead in the water anyway.
They're simple(ish) in code, and a nightmare in requirements.
Everything you say is true, and yet it's clear you've never used Canvas.
Canvas is decidedly, not fast, fails to display even trivial files (such as source code) as well as more complex files that should just be handled by the browser (such as video), and it has a non-intuitive, verbose, and tiresome interface that would have felt old-fashioned 20 years ago.
Yes, I should have said 'in theory', because there always ends up being compromise and usually that's the thing that's chucked out first.
LMSes frankly run like shit. I don't work with Canvas right now, but every one I've used has run like shit.
However, there are reasons that the complex files aren't handled by the browser: tracking and persistence. It isn't enough to make a video file watchable, it then needs to be tracked in the same system as every other training/educational material and in the same way. If you don't care whether the students actually watch the video, then yeah, throw them a YouTube link or embed a video on a personal site or just have the LMS serve a basic embed. But being able to track video, make it mandatory, make it so that it can't be fast forwarded/people can't skip to the end etc. all matter when LMSes are used for topics that are required for compliance and regulatory purposes.
I don't disagree on the interface(s). Ours is a farce and I hate it.
It's likely that they're so bad precisely because of the simple tech and complex requirements. Simple tech doesn't mean 'easy' or 'not time consuming'. But it means you're looking for developers who have a decent level of technical proficiency (to handle the numerous edge cases and flexibility the systems demand: it's not hard but things like the data structures need to be well thought out and every single piece of the system is integrated with one another in most LMSes so you can't silo work as easily) and who want to work on problems that aren't hard and require dealing with a lot of unreasonable people (in the form of their requirements). You have to allow/design for a lot of stupid things because otherwise people will throw tantrums about it.
Then on top of that, you're developing something that doesn't directly generate profit, so nobody is going to pay for it or appreciate the work you put in.
Then on top of THAT, they're fairly insulated from the actual end users.
I think you are confusing the reality of Canvas with a different, theoretical learning management system.
In reality, Canvas does not have workflow and does not prevent race conditions in grading. I can certainly imagine an LMS that does these things, but Canvas does not.
It would probably help if you had actually used Canvas before trying to convince us that it is non-CRUD.
Sorry, I wasn’t trying to defend Canvas, so much as give general advice that ‘I could build this in a weekend’ is rarely a wise claim. The specific ways in which Canvas could not be built in a weekend do not need to be the ones I identified.
"Look at the code" is not a reasonable response to "Is this app CRUD or not?" You've already been asked to provide specifics about which componenent(s) of Canvas are allegedly non-CRUD, and simply repeating your claim without answering the question does nothing to advance your case.
It's a simple question. Since you claim to be an expert on Canvas, I'm sure that you can point me to the relevant features much faster than I can sort through thousands of lines of code, looking for the one line that says "def not_crud_function()". CRUD or not-CRUD is a judgement about the purpose of a program, not its implementation.
"I don't want to glance through the code, I'd rather you write me a detailed report on all the thousands of places where it deviates from crud" (not a direct quote) is not at all a reasonable ask.
And If you can't be bothered to take 2 minutes to click through some pages on GitHub, I don't believe you'd take the time to even read that report. So no, I'm not doing your research for you.
Edit: I will do this for you though. Here's Gemini's opinion[1]. It's quite accurate as well, and goes into reasonable high-level detail (though doesn't get into specific modules). I especially loved this quote:
> At its absolute lowest level, almost all web software boils down to pushing state to and from a database. But calling Canvas LMS "just a CRUD app" is a bit like calling a commercial airliner "just a metal tube with wings."
How reductionist and a straw man as well. No one here asked for a "detailed report." They asked you to name one (1) feature of an application that you claim to have intimate knowledge of; the original question was "What component in particular goes substantially beyond CRUD." It could take you one sentence. After multiple failures to pass that low bar, compounded by your total mischaracterization of the question and your citation of an obsequious LLM that also failed to provide any specifics, it's abundantly clear that you are unable to support your claim with facts and are not arguing in good faith. I won't waste my time further with your childish behavior.
If they're at the level you say, they just might install some AI gizmo like the Vercel employee was accused of, but really let it run amok with write permissions.
I took a course from him as a graduate student. I was not (and am still not) a theoretician. But I enjoyed the class and Professor Rabin's lectures.
A friend of mine was one of his graduate students and a teaching assistant for the class. He pointed out to me once that Professor Rabin would state many of his points during lecture twice. Once I started listening more carefully, I found this to be true. It was both subtle and pedagogically effective.
English was not his first language, but he enjoyed his struggles with it. I remember him stumbling over the pronunciation of a word during class. Giving up with a smile, he said, "This is a word I know only from books."
I teach computing at the University of Illinois. I'm spending a lot of time thinking about how to adapt my own courses and our degree programs. I'm actually at a workshop about incorporating AI into computing education, so this was a timely post to find this morning.
We don't have a coherent message yet. Currently there's a significant mismatch between what we're teaching and the reality of the computing profession our students are entering. That's already true today. Now imagine 2030, when the students we admit today will start graduating. We're having students spend far too much time practicing classical programming, which is both increasingly unnecessary and impedes the ability to effectively teach other concepts. You learn something about resource allocation from banging out malloc by hand, but not as much as you could if you properly leveraged coding agents.
Degree programs also take time and energy to update, and universities just aren't designed to deal with the speed of the changes we're witnessing. Research about how to incorporate AI in computing education is outdated before the ink is dry. New AI degrees that are now coming online were designed several years ago and don't acknowledge the emergent behavior we've seen over the past year. Given the constraints faculty operate under, it's just hard to keep up. I'm not defending those constraints: We need to do better at adapting for the foreseeable future. Creating the freedom to innovate and experiment within our educational systems is a bigger and more fundamental challenge than people realize, and one that's not getting enough attention. We have a huge task ahead to update both how and what we teach. I'm incorporating coding agents into my introductory course (https://www.cs124.org/ai) and designing a new conversational programming course for non-technical students. And of course I'm using AI to accelerate all of this work.
Emotionally, most of my colleagues seem to be stuck somewhere on the Kübler-Ross progression: denial (coding agents don't work), anger (coding agents are bad), bargaining (but we still need to teach Python, right?), depression (computing education is over). We're scared and confused too: acceptance is hard when you don't know what's happening next. That makes it hard to effectively communicate with our students, even if there's a clear basis for connection. Also keep in mind that many computing faculty don't code, and so lack a first-hand perspective on what's changing. (One of the more popular posts about how to use AI effectively on our faculty Slack was about correcting LaTex formatting for a paper submission. Sigh.)
Here's what I'm telling students. First, if you use AI to complete an assignment that wasn't designed to be completed with AI, you're not going to learn much: not much about the topic, or about how to use AI, since one-shotting homework is not good prompting practice. Second, you have to learn how to use these new tools and workflows. Most of that will need to be done outside of class. Start immediately. Finally, speak up! Pressure from students is the most effective driver of curricular change. Don't expect that the faculty teaching your courses understand what's happening.
Personally I've never been more excited to teach computing. I'm a computing educator: I've always wanted my students to be able to build their castles in the sky. It was so hard before! It's easier now. Cue frisson. That's going to invite all kinds of new people with new ideas into computing, and allow us to focus on the meaningful stuff: coming up with good ideas, improving them through iterative feedback, understanding other problem domains, and caring enough to create great things.
Hi. Current CS undergrad here. I find this claim highly disagreeable:
> You learn something about resource allocation from banging out malloc by hand, but not as much as you could if you properly leveraged coding agents.
I think you are underestimating the effectiveness of "reinventing the wheel" to become an effective engineer through the act of building and discovery. Consider common undergrad CS projects: building a compiler, building a file system, building a text editor, or writing an implementation of malloc. Undergrads find these tasks grueling and conceptually challenging, and learn to improve their understanding of computing concepts and software design patterns by struggling to implement these things by hand. If you explain the concepts to an ugrad and then hand them Claude Code to use for the implementation, you are defanging an otherwise significant obstacle that would have stimulated growth.
Undergrads learn by struggling. My friends and I like to say, bombastically, that the only way to teach an undergrad is to torture them.
I would much prefer to learn programming the classical way, and let my employer empower me with LLM technology once I have demonstrated proficiency in software engineering.
How will the grads pass an lc interview if they don't do classical programming (or do I misunderstand what it means)? But it also raises another questions - what is the future for leetcoding?
I've built several bespoke "apps" that are essentially Claude Code + a folder with files in it. For example, I have Claude Coach, which designs ultimate frisbee workouts for me. We started with a few Markdown files—one with my goals, one with information about my schedule, another with information about the equipment and facilities I have access to, and so on. It would access those files and use them to create my weekly workout plans, which were also saved as files under the same folder.
Over time this has become more sophisticated. I've created custom commands to incorporate training tips from YouTube videos (via YT-DLP and WhisperX) and PDFs of exercise plans or books that I've purchased. I've used or created MCP servers to give it access to data from my smart watch and smart scale. It has a few database-like YAML files for scoring things like exercise weight ranges and historical fitness metrics. At some point we'll probably start publishing the workouts online somewhere where I can view and complete them electronically, although I'm not feeling a big rush on that. I can work on this at my own pace and it's never been anything but fun.
I think there's a whole category of personal apps that are essentially AI + a folder with files in it. They are designed and maintained by you, can be exactly what you want (or at least can prompt), and don't need to be published or shared with anyone else. But to create them you needed to be comfortable at the command line. I actually had a chat with Claude about this, asking if there was a similar workflow for non-CLI types. Claude Cowork seems like it. I'll be curious to see what kinds of things non-technical users get up to with it, at least once it's more widely available.
This resonates a lot. And we’re working on something in the same space: a way to build MCP aps for non technical people. If there are builders here who like experimenting, we’re looking for beta testers: -> https://manifest.build
As a teacher, I agree. There's a ton of covert AI grading taking place on college campuses. Some of it by actual permanent faculty, but I suspect most of it by overworked adjuncts and graduate student teaching assistants. I've seen little reporting on this, so it seems to be largely flying under the radar. For now. But it's definitely happening.
Is using AI to support grading such a bad idea? I think that there are probably ways to use it effectively to make grading more efficient and more fair. I'm sure some people are using good AI-supported grading workflows today, and their students are benefiting. But of course there are plenty of ways to get it wrong, and the fact that we're all pretending that it isn't happening is not facilitating the sharing of best practices.
Of course, contemplating the role of AI grading also requires facing the reality of human grading, which is often not pretty. Particularly the relationship between delay and utility in providing students with grading feedback. Rapid feedback enables learning and change, while once feedback is delayed too long, its utility falls to near zero. I suspect this curve actually goes to zero much more quickly than most people think. If AI can help educators get feedback returned to students more quickly, that may be a significant win, even if the feedback isn't quite as good. And reducing grading burden also opens up opportunities for students to directly respond to the critical feedback through resubmission, which is rare today on anything that is human-graded.
And of course, a lot of times university students get the worst of both worlds: feedback that is both unhelpful and delayed. I've been enrolling in English courses at my institution—which are free to me as a faculty member. I turned in a 4-page paper for the one I'm enrolled in now in mid-October. I received a few sentences of written feedback over a month later, and only two days before our next writing assignment was due. I feel lucky to have already learned how to write, somehow. And I hope that my fellow students in the course who are actual undergraduates are getting more useful feedback from the instructor. But in this case, AI would have provided better feedback, and much more quickly.
Immediate feedback from a good autograder provides a much more interactive learning experience for students. They are able to face and correct their mistakes in real time until they arrive at a correct solution. That's a real learning opportunity.
The value of educational feedback drops rapidly as time passes. If a student receives immediate feedback and the opportunity to try again, they are much more likely to continue attempting to solve the problem. Autograders can support both; humans, neither. It typically takes hours or days to manually grade code just once. By that point students are unlikely to pay much attention to the feedback, and the considerable expense of human grading makes it unlikely that they are able to try again. That's just evaluation.
And the idea that instructors of computer science courses are in a position to provide "expert feedback" is very questionable. Most CS faculty don't create or maintain software. Grading is usually done by either research-focused Ph.D. students or undergraduates with barely more experience than the students they are evaluating.
We've been doing this at Illinois for 10 years now. Here's the website with a description of the facility: https://cbtf.illinois.edu/. My colleagues have also published multiple papers on the testing center—operations, policies, results, and so on.
It's a complete game changer for assessment—anything, really, but basic programming skills in particular. At this point I wouldn't teach without it.
And the proud Illinois tradition of some mission-critical service crashing on the first day of class continues.
In this case, it is an external service. However, I also suspect that the Duo outage is probably shielding other on-campus services from load surges that would probably be causing them to get crashy.
I guess I don't know how we could ever prevent such incidents. Given that the first day of classes is a well-kept secret /s.
Note that admissions rates for female applicants are higher across all categories—international, out-of-state, and in-state. Obviously you can't fully tell what's going on here without more of an understanding of the strengths of the different pools, but a 10–30% spread (for in-state) suggests that gender is being directly considered.
IANAL, but I'm also concerned about the degree to which this decision affects the use of other factors during college admissions. Fundamentally admissions is a complex balance between prior performance and future potential, and only admitting based on prior performance means that we're stuck perpetuating existing societal inequities.
I do know that 25 years ago or so there considerable weight given to gender in sciences and engineering. I do feel like all talk of it has disappeared, and wasn't sure if it was because it was no longer a factor or because race became the dominant talking point.
From the data you present I suspect that there is weight still given to gender. I wonder how much energy there would be to investigating this? I wonder how many guys who get rejected from MIT CS will now do Tik Toks about how a girl took his spot, since he can no longer say it was a black kid?
And of course the other serious concern I have with Canvas is that they are likely using all the materials faculty upload to train their AI replacements. Many of my colleagues engage in dark humor about this but I haven't noticed much action.