Piazza Moving to Paid Model—Opportunity for Discourse

Some of you that work in education have probably seen that Piazza is moving to a paid model starting next month.

As an educator and a huge fan of Discourse, I hope that the developers see this as a big opportunity for Discourse to move into the education space. I guess I see three ways of supporting this:

  • Providing great instructions for instructors or IT staff who want to set up self-hosted Discourse instances. (Hosting on-site addresses many FERPA issues.) Really idiot proof stuff. Remember: many of these people do not usually set up anything, which is what attracted them to Piazza in the first place. Perhaps there would also be a way for Discourse to charge for remote support for these installations?
  • Some kind of paid educational-forward package. There are probably a common set of plugins that you could provide that would recreate some Piazza-like features which might help ease the transition. You’ll need to meet FERPA requirements.
  • Better multisite support, since a department may want to set up one Discourse installation to support multiple courses.

You’d also need to examine the pricing models. Piazza is pretty rough for department-only licenses, since my understanding is that the only cover students in that department. So non-majors taking departmental courses are not covered. This is kind of an obvious and frankly pretty clumsy money grab—many departments teach courses to mixed populations, and the optics of providing a course forum that is only free to your own students are pretty bad. But, for example, a departmental license for up to 3000 students is $12K per year. Compare that with the $3600 for the enterprise Discourse plan which, I suspect, if properly configured with multisite, could easily support the same population.

Anyway—I’m already a very happy Discourse user, and so the whole Piazza mess is kind of pass the popcorn time for me :slight_smile:. But I’ll be rooting for Discourse to make some headway in this space! Overall as a forum you’re already a decade ahead of Piazza, but I’m assuming that they’ll start actually updating the site now that they have a revenue stream.

But I’m curious to hear what other instructors think. What are the conversations at your institution surrounding this change looking like?


It would be great to see more educational institutions use Discourse for online discussions!

One thing to note is that on our hosting, the Business plan is $3600/year ($300/month.) Our pricing is not based on the number of users on the site. Instead, it is based on pageviews, storage, and plugins. It is likely that a Business plan would be sufficient for 3000 students. Our Enterprise hosting costs more than that - the price depends on the site’s requirements. Details about our hosting plans are here: Discourse pricing | Discourse - Civilized Discussion.

Discourse is open source software though, so it can be installed on your own server free of charge.


Why would this be necessary? Discourse now has Category-specific moderators. Give each department its own categor(y/ies) as appropriate, and allow the profs moderator permissions in the appropriate departmental categories…


Out of interest what can Piazza do that Discourse can’t, functionally?


I make my living supporting Discourse and am a former educator and teacher educator (I was a professor in a college of education). I’m frequently astounded at what–and how much–it is that many companies convince schools to pay for. Best I can tell these folks must spend an insane amount of money marketing, as their products and support are usually not very good.

And speaking of FERPA, I’m further astounded at how often my wife gets “your child <insert FERPA violation about library books, IEPs, suspension, etc>” emails because some institutions hasn’t an email address.

You don’t need multisite, just a means to configure groups and categories, preferably by integration with some existing authentication system–connecting to that is the hard part, especially since many school tech folks are unable or unwilling to help make that happen. Perhaps that’s why you think multisite is the solution–you just give each teacher the power–and responsibility–of managing who their users are. That might still make sense if the school uses, say, Google auth, then the teacher can just approve who joins.

But I digress.

What are those?


Don’t underestimate how big of a barrier this is in education. I had to jump up and down and bang my fists hard to get a few servers for my class—which has 1000 students. I’ve talked to other faculty at top-tier CS institutions. Many have departments that force them to run things on AWS. Others have critical course infrastructure running on old laptops in closets near their office. The struggle here is real. So I’m lucky to even have a machine to run Discourse on!

A few things. I think. Keep in mind that (1) I avoid Piazza whenever possible and (2) I’m not 100% up-to-date on the newest Discourse features and plugin capabilities. But here’s my sense of where the gaps are.

Piazza has better support for different types of anonymity: for example, just to other students, not to instructors. It also allows you to set this on a per-post basis. My IT staff described Discourse’s support, comparatively, as clunky. I have to agree. It takes students a long time to figure out how to use, and when they do they tend to disappear entirely for long periods of time into anonymous mode. For example, we had a really helpful student this semester who answered a gazillion questions as anonymous246. I’d like to call them out for an award, but I don’t know who they are. (Yes, I’m aware I can find out.) But I think more flexible anonymity would be a big improvement.

IIRC there is also a way for students to post directly to all staff but hidden from other students. This a good way to ask questions that require revealing information that shouldn’t be shared with other students, like code snippets. I’ve asked for this feature here previously in the from of “post only” permissions for categories, but the response was “we have it, it’s messages”. Unfortunately messages just don’t integrate into the UI the same way as topics, but I’m not sure this will bother others as much as it does me.

Piazza also has this place where instructors and students “collaboratively” edit a group post. I’ve never heard anyone pine after that feature. I’m assuming some people do want it, however. Maybe Discourse has this already? I don’t find it desirable and so haven’t looked previously. IMO this is a Piazza bug, not a feature. Very few questions in my class have a right answer, and I want to encourage discussion that may or may not arrive at the right answer. We use the Solved Plugin as a version of this and it works well.

Yeah, FERPAnoia is real. Pretty rampant at my institution. Self-hosting is a great way to work around this. Past that point I don’t know what you’d need to provide for external hosting options. Different institutions also seem to have different groups of lawyers that interpret FERPA with varying degrees of FERPAnoia.

I guess I don’t know how the per-category admin system works.

Yeah, agreed. But is this necessary? Why not just use Discourse’s built-in authentication? That’s the Piazza model.

My institution has Google Apps integration which allows us to use Google Login flows, rather than Shibboleth. That said, I have seen a Shibboleth plugin advertised here but haven’t tried it yet.


The last institution where I worked wouldn’t let me have a server anywhere, which is why I ended up with my Discourse instance at Digital Ocean (or maybe it was AWS free tier).

I don’t understand when it is that people want to be anonymous. It also seems like a huge accountability issue.

I think that it makes sense that it be an entirely different flow, so that it’s obvious who is participating in the conversation. Your example of someone contributing anonymously seems like an example of why you don’t want to make it easy to conflate what’s public, private, or anonymous.

Like a wiki?

Because getting yet another account and username and password is a pain.

That makes things pretty easy. I’ve helped some institution configure Shibboleth. It wasn’t easy, but it needs to be done only once.

I can imagine coming up with some kind of service that had some special support for education at a few hundred bucks a year–but you can get hosting at Communiteq (formerly DiscourseHosting) for $20/month. And as you point out, hosting with CDCK is a bargain compared to what Piazza charges.

1 Like

Some students are nervous asking questions on a large public forum. This is real thing. Anonymous posting helps with this. And anonymous to classmates allows the course staff to still see identities when providing help.


Out of interest, what does it mean to be anonymous?

For example, I run one site where users are encouraged to use anonymous usernames and not provide personally identifying information.

So implementing peer anonymity is out of the box - just don’t use your real name?

Obviously they have to supply a verifiable email but that’s not exposed to other users in any case.

Perhaps what Piazza is doing is exposing varying levels of Personally Identifiable Information (PII) to different trust levels within the app depending on the preference of the individual? That’s plugin territory for a start …


Yeah, that sounds very cool.

I would like identities tied to actual school accounts. This is something that Piazza does not require, but I believe it’s essentially a FERPA workaround—since otherwise Piazza would be able to recreate the course roster, which is a no-no. So even though most students seem to sign up for Piazza using their official school email and identity (maybe because of the anonymity features), at least where I teach they can choose to use a burner email.

Trust levels are also another place where some intentional configuration would be required to support educational use. What works out naturally is that students start to acquire more advanced privileges, which can get weird. A few will inevitably end up spending a lot of time on the site, and work their way up to high trust levels if you let them. My solution is to put a hard trust boundary between (IIRC) 2 and 3, with staff all starting at 3.


That makes no sense. Every LMS knows what the course rosters are.


A lot of educational institutions have Google Workspace and use Google Currents for online discussions. If Discourse could somehow compel those educational institutions to switch, that’d be great!

Google Classroom is another hurdle that Discourse would have to face. If Discourse could somehow replicate the integration with Google services, that would be even better! Discourse needs to have the functionality to simply create, distribute, and grade assignments, along with things for students such as an integrated to-do list and a number of other features too.

From there, just have the same integration for equivalent tools from Microsoft and Apple. :sweat_smile:

Regardless, I have faith in Discourse as a tool for educational institutions. It would help to spark discussions (which are a big part of high school and the like) that aren’t awkward.


My sense is that LMSs are usually hosted on campus. This makes a big difference. Either that or they have all been “blessed” by FERPA, which is a thing but not one that I understand. (Some kind of laying on of hands? Scented oils? One wonders…)

As an anecdote: I’ve been attacked by colleagues for using GitHub Classroom where each repository identifies each student using a email.txt file at the root. Because, I guess, were GitHub to violate all of their TOS regarding access to private repositories, they could recover the course roster by slurping through hundreds of repositories. Really. (This semester I moved to unique IDs, but I’m sure they’ll find something else to worry about.) It also boggles the mind that apparently FERPA is so open to interpretation that a product (GitHub Classroom) which is clearly intended for educational use and in active use by institutions all over the place is still considered (by our lawyers) to be a FERPA risk. Sigh.

1 Like

My sense is that they are nearly never hosted on campus.

I’m sure that the same places who send my wife intimate details about students who attend there also have rules in place to keep people from being able to do actual work for rules such as that.

Yeah, my wife’s university has decided that all courses need to have all materials be disability-compliant, which isn’t the case, and means that she just doesn’t use any video, or even images if she can avoid it. They attacked the nursing school for not including alt-tags describing images when the point of the image was the see if someone could interpret the X-ray.

And a friend who’s a lawyer went to work for a university in the South where veryone believed that it was “illegal” for the university to buy alcohol, which just results in elaborate shenanigans to get around it. He checked. No. Not a law, just something that some accountant made up once.

I say that the class roster thing is pure nonsense, and that’s part of why I’m happy not to be working for a university anymore.


Yeah, fair enough. I have no idea where the actual servers are. Or what FERPA considers to be a third party.

My institution and department are pretty nervous about this. Many other institutions won’t be. But, just preparation for outlier handling.


I think there’s a big opportunity here, though it seems like you’d need to think through what multi-course means. (Is it multiple instances, just categories, something else?)

Discourse Solved + Wiki posts + defaults tweaking could get you pretty close to a Piazza-like experience without a ton of effort. Discourse already has SSO via SAML and OAuth which covers most of the educational providers. For something like LMS integrations, LTI plugins do exist, though I haven’t yet used one.

As far as the legal issues: Self-Hosting is a nice option, whether that’s truly on prem or in some public cloud. But for FERPA, you’d really just need a company willing to sign contracts with an educational institution. Once a school signs a contract, they get to decide what data flows to the app – but for the most part the contract is what alleviates the hoops around PII. But honestly, I don’t see discourse as any more complex than another class discussion tool.


I think multi course is just categories and groups. It’s not that hard.

If be happy to provide some kind of offering but have no idea how to market it.


That’s one model. But I also think that there are plenty of courses that will want full control—and to have an entire forum that is just for them. They may also want to configure things differently, use different plugins, and have their own policies regarding moderation.

I’m also not sure how things like search would work in the course as category model. Finding results from courses other than the one that you’re taking would be quite confusing. But I guess if category permissions were set up properly this would work out fine. You’d probably need some automation there.

Another missing feature here and something that might complicate the course as category model is the need to periodically reboot the forum every semester. This is probably not normal Discourse forum usage. One approach is literally just to reboot the entire forum and start over. However, there are certain areas where it’s nice to have continuity. For example, we have a course staff private category and I’d hate to lose our old conversations there. But you also don’t usually want students coming into to a forum that is full of posts about last semester.

What we do is set up a brand new tree of semester-specific categories each semester and set up privileges for student accounts so that they can only see the stuff for their semester. Alumni can continue to see content from their semester, and staff can see pretty much everything including staff-only categories. This works fine for us, but requires a fairly ugly cron job script to synchronize everything as course membership changes. (Which happens on an hour-by-hour basis, particularly early in the semester.)


Sure, that’s why I started using Discourse. That’s not something they faculty have written any lms. What do you think a faculty member would want to pay for that, per semester, say?

The proper solution for that at an institutional level is to have the thing that manages enrollment make api calls as class rosters change. That’s hard, though, as it requires competent and supportive tech staff, which too few schools have.

At the class level, you just do it by hand.

My solution to the “new semester problem” is as you describe, a new category and group for each course section. I used a read only category for course content that was used across semesters. Most lms do a horrible job at this - it’s a ton of work to ready a course for a new semester.

Most of the things you describe are easy to find solutions for, but difficult to find general solutions for.

And typically the customer for software used by schools is not the user, but people who often don’t understand what the problems of the faculty or students are.


I mean, ideally, nothing :slight_smile:. But a few bucks a month, maybe? The pricing for Discourse hosting is pretty reasonable.

One problem here is that my sense is that many instructors (including me) essentially have no budget for independent course technology purchases. I can spend money on staff, and on personal technology (new laptops). But I have no budget for technology purchases just for my class. This makes little to no sense, but it’s not necessarily uncommon. So, even if I want something that costs (say) $5 / month, that ends up coming out of personal funds, not course funds.

Actually a better solution is probably to use the Discourse SSO API to do the group assignment on login. At least here that’s completely doable and would be pretty slick.

One problem we’ve had with using the Discourse API for this is that the calls required to perform the synchronization are slow, particularly once you’re doing 10K of them. Rate limiting to the point that this process doesn’t hit the built-in limits and also doesn’t cause the forum start throwing 500s for users means that our completely user sync takes around an hour. That’s fine, since it’s just for my course—but if you started doing this for an entire department it would be unacceptably slow. (FWIW there may be some kind of bulk synchronization interface I’m not using, and it’s possible that I’m not doing the right thing on the sync client to avoid some of these calls.)

+1 here.