# developers-conferences-agenda: how a Markdown list tracks conference dates and CFP deadlines

> developers-conferences-agenda keeps a community-maintained calendar of developer conferences and Calls for Papers, republished as two JSON feeds. It works well for a human choosing a date and works badly for a program that needs clean fields, because every CFP deadline is stored as a badge label rather than a value.

**scraly/developers-conferences-agenda** — developers.events is a community-driven platform listing developer/tech conferences and Calls for Papers (CFPs) worldwide with a list, a calendar and a map view. It helps organizers, speakers, sponsors & attendees.

- Repository: https://github.com/scraly/developers-conferences-agenda
- Website: https://developers.events/
- Stars: 2,008 · Forks: 520
- Language: JavaScript
- License: MIT
- Published: 2026-10-14 · Updated: 2026-10-14 · Language: en
- Canonical page: https://hysenlabs.com/projects/scraly-developers-conferences-agenda

## An empty-week calendar for conference organizers

Pick a date for a new developer conference and the first obstacle is not the venue, it is the clash. KCD SF Bay Area 2026, KCD x Ceph x Openinfra Day Korea 2026 and API World 2026 all start on 1 September 2026, and six neighbouring entries run through 3 September. Establishing that by hand means reading a dozen organizer blogs and two community sites.

The audience named for the platform is organizers, speakers, sponsors and attendees, and each one reads the same list differently. An organizer scans a month to see whether a slot is free before signing a venue. A speaker wants the call for papers that has not closed yet. An attendee mostly wants to know what is happening in September without visiting ten separate sites.

Entries are grouped by year, then by month, then by date, so the working part of the file is a heading followed by one bullet per event carrying a date range, a link and a city. Earlier years move out of the way into `archives/`, one Markdown file per year from 2017 through 2026, which keeps the live file short enough to scroll and leaves the history searchable as plain text.

## CFP deadlines live inside badge image text, not fields

How Calls for Papers are handled is the most interesting decision in this repository, and the one a skim would miss. A deadline is not a field anywhere. It is a badge image appended to the bullet, and the date is encoded in that image request as a message parameter, `until%2030-April-2026` or `until%2028-February-2026`.

```markdown
* 1-3: [CloudX 2026](https://cloudxconf.com/) - California (USA) <a href="https://sessionize.com/cloudx-2026"><img alt="CFP CloudX 2026" src="https://img.shields.io/static/v1?label=CFP&message=until%2030-April-2026&color=red"></a>
* 2: [AWS Community Day Italy 2026](https://awscommunityday.it) - Rome (Italy) <a href="https://www.papercall.io/aws-community-day-italy-2026"><img alt="CFP AWS Community Day Italy 2026" src="https://img.shields.io/static/v1?label=CFP&message=until%2022-August-2026&color=red"></a> <a href="https://awscommunityday.it"><img alt="Sponsoring" src="https://img.shields.io/badge/sponsoring-8A2BE2"></a>
* 3-4: [OWASP New Zealand Day](https://appsec.org.nz/conference/) - Auckland (New Zealand) <a href="https://www.papercall.io/owaspnz26"><img alt="CFP OWASP New Zealand Day" src="https://img.shields.io/static/v1?label=CFP&message=until%2030-June-2026&color=red"></a>
```

Three hosts supply those links. Most point at sessionize, several at papercall.io, and Flutter & Friends points at a shared Airtable form instead. Not every event carries a badge at all: seL4 Summit, JavaZone, gRPConf North America and Commit Your Code Conference appear with no CFP link, so a program reading this file cannot tell a missing deadline from one nobody has added yet. Recovering a date means reversing an encoded label, which is a poor substitute for a field.

## Two JSON feeds while the repository keeps four data shapes

The documented way to consume this is two files. Conferences come from `all-events.json`, open calls come from `all-cfps.json`, and both are said to carry past and coming events on the same domain as the site.

That contract is narrower than what the repository actually maintains. Next to the README sit `meetups.md`, `METADATA.csv` and `TAGS.csv`, and the root carries `runAttendees.sh` and `runTags.sh` beside `run.sh`, so meetups and tags are kept as their own data with their own generators. No meetup feed and no tag feed appear among the published endpoints, which means two of the four data shapes have no documented way out.

What is missing underneath is a schema. No field names, no record count and no update rule are given, and nothing says whether an entry is edited when a date moves or removed when a conference is called off. Two endpoints with no contract behind them is workable for a browser and thin for a program.

## package.json is private with a single test dependency

There is no install step here, and the manifest explains why. `package.json` is four lines long:

```json
{
  "private": true,
  "devDependencies": {
    "@cucumber/cucumber": "^11.0.0"
  }
}
```

`private` is set to true, so npm refuses to publish from this manifest, and the only dependency, `@cucumber/cucumber` at `^11.0.0`, is test tooling for the specs directory rather than a library anybody can call. There is no scripts block, so no build command, no dev server and no generation step is documented in the README.

That leaves a gap against what the project promises. The site is described as serving a list, a calendar and a map view, and three root directories, `page/`, `scripts/` and `tools/`, are where that would live. The README says nothing about what they contain, so a reader who wants to run the site locally has to read source instead of following a procedure.

## The README never names the three CSV files beside it

Start at the root and the README stops being the whole story. The entries that explain the pipeline are these:

```text
CFP.csv
METADATA.csv
TAGS.csv
CONTRIBUTING.md
README.md
meetups.md
package.json
run.sh
runTags.sh
runAttendees.sh
test-workflow.sh
specs/
page/
scripts/
tools/
```

Three CSV files sit next to a Markdown agenda, so two representations of the same conferences exist in one repository. Nothing states whether a pull request edits `CFP.csv` and the bullet together or whether one file is generated from the other, and the README never mentions the CSV files by name. Anyone writing tooling has to read the source under `scripts/` to learn which side wins a disagreement.

`MDVALIDATOR-ANALYSIS.md` is the other entry worth pausing on: a report whose name points at Markdown validation, sitting next to a `specs/` directory that the Cucumber dependency exists to run. Two licence files appear at the root too, `LICENSE-CODE` and `LICENSE-CONTENT`, and the project licence is MIT, so an organisation reusing the listings has to read both files instead of assuming one grant covers conference data and tooling alike.

## Contribution is a pull request against one Markdown file

Adding an event is a GitHub workflow, and the file that defines it is not the README. `CONTRIBUTING.md` holds the rules, and the documented action is to open a Pull Request, which turns a scheduling decision into a reviewable diff of a single bullet. `hacktoberfest` sits among the repository topics, so part of the yearly inflow is contribution-driven rather than curated.

The checks that guard the file are visible only as names. `test-workflow.sh` is the entry point a pull request runs, and `runTags.sh` and `runAttendees.sh` exist as separate generators, yet none of them is documented with arguments anywhere in the README. The last push to `main` was on 2026-10-06, later than every date in the September 2026 section, so that month was still being touched after it had passed.

This is where the model costs something: correctness depends on strangers filing pull requests, and there is no documented fallback for an event listed with a wrong date, listed twice, or listed after it was called off. Nothing but a correction PR fixes any of those, and an archive file for 2026 already exists while the README still carries that September block, with no statement about when the move happens.

## Badge links beat the feeds for one CFP search

For a single deadline, the badge link is the better route and the project itself points at it. Each href is a sessionize page, a papercall.io page or an Airtable form owned by the conference, which is the authoritative home for that deadline and carries its own structured fields. The difference in approach is plain: a provider page is a live query against a platform's own database, while this list is a curated copy filed by pull request and reconciled by hand.

Curated wins on reach and loses on guarantees. One repository spans several hosts, ten years of archives, and a map and calendar you cannot rebuild from the entries alone. What a script cannot get is a schema, a per-record update time, or any signal that a cancelled conference was dropped; `meetups.md` and `TAGS.csv` have no published feed at all. For an organizer comparing dates by eye that is a fair trade. For a service reselling the data it is not, and both JSON endpoints have to be inspected field by field before anything is built on them.

## Conclusion

Take this repository seriously if you are planning a developer conference and need to know which weeks are already taken, or if you want one browsable list spanning several CFP hosts. Treat it as a reading tool, not a data source for software: nothing is packaged for npm, no schema is published, and meetups and tags have no documented feed. Before building anything on all-events.json or all-cfps.json, open both files and check the fields, the record count and whether a cancelled conference ever gets removed.

## FAQ

### How do I get the conference and CFP data out of developers-conferences-agenda?

Two public files hold it: all-events.json for the conferences and all-cfps.json for the calls for papers, both served on developers.events and both said to include past and coming events. No schema and no record count are published for either file.

### How do I add my conference to developers-conferences-agenda?

Follow CONTRIBUTING.md and open a Pull Request against the repository. Entries live in README.md under a year heading and a month heading, and earlier years are moved into archives/ as one Markdown file per year.

### Can I install developers-conferences-agenda from npm?

No. package.json is marked private and lists only @cucumber/cucumber ^11.0.0 as a devDependency, so nothing is published to install. Use the site at developers.events or the two JSON feeds instead.

### Where do the CFP deadlines in developers-conferences-agenda come from?

They are encoded in badge image links appended to each entry, and those links point at sessionize, papercall.io or an Airtable form. Some events, seL4 Summit and JavaZone among them, carry no CFP badge at all.

### Which licence covers the conference data in developers-conferences-agenda?

The project licence is MIT, and the repository carries two licence files at its root, LICENSE-CODE and LICENSE-CONTENT. Read both before reusing the listings.

## Sources

- [License: MIT](https://github.com/scraly/developers-conferences-agenda/blob/main/LICENSE)
- [Project website](https://developers.events/)
- [README](https://github.com/scraly/developers-conferences-agenda/blob/main/README.md)
- [Releases](https://github.com/scraly/developers-conferences-agenda/releases)
- [scraly/developers-conferences-agenda on GitHub](https://github.com/scraly/developers-conferences-agenda)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/scraly-developers-conferences-agenda
