freeCodeCamp/chapter

What are some of your ideas on building an alternative to Meetup.com?

pixelyunicorn opened this issue Β· 77 comments

Continuing the conversation from Discord!

I feel like we should start by copying meetup's functionality (that are most familiar to organizers and attendees), then add features from there!

I agree. Do we have any Meetup power users onboard? Maybe a list of features for starters.

May not be a v1 requirement, but something that would be useful for discoverability would be a tag-like system where I can say "I'm interested in X, Y, and Z" and Organizers can say "We typically cover X, Y, and Z topics" Something like Github's Topics perhaps

what the mvp looks like to me:

  • authentication.
  • create/edit/list organizations.
  • create/edit/list events.
  • being able to register for an event.
  • list people who registered for an event.

What @QuincyLarson said just saying it in my words: Seeing what alternatives have done best and kinda mimic it into this would make it great.

We're building https://confy.app

Its an alternative for meetup.com with the following stack:

  • React
  • Relay
  • ReactNative
  • Node
  • GraphQL
  • MongoDB
  • GoogleCloud

We would love to make it open source and partner with freeCodeCamp community and offer free meetups.

@pixelyunicorn

I feel like we should start by copying meetup's functionality (that are most familiar to organizers and attendees), then add features from there!

I agree - we should start by stripping their features down to the bare essentials.

adding to @keyserfaty's list, we should implement the queue/waitlist for highly demanded events :)

Also:

  1. allow people to cancel RSVP
  2. ability to contact members:
    a. all of them
    b. those going to the event

Also:

  1. allow people to cancel RSVP

Agree

  1. ability to contact members:
    a. all of them
    b. those going to the event

Sounds like v2 to me

maybe cancel RSVP could go into a V1, it is (soft)deleting the record, contact members is definitely a v2

another thing that could go to a v2 is a meetup.com compatible API for those apps that use meetup as a data source.

(similar to those services that have an S3-compatible API for integration purposes)

https://discordapp.com/channels/633401573002969128/633401573002969132/633416435019939874

Not saying an API is in the MVP, but Greenville, SC we have a simple event API tool to syndicate the Meetup.com and Eventbrite.com meetup event data to show a full tech calendar on hackgreenville.com and allow others to build apps using the open data.

Moving off Meetup.com will basically break our tool until we have a way to scrap or hit an endpoint to get the same data. So, from our own "what will break when people move" perspective, a lack of an API, or at least rich snippets that can be scraped, will break some existing community tools developed by Code For Greenville.

OK everyone - here is my bare bones description of what this tool needs to be able to do. We've already built some of this out here: https://study-group-directory.freecodecamp.org

As a future participant

I arrive at the home page.

-> System will show a search box with "[ Where do you want to attend an event? ]"

I can start typing a city, state, or country name, and it will autocomplete.

-> System will show upcoming events in/around that location.

I can click on one of the event names.

-> The system will show the "show view" for that event's group, with details about the upcoming event, along with a button to RSVP.

I can click the "RSVP" button.

-> The system will prompt me to sign in. It will send me an email with a ticket and add me to the public list of event attendees.

-> The day before the event, the system will email me again with a ticket and reminder.

-> After the event, I will automatically get emails notifying me of subsequent events.

As an organizer

I can create a group.

I can edit details about the group, including a Slack/Discord/Facebook/WeChat/WhatsApp link participants can join to discuss and coordinate events.

I can create events, and set their location and capacity.

I can cancel events.

I can email the entire list of participants.

I can ban a participant whom I believe is toxic or who has previously broken the code of conduct.

I can add a venue sponsor to the event with a link to their website as a way of thanking them for hosting.

I can add a food sponsor to the event with a link to their website as a way of thanking them for food.

@allella that's cool. don't think you'll be able to replace meetup with this tool right away. sounds like an important feature but definitely not the first thing we should tackle. but sounds great for v2.

Great idea to have the homepage dynamically surface events tailored to IP address.

Great idea to have the homepage dynamically surface events tailored to IP address.

That would not work for people behind VPN. I would just prefer decent search engine based on typed location.

I guess I should ask if the v1, or even v2, is intended to host non-FCC groups, or if this is for the FCC universe?

@allella I guess any group, even non-coding related.
@vunderkind Great idea for a v2 or v1.x πŸ˜„

nhsz commented

Some features we need as organizers because some venues ask for this info (meetup currently has these, fields aren't required though)

  • an attendee list, i'd be nice to have the option to export/download it (pdf?)
  • attendes id personal numbers (e.g.: passport number) for security reasons, so custom we need required fields for each event

Could also be v2, but organizers often will link to an organization landing page and specific event instances. Having public URLs would shortcut the "enter city", "find your group" steps if someone already knows why they are there. Also, having some structured markup, like event rich snippets, on the org and event landing pages would offer at least some basic API alternative until such time as an API could be built.

I'd be motivated to assist with the event markup and API development since I volunteer to support tools that need a way to get at the event data through a script.

@nhsz Yep I see those in a v2 probably

Thinking about a tech stack...

Moved to #2

I'm sure all cities have different needs, but here's an idea of what we consider a "tech meetup" in Greenville, along with an API behind that holds info about all our organizations in the area, the organizers, where they post events, API endpoint keys for the event service they use.

Might be a nice v2, v3 feature to allow each city to have a similar list of all the organizations by certain tags or categories. Basically, I'd be glad to replace our homegrown orgs and events data and APIs with a service that all cities could enjoy.

Org API
Events API

Hey, I've built a good chunk of this already. Happy to chat about what I have. The intention is to release it as OSS and would like to collaborate on efforts

EventoL is the platform that uses the Python Community in Argentina to managing their events
E.g.: PyConAr 2019

Mobilizon from Framasoft is a french solution that aims to replace Facebook Events and MeetUp applications by a ethic, free and open-source solution (which could be self-hosted in the future).
The project has already collected more than 50000 € for the development. UX designers are already working on it, please consider this solution before recreate something else.

Great idea to have the homepage dynamically surface events tailored to IP address.

That would not work for people behind VPN. I would just prefer decent search engine based on typed location.

I think it just be first location based, through the Browser location API and in case of negative response, based on typed location

Are we going to have a central document holding all the features we've agreed on, and what are the next steps/structure for building this?

Pardon me if these questions are naive. First time collaborating on an open-source project, ever.

How about using GitHub as a meetup platform?

https://mobile.twitter.com/dev__adi/status/1183873754679537666

How about using GitHub as a meetup platform?

Not really what it was made for.

It should be a section of freeCodeCamp or an independent platform?
Random ideas:

  1. Maybe "Free Meet" or something similar could be a good name for it.
  2. Maybe it should be made with the stack that people can learn in freeCodeCamp (React, Express, Mongo), so all the students can contribute to the project :)

I guess I should ask if the v1, or even v2, is intended to host non-FCC groups, or if this is for the FCC universe?

This will be a self-hosted web app that any organization (Rotary Club, Women Who Code, Sierra Club) could use to coordinate their events. Ideally it will be a one-click server deployment and will run in a docker container. And an admin will be able to configure a few settings and have all the data stored on their own database.

Are we going to have a central document holding all the features we've agreed on, and what are the next steps/structure for building this?

Pardon me if these questions are naive. First time collaborating on an open-source project, ever.

Good question. I'm working on a Readme. We can use that as our central planning document, and GitHub issues to discuss design ideas, implementation details, and answer questions.

It should be a section of freeCodeCamp or an independent platform?

This will be a self-hosted tool that any organization can use - ideally without needing to fork this repo.

  1. Maybe "Free Meet" or something similar could be a good name for it.

We can figure out a name later. I usually prefer names that do a good job of describing what the tool does (Bingo Card Generator is a good example of this.)

this is not for the MVP but maybe in the future add a new role like 'Venue' and the organizer can post a solicitation for venues and the venus offer to them their Venue...

I think a good model would be self-hosted for meetup owners, but then also a centralized aggregator so that as a user I can go to one site to find any local groups that choose to be aggregated.

Sites opt-in to be listed, and when new events are posted they send the title, subtitle, time and location data, and teaser image to the main site.

A big question about user accounts: per site or global?

Per site could be annoying, but global means it can be tracked and sites are not able to operate independently. I guess I’d lean towards per site on this.

Having a mobile app version is also important.

The stated README direction is to roll a new solution.

I thought to aggregate the links shared in the Discord channel and Ycombinator thread about open source and commercial alternatives. These could act as a point of reference to tickle the brain for core/v1 features and future features.

Open Source

Existing FCC Project

Commercial

Ideas Posted Publicly in the Discord between the start of the project and 4AM EST on Oct 15th.

All usernames below are Discord names and may not match Github names.

  • @pratikch | idea would be to start small events happening around you based on categories. Allow organizers to publish
  • @vundie | My off-the-cuff ideas for handling the Meetup problem is to draw up a list of the most pressing problems Meetup solved + an adjacent list of things Meetup could have solved, have an open process for prioritizing them, then building a quick version of that ASAP.
  • @pratikch | My biggest problem is following different conference schedules and CFPs, if we think of incorporating solution for that here I think the portal could survive.
  • @pixely | we should start by copying meetup's familiar functionality and add features from there
  • @JacksonBates | One idea I had was an ActivityPub implementation to allow the alternative to live in the fediverse (like Mastodon, peer tube etc). This would allow easy and cheap self hosting, with the benefits of federation
  • @jmarchello | Tag-like system where I can say "I'm interested in X, Y, and Z" and Organizers can say "We typically cover X, Y, and Z topics" Something like Github's Topics perhaps
  • @rahat | Definitely think as we build ideas that we should focus on it being as simple as possible to use
  • @alvarezskinner | In my opinion what would be cool is to have all this linked to the profiles of the people in the platform. The event manager t bit would be similar to the meet-up app somehow but we can make it a bit more specific for freecodecamp or coding meet-ups? Linking with the forum, being able to keep up with whom is attending, what is their progress on the curriculum, profile, posts in the forum,
  • @fuzz | I'd like to see is some kind of colabrative meetup feature between groups

Hey, just copying what I wrote on Discord here. Delete / merge me if you think that's a really bad idea ;) :

I think we're facing a major problem: each effort that relies on some centralized infrastructure will lead towards the next meetup.com again. So while you for sure can improve things, come up with a splendid UX, put everything on Github you'll still end up having to pay server fees for your central application instance.

If you start to build a "hub" like system (e.g. like Mastodon, maybe even with P2P features) you'll end up explaining newbies how to get it installed and running. It's great, since no one could stop it but I think you'll still need some "central" instance to e.g. discover meetups in your area. And you for sure will need some kind of "RSVP" mechanism.

Now, what we've been wrapping our heads around for some time (and we'd LOVE to see it coming) is to build this as a Đapp, most likely on Ethereum. In our current model each event is built as smart contract, initiated by the event host. With more economy logic you could hand over, join or close events, you could even charge for them on an individual basis. The process of joining events is either a "token exchange" (each event could have its own token) or a simple persistent attendee list.

We've developed that idea during the last EthBerlinZwei Hackathon and it's called ĐOor (https://github.com/cod1ng-earth/dOor). Since it's a Đapp, it's only working correctly when opened inside an Eth wallet aware browser (metamask, Brave). We built that event system just to enable our hackathon idea: opening an events' "door" by signing a shared secret (looking for zk engineers here :D) by an attendee. The code is hackathon grade ;) https://devpost.com/software/door

Pros:

  • unstoppable.
  • ultimately open
  • ultimately secure (ehem, if you do it right :D )
  • enables event fees immediately (but doesn't enforce them in any way)
  • bring your own frontend
  • no central backend needed at all

Cons:

  • event discovery might be hard to solve
  • it's living in a ledger ecosystem (which I consider fantastic)
  • It's not that simple to write Solidity code in a secure way
  • To add a persistent action ("RSVP") users must pay a Gas fee.

To remedy the last point: the concept of a Gas Station Network helps to pay gas fees by event hosts upfront. If you never heard about the Eth infrastructure you can think of gas as a roughly comparable concept as "hosting fees".

A good feature will be to have QR code generation for Lunch, Goodies coupons. That way we can reduce use of paper coupons and vouchers. Those can be generated as QR codes sent to participant's email ids and can be scanned at venue using Chapter's app.

Not only that reduce the cost for organizers, but also make it easier for participants.

An important feature for me is being able to save the event directly into my calendar (on mobile). But I guess that might be v2. I'm happy to help with the development. 😊

I agree with @espipj

As a participant, I want to subscribe to a calendar of a) the events I'm attending b) all of the events in a group and c) all of the events in a geographical location

Maybe with some other variations/filters applied too. We could make some sort of API endpoint that returns a calendar format.

I would like to help with the dev part of this platform if possible =) the frontend part.

Another feature that from the organiser POV is quite important IMHO is the ability to add custom fields for the "customer" to fill in when obtaining a ticket/signing up for an event.

When I first heard the news, I immediately began creating a image in my mind of what I thought a nice MeetUp replacement would look like. I thought I'd share the overall feel of the product I envisioned. I realize it is more radical than what seems to be proposed, but maybe there are some interesting insights to glean.

My ideal event organizer:

  • absurdly minimal, yet functional
  • no account required (power users can still create ones)
  • attendance tracking
  • statistics dashboard (views, engagement, RSVPs, no-shows, etc)
  • sms event updates
  • hosted for free
  • supports web3 style accounts + NFTs (but should in no way affect the regular experience)

TLDR: There should be a way to host an event and have people RSVP w/o anyone needing an account

I think, marking attendance using QR code would be an useful feature. Helps to ensure that only the invited people are being allowed and would be faster than manual checking from a printed paper as I have seen till now.

waded commented

In the area of @allella and @localjo's comments about event syndication sites and APIs, I suggest part of API should be vCalendar feed of all the organization's upcoming/past events. vCalendar has good compatibility with existing calendar import/sync tools, e.g. a WordPress plugin that can display a calendar that aggregates one or more vCalendars, or a Google Calendar used to do the same.

(I would suggest that a way for participants to see all events from a particular organizer in a calendar app is different scenario... not necessarily best-served by vCalendar API, although that's sometimes how it's done.)

Related, I think it would be helpful to very clearly define the "organizer" persona... is it A) a person, perhaps with a few compatriots, that hosts a chapter site, leads/attends all events listed on that site, is responsible for future events, at the cost of hosting that instance of chapter, as part of the group's own website... OR, is it B) a person running a community events site (e.g. someone in the chamber of commerce at a small city, marketing the city by exposing as many events as possible on events.name-of-small-city.com) in redundancy with As but also providing a service to organizers who don't want to, or don't think to, host such a site.

Ideally chapter could serve both personas well, but I think it's helpful to decide which is which. I think meetup.com did not segment these well and only really serves A, not B. (meetup.com's regional search/notification features serve its own business interests, C.)

It looks like this has already all the features you're looking for, including federation https://joinmobilizon.org/en/

I think it would be beneficial to add a tag id column to the events table and add tags table, so we can add filters for specific tags. For example, if I'm interested in attending meetups for JavaScript, eSports, and hiking, I want to be able to filter all events for these specific tags and return those results.

Bringing some things in from Discord:

Some method of discovering new groups would be super valuable. One way of achieving this could be pods pushing events to a centralized location via some sort of feed. Each pod could also replicate events/groups across all pods - I'm not very familiar with decentralized architectures so I'm not sure how feasible these are.

A big pro of Meetup from the perspective of an event organizer is being able to setup an event in a few clicks without needing hosting or a domain - but I really like the idea of a decentralized approach. One possibility is having an officially and perhaps even commercially supported "official" instance that anyone can add events to. For example, Solid is decentralized but has a commercially maintained deployment. Then a marketing/landing page could provide a link to the official site along with instructions on how to setup your own deployment if you so choose.

Please excuse any grammatical mistakes, I'm on mobile πŸ˜›

I guess I should ask if the v1, or even v2, is intended to host non-FCC groups, or if this is for the FCC universe?

This will be a self-hosted web app that any organization (Rotary Club, Women Who Code, Sierra Club) could use to coordinate their events. Ideally it will be a one-click server deployment and will run in a docker container. And an admin will be able to configure a few settings and have all the data stored on their own database.

This won't be accessible to the regular consumer. Additionally, this will result in millions of splintered communities with no centralized site to search for all events.

If you're worried about hosting costs, I recommend a kickstarter and imploring the community to give back. If worst comes to worst, I'd be wiling to host.

For my past study group meetings and even for Toastmaster meetings we like to update "Minutes an/or Notes" for everything that happened for those that missed the event.

It would be nice to do a simple Timeline feature for this.

image

Might look like a Developer Story feature from Stackoverflow or a IM dialogue that clickable and more interactive than bullet-point notes.

@QuincyLarson
Not sure if this is in the right place but --
One suggestion I have for a participant is to supply a map of some kind that shows markers of nearby events that meet a certain criteria (filters for distance, event type, chapter name/type, etc). Not sure if this was implied by the user stories you have right now. The freecodecamp example referenced https://study-group-directory.freecodecamp.org/ shows just the search bar and available locations and I think that's a good start. I would imagine including a map with clickable markers and filters can provide for a better user experience.

I'm noticing some missing info around community safety and accessibility themes such as ...

  • As an event attendee, I can specify my pronouns.
  • As an organizer, I can bootstrap my community with a code of conduct.
  • As an event attendee, I can notify an organizer about a code of conduct violation.
  • As an organizer, I can receive code of conduct reports.

Not sure if these all make sense to live here but the above captures some tooling I know I wish I had ... what other things on the topic(s) of accessibility and community safety do you all think should be captured?

We could also do things like have on an event "Do not publish attendees", because one thing I learned from Facebook was that my parents would find out about events I said I was going to, but did not want my parents to find out about. This could be done on both the attendee and the event side.

@davidlaffan loving that idea of having a very clear data usage policy hah. Or just a way to say "never share my email". I will admit as an organizer I do find sharing emails with the organizer good for communication though, also if you opt to mover your community else where you kinda need that info. Else you loose all that time and effort you put into building the community ... but yes a granular, easy to understand data privacy/usage policy would be super good.

@lorenanicole Ah no, I just mean not to display it visibly that you were going to the public

Random comment/question -

  • There were some early posts in the Discord about paying for/running the service. Some of the general thought was that anyone who was already paying a subscription fee to Meetup could probably pay for running their own server at ~$20/month.
  • That being said, would it make sense to allow for API hookins for donations to a specific Chapter instance by the kind of event/content they're running? For example if it's an event for artists or design people, a hookin to Patreon? Or other types of donation options like Stripe or similar?

@lorenanicole *that you were going publicly. Apologies it's 23:00 right now

Love your suggestions @lorenanicole!

Are we assuming accessibility (a11y) is obvious, or should we point it out explicitly?
Let me start:

  • the app should pass the WCAG contrast test
  • it should be possible to navigate through the app using only a keyboard
  • it all boils down to the fact the app should comply with all the WCAG 2.1 AAA criteria

this should be in v1 itself😐

As an organizer

I can reschedule/postpone events.

I helped build Kickback (https://kickback.events/), an Ethereum-based platform which aims to reduce event no-shows. Essentially speaking, each attendee commits a small amount of money (e.g. $10) when they RSVP. If they turn up they get their money back. If they don't show up their money gets split amongst those who did. The money handling is secure, transparent and automated via a smart contract running on Ethereum.

(Most recently we did 13 small events at the Devcon5 conference in Osaka and got an overall average turn-up rate of ~80% on Kickback).

If we're building an alternative to meetup.com how about integrating with platforms like Kickback and/or incorporating such features?

(You can even use our smart contracts directly: https://github.com/wearekickback/contracts).

Hey hiddentao! Met your colleague at EthBerlinZwei and chatted ~1h. Keep up the great work, Kickback rocks! Let me just be slightly two faced here: adopting Dapps is not simple anyway - if you alone need gas to create state changing tx, "real" money will be always involved. If you on top have to "pay" something upfront (even if guarantees are that you get it back (minus gas?) ), I think that'll have a negative impact as well. Nevertheless I think that Kickback already demonstrates today what will be one of the best concepts tomorrow!

@elmariachi111 You're absolutely right about the gas cost. This is something the Eth community at large needs to solve. Hopefully in the near future this will not a blocker for dapps.

Brainstorms:

  • accessibility
    • I think accessibility needs to be build in from the start.
    • I'm thinking ... vision impaired, dyslexic fonts options (?)
    • What else .. ?
  • learning for team members
    • Maybe a channel where contributors can ask technical questions &/or post tutorials on libraries/technologies being implemented.
  • dynamic working culture
    • A conversation, thread somewhere (maybe on discord) for chats about the working culture, so that new ideas can be incorporated.

@maiya-22
Accessibility was thumbs'ed up by Quincy and is part of the first post in #5

The #implementation-details-discussions on Discord is pretty close to the second idea, at least for now.

@maiya-22 also, accessibility was mentioned by these folks if you want to get a conversation issue going on that, or in an existing issue if it makes sense.

List of those who identified as interested in accessibility in earlier comments.

I'd love to help on accessibility stuff, thanks for the @! I am also on Discord as ryandudek

Should we offer some functionalities listed below ( I might be totally wrong ):

  • Inter-chat functionality between the single collective's user

  • Separate feedback section where user can easily react instead of typing lot of stuff which can encourage other users to join collective

  • Section to upload event's slides (i.e. making a part like speaker deck ) so that the collective attendees can get all the things what they want from a single platform!

  • Allow organisers to add extra beverages which will be provided at the event!

  • Social media integration

  • Directly sharable media gallery across collectives and social media platforms

I would very much like for this to use ActivityStreams, so that all the instances of Chapter can federate with each other and possibly even federate with other ActivityStreams implementations such as Mastodon and PixelFed.

If it doesn't start with an API, one will never be implemented without a full rewrite.
If an API is added later, it will never be complete or correct.
If you define an API and then implement the UI/UX so that it works some other way than calling the API, then neither the UI or the API will be correct or safe.
If a feature can't be defined as a set of API calls, it's not defined enough to implement well.
If a unrelated third party can't write a complete and working but different UI/UX on top of the APIs, then the entire project will never get traction.

@MarkAtwood there are very early conversations about interoperability between Collective instances in #36 and the API folks are mainly talking at #17 and pull requests like #46, so now is the chance to steer those conversations and/or point people to open-source things that already pave the way.

Haven't seen this suggested yet, but some conversation in a local Slack group pointed out how useful it would be to have "collaboration" or "partner" groups. E.g. organizers could:

  • see each others' planned (but not published) events
  • coordinate schedule / resource conflicts within the platform
  • share resources

This could be both for managing multiple Chapters within a single organization (i.e. myself and 2 coworkers currently run independent meetups, all paid for by the company), or across organizations (i.e. I'd like to not have my events the same night as a couple nearby groups that many of my members also attend).

@brianrichins it's a useful feature for sure and aligns somewhat with the proposed vision. We have a view of meetup "day of the month" for Greenville, SC to help organizers not plan a new meetup on a saturated day.

Whether this is the responsibility of Chapter, or an app that ties into Chapters, can be determined as the product evolves.

@brianrichins This would be a great feature to have for future releases.

I could see this kind of coordination to be really helpful - especially for the example you gave, where different nearby chapters would want stagger their events so as not to draw one another's audiences.

I don't think internal planning tools are high enough priority for our rougher MVP, though.

I have enjoyed reading the discussions here. So many exciting ideas and directions we could go in. I am going to close this thread in favor of concentrating discussion over on #47