Media-Public / mediapublic-server

MediaPublic Website Platform
GNU General Public License v3.0
1 stars 4 forks source link

Adapt Midas for station use #1

Open melodykramer opened 9 years ago

thequbit commented 9 years ago

[ warning negative Nancy incoming ]

Midas is written in Django ... and is way big ... like way big. Integrating it into media-public could be difficult, as they are different web frameworks ( mediapublic is slotted to be written in pyramid, and Midas is written in Django. Although both python, they are VERY different frameworks ).

If we want to deploy an instance of Midas as a dub-domain to media public, and use the Midas tool as a place where all of our 'Help' stuff lives, I would be for that. Just note that there would be little to no integration between the two tools ( unless Midas has the hooks already in place to dynamically update content via REST API ).

My vote would be, for version 1.0 of our tool here, to do one of the the following:

Generally, unless a tool is a library intended to be integrated with other code, big projects like Midas are intended to stand alone, not alongside/inside/outside of another tool ( media-public in this case ). I'm sitting down with those two co-ops on the 15th to get a better idea of what Midas is, and how it is setup, so hopefully I won't be so in the dark at that point, ha.

@GabeIsman do you Django? Have you had a look at the Midas stuff yet? Any insights as to how easy/hard it would be to do what we're talking about here?

GabeIsman commented 9 years ago

@thequbit The integration story for these two apps is definitely unclear, and won't be super clear until I get a better handle on what's going on with Midas. Midas is actually written in Node with a framework called Sails (after 'Rails' I believe). I've worked with Node plenty, but only messed around with Sails. What I'm hoping, and I haven't actually dug too far into the Midas codebase yet, is that Midas is written with a reasonable client/api distinction. If that's not the case, it's probably one of the first things I will tackle with them.

Assuming a decent client/api separation I think a reasonable implementation strategy would be to write some sort of javascript client plugin which is configurable/skinnable. This approach would enable us to run the Midas API alongside the Media Public app (or even set up a public Midas instance usable by whatever clients might want to have their own client), and just include the plugin in the Media Public client code (or even dynamically generate the client code/skin based on which station's tasks are being presented). This setup would be flexible enough to slot into lots of other potential use cases.

I should write up a high-level design doc for this system. The integration story should become clearer as we learn more about how we're going to proceed. I think we can assume for now that one of two things is true: Midas will be an api with a pluggable client, or midas will be running on a separate subdomain and we will just link to it.

thequbit commented 9 years ago

/me definitely looked at a different project called Midas that was written in Django and is 100% not the Midas we are talking about here

Well if it is Node, then hopefully that's a bit better story. If we can just hook into it to "hold the data" kind of thing, then yea, that would be pretty slick/simple.

Good to hear that you're on the right track to figure out which of the two solutions you outlined we'll go with ( api with pluggable client, or sub-domain ).

Keep us updated as you learn more!

melodykramer commented 9 years ago

Oh good @thequbit!

@GabeIsman, I like the idea of MIDAS being an API with a pluggable client and this is why:

I can see MIDAS eventually being something that stations could put on their story pages or website. Like a javascript embed. i.e. you might see a way to become more involved in the station at the bottom of a story page on their site.

I don't have any thought about whether it is good to start from scratch or to integrate the existing open source platform from 18F. But I'm going to articulate what the /help portion of the site should accomplish, and why:

For users who work at the organization:

  1. Need way to easily post tasks that the public can help with. (Ex: "We are starting a series on veterans and need to find veterans in Detroit, We need 5 people to sign up to help with this event, We want people to help us archive X, we're looking for someone to code Y.")
  2. Need a way to skin or mask MIDAS so that it looks like their organization. (Perhaps we do this.)
  3. (non-public view) Need a way to see who has signed up to help with the tasks, contact information, ways to rate those users (stars?) and ways to possibly assign them badges or membership for completing the task well. This is important because stations would not be able to handle these
  4. Needs a way to be able to extract the information on users and enter it into a CRM.
  5. Needs a way to be able to email or contact users through program.
  6. Needs a way to log in.

For the public:

  1. Needs a way to be able to see tasks. (I like the way existing Midas does this
  2. Needs a way to sign up to help with tasks.
  3. Needs a way to log in.
  4. Needs a way to put tasks into calendar.
  5. Needs a way to be able to share task with friends.
melodykramer commented 9 years ago

I showed the existing Midas site to several station GM / membership leads yesterday and took notes. This is what they said:

  1. "This would be amazing and I'd want people to be able to see it on my website."
  2. "How would it work with our existing CRM? Is there a way to extract user data so we can put them into our volunteer database?"
  3. "We'd love to be able to say "You completed the task. Now you receive membership" directly from the program.
  4. "How would tasks expire?"
  5. "I want this. I want this. I want this."

@GabeIsman @thequbit @ismcodes @nkkl @scripting

thequbit commented 9 years ago

@melodykramer: I am okay with recreating the core functionality of Midas into our site so that we have one unified "monolithic" site that "does all the things that we want to, and we have control over all the things so that we aren't at the mercy of another project changing all their things so all our things are broken". But that, of course, could be more work that just using a Midas install. Now, if Midas isn't as extendible as we want it to be ... it's a question of how much time do we put into it, and will their up-stream accept our patches ( it may not be the direction they want to go with their project ). Based on this page: https://midas-dev.18f.us/tasks/8 ... I think we could re-create that pretty easily.

My thoughts on your thoughts:

For users who work at the organization:

  1. ... Ex: "We are starting a series on veterans and need to find veterans in Detroit." ...

This is pretty much exactly what we want to use Yellr for. Where folks could contribute to a story anonymously if they didn't feel safe/comfortable/etc. putting their name on it. There are all kinds of hooks in Yellr to validate a person ( ie. send them a message and then meet in person - all communication is anonymous ). I'd love to have the conversation after we hit our MVP goals on pulling Yellr into this conversation.

  1. Need a way to skin or mask MIDAS so that it looks like their organization. (Perhaps we do this.)

This Gets tricky. We could make it one of those "Pick on of 5 themes, then pick two colors, finally upload your station logo" ... or we could actually style 900+ station pages ourselves. I'm leaning toured the former ( or some variation of it ).

  1. (non-public view) Need a way to see who has signed up to help with the tasks, contact information, ways to rate those users (stars?) and ways to possibly assign them badges or membership for completing the task well. This is important because stations would not be able to handle these

I think openbadges + a star system would be awesome. That mixed in with the "Public Media Rock Star of the Week" blog posts about folks who have helped bring a task to completion.

  1. Needs a way to be able to extract the information on users and enter it into a CRM.

Every CRM is going to be different. We can provide a CSV download and they can work off that.

  1. Needs a way to be able to share task with friends.

What do you mean by this? Share like, social media share? Or like "we, together, are not working on this project - sharing the work load" ?

For the public:

  1. Needs a way to put tasks into calendar.

Do we want to support a calendar on our site? Or have the ability to download to google calendar and/or outlook? I believe both are pretty straight forward to implement.

  1. Needs a way to be able to share task with friends.

Again, just to be clear, you mean on social media/email/etc. here?

My thoughts on your showing the Midas site:

  1. "We'd love to be able to say "You completed the task. Now you receive membership" directly from the program.

We should not ( in my opinion ), in the MVP nor in the "final" product, be handling money or monetary agreements. I don't have enough insight into how each station does membership, so I won't speculate too much here ... but I would imagine that us sending the user to a URL where they fill out information, or we auto-generate an email that gets sent to the "right person" at the station to "grant" the user that completed the task membership, that would be a solid start. Thoughts @melodykramer ?

  1. "How would tasks expire?"

I really hadn't thought about that ... but I guess it makes sense. We could have an email blast of "these tasks with the skills that you have are going to expire in 24 hours, can you help?" kind of thing. But I would suspect that tasks would just disappear from the site if they expire.

  1. "I want this. I want this. I want this."

eeeek! me too! I can't freaking wait!

melodykramer commented 9 years ago

re Yellr:

Yellr could be one of the ways of contributing. i.e. "We're looking for veterans. Sign into Yellr and let us know XXX. (This way, a station has all of the ways they're reaching out to the public in one place.)

re: monolithic site - what do you think of this?

"I can see MIDAS eventually being something that stations could put on their story pages or website. Like a javascript embed. i.e. you might see a way to become more involved in the station at the bottom of a story page on their site."

re share:

yes, way to share out to friends. (And sharing a task might be worth points / badging.)

re membership:

agreed, this wouldn't involve money, and would be more like what you have described re: email to person (though that could become overwhelming so being able to do that within the site might be preferable.) i.e. "So and so completed the task, now grant them membership..." but obviously phrased nicer.

Agree with everything else you've outlined.

nkkl commented 9 years ago

I'm listening but I'm too far behind on this to have useful input.

@nkkl 323.205.6533 On Jul 12, 2015 5:11 PM, "Melody Kramer" notifications@github.com wrote:

re Yellr:

Yellr could be one of the ways of contributing. i.e. "We're looking for veterans. Sign into Yellr and let us know XXX. (This way, a station has all of the ways they're reaching out to the public in one place.)

re: monolithic site - what do you think of this?

"I can see MIDAS eventually being something that stations could put on their story pages or website. Like a javascript embed. i.e. you might see a way to become more involved in the station at the bottom of a story page on their site."

re share:

yes, way to share out to friends. (And sharing a task might be worth points / badging.)

re membership:

agreed, this wouldn't involve money, and would be more like what you have described re: email to person (though that could become overwhelming so being able to do that within the site might be preferable.) i.e. "So and so completed the task, now grant them membership..." but obviously phrased nicer.

Agree with everything else you've outlined.

— Reply to this email directly or view it on GitHub https://github.com/Media-Public/mediapublic-server/issues/1#issuecomment-120775368 .

melodykramer commented 9 years ago

@nkkl I can catch you up. I apologize for the misses. Was trying to wrangle public media conferences + marriage :) :+1:

nkkl commented 9 years ago

No worries. I am also, like, traveling for work and working constantly.

@nkkl 323.205.6533

On Sun, Jul 12, 2015 at 5:40 PM, Melody Kramer notifications@github.com wrote:

@nkkl https://github.com/nkkl I can catch you up. I apologize for the misses. Was trying to wrangle public media conferences + marriage :) [image: :+1:]

— Reply to this email directly or view it on GitHub https://github.com/Media-Public/mediapublic-server/issues/1#issuecomment-120776556 .

thequbit commented 9 years ago

Eek! No one is allowed to feel out of the loop! I'll make a wiki page with the "if you only have 5 minutes and want to know the status of our project, read this!" page.

@melodykramer might want tour input after I make it.

Will send via email and gitter once I post it.