Skip to content

Commit 0bb7d80

Browse files
committed
Add vision and style guide documents.
1 parent c664c74 commit 0bb7d80

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed

style-guide.md

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Style guide
2+
3+
## Identifiers
4+
5+
Objects can have an `id` field.
6+
It is named `id` in the object it identifies,
7+
and `objectId` when referring to another `object` from somewhere else.
8+
IDs must be unique for the competition they show up in.
9+
It's okay for IDs to be the same across competitions, however.
10+
11+
## Typed names
12+
13+
Field names should indicate their format for non trivial types. For example:
14+
- `xTime` - specific point in time
15+
- `xDate` - date in the `YYYY-MM-DD` format
16+
17+
## Humanly readable and writeable
18+
19+
Everything should be humanly read- and writeable as far as possible.

vision.md

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Vision
2+
3+
The vision behind creating the WCIF specification.
4+
5+
## Motivation
6+
7+
There has always been tools used to help organizers prepare the various aspects of organizing a competition,
8+
but as those were separate, it was hard for them to talk to one another
9+
(which lead to various export files in different formats).
10+
In order to support the idea of relatively small tools cooperating with each other
11+
and allow them to talk the same language, the idea of a standardized data format has been coined.
12+
13+
The underlying spirit is the [Unix Philosophy](https://en.wikipedia.org/wiki/Unix_philosophy)
14+
emphasizing building small, focused software trying to solve one problem, and solve it well
15+
(as opposed to monolithic systems).
16+
17+
## Example applications
18+
19+
#### Nametag generation
20+
21+
A tool generating nametags for all the competitors requires at least the following information:
22+
- competitor name
23+
- competitors WCA ID
24+
- competitor task assignments (e.g. in which group they participate)
25+
26+
#### Scorecard generation
27+
28+
A tool generating scorecards for the given round requires at lest the following information:
29+
- competitor name
30+
- competitor ID (for data entry)
31+
- round cutoff and time limit (to display it on the scorecard)
32+
- expected number of attempts
33+
34+
Furthermore, there is a need to generate scorecards for subsequent rounds of an event.
35+
Without a proper way of exchanging results data, this forces authors of data entry platforms
36+
to implement scorecards (a task which is somewhat orthogonal to data entry itself).
37+
With a standardized data format that includes all the information about who advanced to the later rounds of an event,
38+
there can be a single piece of software handling the entirety of scorecard generation.
39+
40+
#### Group assignment
41+
42+
A tool assigning groups to people (i.e. competing as well as other tasks)
43+
requires or may benefit from the following information:
44+
- competitor personal bests (to split people into groups based on their skills)
45+
- competitor roles (to handle organizers, delegates, staff in a special manner)
46+
- competitor WCA ID (to handle newcomers in a special manner)
47+
- competitor birthdate (to handle youngsters in a special manner)
48+
- schedule data (to avoid assigning multiple tasks at the same time and also optimize assignments based on time)
49+
- round results, advancement information (to assign groups for subsequent rounds)
50+
51+
#### Scramble generation
52+
53+
A tool generating scrambles for a competition requires at lest the following information:
54+
- the number of events an rounds
55+
- the number of scramble sets to generate for each round
56+
57+
## Falsehoods programmers believe about WCA competitions
58+
59+
> A competition occurs in one time zone and all competitors register for the same venue of a competition.
60+
61+
**False!** Some competitions have multiple venues, such as FMC simultaneous competitions (FMC USA, FMC Europe).
62+
63+
> Ok, but surely a given venue of a competition can be identified by a latitude and a longitude?
64+
65+
**Mostly false!** [Euro 2016](https://euro2016.cubing.net/venue) had a side room that was a noticeable walk from the main venue.
66+
67+
> At a given point in time, a competition has at most one event occurring at once.
68+
69+
**False!** US Nationals has had 6 stages spread across multiple rooms and buildings, with up to 5 events occurring simultaneously.
70+
71+
> One round of a competition occurs on one calendar day.
72+
73+
**False!** The 3 attempts of a 3x3x3 Fewest Moves round are usually split across multiple days. The same is true for 3x3x3 Multi-Blind.
74+
75+
> Ok, but FMC and MBLD are weird. Surely a given round of 3x3x3 will at least all occur on one calendar day?
76+
77+
**False!** US Nationals runs a staff competition on Thursday before the regular competitors do their first rounds on Friday or Saturday.
78+
79+
> A competitor will receive all his scrambles for a round from one group.
80+
81+
**False!** Many competitions have a "rolling group" system where competitors get called up in groups, but the next group might get called up while you're still competing, which means you'll roll into the next group.
82+
83+
> Ok, that's annoying, but at least for planning purposes, we can assign competitors to 1 group for a given round, and if they roll into the next group, then that's ok.
84+
85+
**False!** Remember FMC and MBLD from before? You may be scheduled to compete in group A of MBLD Round 1 Attempt 1, but group B of MBLD Round 1 Attempt 2.
86+
87+
> 3x3x3 Final Round will have >= 3 competitors in it.
88+
89+
**False!** See the results of [Korean Spring Picnic 2017](https://www.worldcubeassociation.org/competitions/KoreanSpringPicnic2017/results/all?event=333).

0 commit comments

Comments
 (0)