Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mechanism for hackathon discoverability #112

Open
gonzalocasas opened this issue Mar 5, 2018 · 11 comments
Open

Mechanism for hackathon discoverability #112

gonzalocasas opened this issue Mar 5, 2018 · 11 comments
Assignees

Comments

@gonzalocasas
Copy link
Collaborator

gonzalocasas commented Mar 5, 2018

In the context of the hackathon-in-a-box idea, a core requirement is to have discoverability of at least two main things related to a hackathon:

  • Event details
  • Hackathon projects

Discoverability implies machine-readable formats and standardized access patterns. Dribdat already tracks projects and a significant part of the event details, so this information needs to be exposed, but in a standard way to allow others to implement it without the need to run dribdat. The two parts (Event details and Hackathon projects) have potentially different implementations, and conceptual differences, so I will describe them separately.

Event details

Conceptually, this would be a mechanism similar to schema.org, robots.txt, or micro-format specification, to describe the hackathon's metadata in a machine-readable way and with a focus on machine discoverability as well.

Schema.org has a format for generic events, and some sub-classing for specific event types, but none of them fits exactly a hackathon: http://schema.org/Event.

On the other hand, the simplicity of a root-level file descriptor (i.e. robots.txt, humans.txt, etc) is extremely appealing.

So the proposal would be to define a root-level hackathon.json file containing the following (tentative) metadata about the hackathon:

  • event name
  • event date(s)
  • event location(s)
  • topics
  • sibling events: list of links to other domains containing hackathon.json descriptors to enable event chaining)
  • projects API: link to a json API to access projects presented at the hackathon (the API would be integral part of dribdat, but at the same time, should be a well-defined standard that other platforms can implement. See next section)

The sibling event link list creates a crawlable graph that connects events to each other, fostering discoverability in general, and also establishing a relations between events.

This root-level file descriptor should be placed at the event's main website's root.

Hackathon projects

A second level of detail in the meta-description of an event is its actual content, i.e. the projects presented during the event. For this, Dribdat already hosts all the information required, and the only additional need to be to expose it over a well-defined JSON end-point and format/spec.

As mentioned in the previous section, this end-point would be linked from the root-level file descriptor through the projects API property.


In combination these two metadata end-points would allow an event/hackathon to self-describe itself in a fully decentralized manner while allowing the creation of a graph of events to keep things tied together (for a multitude or reasons: forked events, friend events, topical events, etc).

On top of it, additional tools and services (also decentralized) could be created by crawling and visualizing the event graph in various ways. For instance, this community event calendar could be generated out of this data.

@loleg
Copy link
Collaborator

loleg commented Apr 19, 2018

Note: this is related to some work on an API-first redesign of the platform earlier this year.

@loleg
Copy link
Collaborator

loleg commented Jun 24, 2018

I guess the projects (teams) should be listed under performer category? To be continued..

@gonzalocasas
Copy link
Collaborator Author

@loleg I implemented also parts of the Event Schema thing on the website side of things: https://github.com/open-network-infrastructure/hugo-hackatheme/blob/master/layouts/partials/meta/schema.html
Is there a way we could share the implementation?

@loleg
Copy link
Collaborator

loleg commented Aug 14, 2018

@gonzalocasas that's great! Probably using the separate repo to specify and develop the Event Schema would make sense. See also the schema for Hackathon-Hackers events aggregation, as well as the HackClub directory for examples of what people look for.

@gonzalocasas
Copy link
Collaborator Author

This schema might also be related/interesting https://schema.org/Dataset

@loleg
Copy link
Collaborator

loleg commented Sep 25, 2018

Interesting example of someone going the other route - writing a scraper to aggregate hackathon results: https://github.com/andrew-m-h/HackanationGovhack

@loleg
Copy link
Collaborator

loleg commented Feb 23, 2019

Another interesting example is the civic.json file used by @codeforamerica - which they suggest adding to repos as follows:

Merge this to add a civic.json file to your project. This little bit of metadata will make your project easier to search for at https://www.codeforamerica.org/brigade/projects and elsewhere. You can read more about the status attribute at https://www.codeforamerica.org/brigade/projects/stages.

@loleg
Copy link
Collaborator

loleg commented Jul 8, 2020

Additional inspiration, from earlier discussions: https://spaceapi.io/
Also, we at one point did some work on an OpenAPI spec (Swagger)

@loleg
Copy link
Collaborator

loleg commented Jan 15, 2021

The basic mechanism has been in place for a while, but to close this issue, we need to have a clear and accepted validation. In my mind, this is the "community calendar" mentioned in the top posted, generated from a federated list of dribdat instances.

I would also appreciate seeing at least one "static" hackathon.json involved in such this, not coming out of an app, at some point. Any updates from your side @gonzalocasas are welcome.

@loleg loleg removed their assignment Apr 1, 2021
@loleg loleg added this to To do in dribdat 0.6.0 Sep 29, 2021
@loleg loleg moved this from To do to Done in dribdat 0.6.0 Oct 16, 2021
@loleg loleg moved this from Done to To do in dribdat 0.6.0 Oct 16, 2021
@loleg loleg removed this from To do in dribdat 0.6.0 Oct 16, 2021
@loleg
Copy link
Collaborator

loleg commented Dec 1, 2022

Recent discussions and experiments around #325 make me think: wouldn't it be cool if dribdat instances federated each other automatically, rather than the manual import and export of Data Packages that I have to do now?

@gonzalocasas
Copy link
Collaborator Author

It would be amazing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants