Integrating Discourse with a larger social network app?


(Talin) #1

Hi folks, I’m in the process of evaluating whether we should adopt Discourse for our organization. I’m working with a group at UC Santa Cruz that is developing a social network for cancer researchers, and we’d like to replace our existing forums with something better. At the same time, we’ve got a lot of special needs, and we’re actively researching new ideas for scientific collaboration. I’m not going to give the complete list of requirements, but I want to ask about a few basic things.

One interested in is being able to integrate Discourse with the other applications we have. For example, in our existing applications a “collaboration” object represents a research team that is focused on some project, and new collaborations are formed on a regular basis. Each collaboration should have their own private forum, but some postings would be sent to multiple collaborations.

So the first question I would pose is what kind of Discourse object a collaboration should map to - a category, or something else?

Second question is how to create that object - I was thinking that there might be some kind of RESTful API so that our server could tell Discourse to create it when a new collaboration was created.

Another question has to do with reputation and ranking. In the scientific world, reputation is gained through citations - the more people that reference your paper, the better off you are. So in a scientifically-oriented forum, reputation would be gained via quoting and resharing - that is, it counts the number of times people reference your words. Is something like this feasible?

I see that Discourse already supports embedding of SVGs, which is great - a lot of our researchers share experimental results in the form of SVGs (scatter plots, trend graphs, etc.) We’re also interested in more interactive kinds of embeds - for example, we have a kind of embeddable object that represents a data set, such as the results of clinical trials, and this takes you to a page where you can slice and dice the data in different ways, form hypotheses and try them out by graphing the data in different ways.

In the long run, something we’re very interested in is the creation of curated digests - that is, some sort of tool that would allow someone to grab excepts and quotes from a lot of different threads and create a publishable artifact, a summary of the outcomes of those discussions. And of course, this artifact would retain links to the original discussion, so that it’s easy to determine who originally contributed a particular idea.

It seems to me that this might align with some of your goals as well, since you are interested in creating “civilized discussion” - being able to create an abstract of a conversation seems like it would fit right in.


(Jay Pfaffman) #2

Embedding Discourse into your other apps is pretty easy. See

Discourse does this out of the box. Here’s a snippet from the Emed page. You can click below and it’ll expand, or take you the thread in context.


(Talin) #3

Hey, thanks for the quick reply. I didn’t realize you could quote from other threads, that looks very promising.

I don’t think we actually want to “embed” Discourse into another site - rather, Discourse would be a full, top-level sibling along with a bunch of other separate apps (most of which are written in Meteor/JS with a MongoDB backend), with some minimal amount of integration between them.

I’m thinking of something along these lines:

  • Users can belong to one or more collaborations (or “group” if you prefer).
  • Each collaboration can have multiple topics.
  • Members of a collaboration can view existing topics or create new ones.
  • Topics can be sent to more than one collaboration as well as to private individuals.

So that data model is a bit different than what you were describing.


(Jay Pfaffman) #4

It took me a while to wrap my head around Discourse’s organization and
how to coerce it into something that I could use to teach classes.

Discourse calls groups of topics (top level posts) “categories”.
“groups” are groups of people. Groups can be used to limit permissions
on categories.

Each category can have many topics. No problem.

The permissions system handles this. You can also create categories
where some people can only view (they can reply, but it has to become
a new topic in adifferent category), or only view and reply to topics
in the category.

You’d need to find a creative solution here. Topics exist in only one
category. You can move things between categories. You can also use
tags as an organizer. Users can watch tags. People can invite people
to join or notice a discussion with @username.


(Talin) #5

Thanks for the responses so far, they have been very helpful.

I see that the Discourse API allows the creation of groups. Does it also allow the setting of group membership? Basically what I’d want to do is have all of the membership be managed by my application external to Discourse, and then use API calls to tell Discourse which users are in which groups.


(Dean Taylor) #6

See: