Skip to content

Commit 0af1904

Browse files
authored
chore: add Governance procedures (#108)
* chore: add Governance procedures * chore: add German Committee member * chore: update CONTRIBUTING.md to the new flow * chore: update README.md * chore: uniform the Country specific section part in the Standard
1 parent 9996103 commit 0af1904

7 files changed

Lines changed: 220 additions & 65 deletions

File tree

CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/docs/en/ @publiccodeyml/steering-committee
2+
/governance/ @publiccodeyml/steering-committee

CONTRIBUTING.md

Lines changed: 70 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,98 @@
1-
# Contributing to this standard
1+
# Contributing to this Standard
22

3-
🙇‍♀️ Thank you for contributing!
3+
Thank you for your interest in contributing! 🙇
44

5-
We – the maintainers and contributors of this project – understand that a standard like this can only be set in collaboration with as many public technologists, policy makers and interested folk as possible. Thus we appreciate your input, enjoy feedback and welcome improvements to this project and are very open to collaboration.
5+
We – the maintainers and contributors of this project – understand that a Standard
6+
like this can only be set in collaboration with as many public technologists,
7+
policymakers and interested folks as possible. Thus, we appreciate your input, enjoy
8+
feedback and welcome improvements to this project and are very open to collaboration.
69

710
We love issues and pull requests from everyone.
811

9-
## Problems, suggestions and questions in Issues
10-
11-
Please help development by reporting problems, suggesting changes and asking questions. To do this, you can [create a GitHub Issue](https://help.github.com/articles/creating-an-issue/) for this project in the [GitHub Issues for publiccode.yml](https://github.com/italia/publiccode.yml/issues).
12+
## I want to help develop the standard
1213

14+
Please help development by reporting problems, suggesting changes and asking questions.
1315
You don't need to change any of our code or documentation to be a contributor!
1416

15-
## Documentation and code in Pull Requests
17+
Anyone is welcome to participate!
1618

17-
If you want to add to the documentation or code of one of our projects you should make a Pull Request.
19+
The best ways to do so are:
20+
* [Participate in discussions](https://github.com/publiccodeyml/publiccode.yml/discussions)
21+
* Once you know your contribution is ready, [open a pull request](https://github.com/publiccodeyml/publiccode.yml/pulls)
1822

19-
If you never used GitHub, get up to speed with [Understanding the GitHub Flow](https://guides.github.com/introduction/flow/) or follow one of the great free interactive courses in the [GitHub learning lab](https://lab.github.com/) on working with GitHub and working with MarkDown, the syntax this project's documentation is in.
23+
## I am a Free Software developer
2024

21-
This project is [licenced CC-0](LICENSE), which essentially means that the project, along with your contributions is in the Public Domain in whatever jusrisdiction possible, and everyone can do whatever they want with it.
25+
Help us bring new Free Software into governments!
26+
You can add a `publiccode.yml` file in your repositories, ask other projects to do it,
27+
or, even better, help us create tools.
2228

23-
### 1. Make your changes
29+
Don't be afraid to start new ones and
30+
[show them to the community](https://github.com/publiccodeyml/publiccode.yml/discussions/categories/show-and-tell).
31+
32+
## I am a public software vendor
33+
34+
Add a `publiccode.yml` file to your repositories!
35+
After that, you can submit it to national catalogs, for example:
36+
37+
* [Developers Italia](https://github.com/italia/developers-italia-backend)
38+
* ...
39+
40+
## I am a public servant and want to represent my country in the Steering Committee
41+
42+
We are happy to have you here!
43+
44+
[Take a look at the Charter](/governance/charter.md) and, once you made sure you are
45+
the right person, please [create a new post](https://github.com/publiccodeyml/publiccode.yml/discussions/categories/general).
46+
47+
The Chair will get in touch with you and get you started.
2448

25-
This project uses the [**GitFlow branching model** and workflow](http://nvie.com/posts/a-successful-git-branching-model/). When you've forked this repository, please make sure to create a feature branch following the GitFlow model.
49+
We strongly encourage you to also contribute translations (if applicable) and, if needed,
50+
[a national section](https://yml.publiccode.tools/country.html).
51+
Just make your changes and [submit a Pull Request](https://github.com/publiccodeyml/publiccode.yml/pulls).
2652

27-
Add your changes in commits [with a message that explains them](https://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message). Document choices or decisions you make in the commit message, this will enable everyone to be informed of your choices in the future.
53+
# In short
2854

29-
If you are adding code, make sure you've added and updated the relevant documentation and tests before you submit your pull request. Make sure to write tests that show the behaviour of the newly added or changed code.
55+
If you never used GitHub, get up to speed with [understanding the GitHub Flow](https://guides.github.com/introduction/flow/)
56+
or follow one of the great free interactive courses in the
57+
[GitHub learning lab](https://lab.github.com/).
58+
59+
This project is [CC-0 licensed](LICENSE), which essentially means that the project, along
60+
with your contributions, is in the Public Domain in whatever jurisdiction possible, and
61+
everyone can do whatever they want with it.
62+
63+
### 1. Make your changes
64+
65+
This project uses the [**GitHub flow branching model**](https://docs.github.com/en/get-started/quickstart/github-flow).
66+
67+
Add your changes in commits [with a message that explains them](https://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message).
68+
Document choices or decisions you make in the commit message, this will enable everyone to
69+
be informed of your choices in the future.
3070

3171
### 2. Pull Request
3272

33-
When submitting the pull request, please accompany it with a description of the problem you are trying to address and the issue numbers that this Pull Request fixes/addresses.
73+
When submitting the pull request, please accompany it with a description of the problem
74+
you are trying to address and the reference to the relevant Issue or Discussion.
75+
76+
If your Pull Request is about a part of the Standard or the Governance of the project,
77+
it's considered as a formal proposal and will be voted on,
78+
[following this procedure](/governance/procedure-proposing-changes-and-voting.md).
3479

3580
### 3. Improve
3681

3782
All contributions have to be reviewed by someone.
3883

39-
It could be that your contribution can be merged immediately by a maintainer. However, usually, a new Pull Request needs some improvements before it can be merged. Other contributors (or helper robots) might have feedback. If this is the case the reviewing maintainer will help you improve your documentation and code.
40-
41-
If your documentation and code have passed human review, it is merged.
84+
It could be that your contribution can be merged immediately by a maintainer.
85+
However, usually, a new Pull Request needs some improvements before it can be merged.
4286

43-
### 4. Celebrate
87+
Other contributors (or helper robots) might have feedback.
88+
If this is the case, the reviewing maintainer will help you improve the Pull Request.
4489

45-
Your ideas, documentation and code have become an integral part of this project. You are the Open Source hero we need!
90+
If your documentation or code have passed human review, it is merged.
4691

47-
In fact, feel free to open a PR to add your name to the [`AUTHORS`](AUTHORS.md) file and get eternal attribution.
92+
### 4. Celebrate
4893

49-
---
94+
Your ideas, documentation and code have become an integral part of this project.
95+
You are the Open Source hero we need!
5096

51-
For more information on how to use and contribute to this project, please read the [`README`](README.md).
97+
In fact, feel free to open a Pull Request to add your name to the [`AUTHORS`](AUTHORS.md)
98+
file and get eternal attribution.

README.md

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -73,31 +73,10 @@ This project follows the Semantic Versioning. For more information see
7373
[SemVer.org](https://semver.org/).
7474

7575
Furthermore, the project uses branches and tags in the following way:
76-
* The `master` branch contains the latest stable version of the standard.
77-
* The `development` branch contains the improvements proposed for the next
78-
version.
76+
* The `main` branch contains the improvements coming up in the next version.
7977
* GitHub's [release page](https://github.com/italia/publiccode.yml/releases)
80-
contains all the released versions of the standard. Releases are done
81-
following the tag version for consistency.
82-
83-
However, since the repository contains both the core schema and the
84-
country-specific ones, it is necessary to further refine the versioning.
85-
As such, each update at the core and/or to a country-specific extension will be
86-
tagged as follows:
87-
88-
> core-x.y.z;cc-a.b.c
89-
90-
where cc is the country code defined in the `countryExtensionVersion` key.
91-
92-
This versioning schema is fundamental in this project since the
93-
`publiccode.yml` file contains references to the core release in the
94-
`publiccodeYmlVersion` key and each country-specific schema contains
95-
a `version` key.
96-
97-
Examples of this versioning schema may be:
98-
99-
> * core:0.2;it:0.4
100-
> * core:0.2;fr:1.1
78+
contains all the released versions of the standard. Releases are tagged
79+
with the Standard's version.
10180

10281
## Contributing
10382

docs/en/country.rst

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
.. _`country-extension`:
1+
.. _`country-section`:
22

3-
Country-Specific Extensions
4-
===========================
3+
Country-Specific Sections
4+
=========================
55

66
While the standard is structured to be meaningful on an international
77
level, there are additional information that can be added that makes
88
sense in specific countries, such as declaring compliance with local
99
laws or regulations. The provided extension mechanism is the usage of
1010
country-specific sections.
1111

12-
All country-specific extensions are contained in a section named with
13-
the two-letter lowercase `ISO 3166-1 alpha-2 country
14-
code <https://it.wikipedia.org/wiki/ISO_3166-1_alpha-2>`__. For instance
12+
All country-specific sections live under a key named after two-letter
13+
lowercase `ISO 3166-1 alpha-2 country
14+
codes <https://it.wikipedia.org/wiki/ISO_3166-1_alpha-2>`__. For instance
1515
``spid`` is a property for Italian software declaring whether the
1616
software is integrated with the Italian Public Identification System.
1717

@@ -20,11 +20,11 @@ If a software is compliant I will find:
2020
.. code:: yaml
2121
2222
it:
23-
countryExtensionVersion: "0.2"
23+
countryExtensionVersion: "1.0"
2424
piattaforme:
2525
- spid: yes
2626
27-
Notice that country-specific extensions within international sections
27+
Notice that country-specific keys within international sections
2828
are not allowed. Countries that want to extend the format should add a
2929
country-specific section instead.
3030

docs/en/schema.it.rst

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
.. _italian-extensions:
1+
.. _italian-sections:
22

33
Italy
44
-----
55

6-
All the extensions listed below are specific for Italy and, as such, they must
6+
All the keys listed below are specific for Italy and, as such, they must
77
be inserted in a section named with the ``it`` code. Every Country is specified
88
using a two letters *country code* following the ISO 3166-1 alpha-2 standard.
99

@@ -13,16 +13,10 @@ Key ``countryExtensionVersion``
1313

1414
- Type: string
1515
- Presence: mandatory
16-
- Example: ``"1.0"``
16+
- Value: ``"1.0"``
1717

1818

19-
This key specifies the version to which the current extension schema adheres to,
20-
for forward compatibility.
21-
22-
Please note how the value of this key is independent from the top-level
23-
``publiccodeYmlVersion`` one (see :ref:`core`). In such a way, the extensions
24-
schema versioning is independent both from the core version of the schema and
25-
from every other Country.
19+
This key **MUST** always be set to ``1.0``.
2620

2721
Key ``conforme``
2822
~~~~~~~~~~~~~~~~

governance/charter.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# publiccode.yml Working Group Charter
2+
3+
The publiccode.yml Working Group is a community of people with the common goal of evolving and
4+
maintaining the publiccode.yml Standard.
5+
6+
We welcome contributions by everyone, in the form of Pull Requests.
7+
8+
To ensure the development of the project is always aligned to the needs of public agencies, we set
9+
up a [Steering Committee](#steering-commitee) composed solely of public servants. The Committee is
10+
tasked with the formal voting required to evolve the core Standard.
11+
12+
All other tools are community-maintained.
13+
14+
## Steering Committee ([@publiccodeyml/steering-committee](https://github.com/orgs/publiccodeyml/teams/steering-committee))
15+
16+
* 🇩🇰 Denmark: [@zorp](https://github.com/zorp) for OS2 Offentlig Digitaliseringsfællesskab
17+
* 🇫🇷 France: [@bzg](https://github.com/bzg) for Etalab (Direction interministérielle du numérique)
18+
* 🇩🇪 Germany: [@cknebel](https://github.com/cknebel) (publicplan GmbH)
19+
* 🇮🇱 Israel: [@ShimonShore](https://github.com/ShimonShore) (Israel Ministry of Science and
20+
Technology)
21+
* 🇮🇹 Italy: [@ruphy](https://github.com/ruphy) for DTD (Presidenza del Consiglio dei Ministri)
22+
23+
The Steering Committee members can vote on proposals on Pull Requests, the workflow is detailed in
24+
[procedure-proposing-changes.md](procedure-proposing-changes-and-voting.md#voting)
25+
26+
We don't have strict rules, as every country is different, but suggest that the appointed member
27+
should be part of a central entity managing software or technological innovation at the government
28+
level.
29+
30+
# Roles and duties
31+
32+
### Chair ([@ruphy](https://github.com/ruphy))
33+
34+
* Plans, organizes agenda and moderates meetings
35+
* Prepares and shares milestones and deadlines
36+
* Oversees the voting procedure
37+
* Is the ultimate responsible for the development of the project
38+
* Has administrative access on GitHub and other platforms
39+
40+
### Maintainer ([@bfabio](https://github.com/bfabio), [@sebbalex](https://github.com/sebbalex))
41+
42+
* Maintains the non-Standard side of repositories
43+
* Merges PR regarding the Standard after consensus by the Steering Committee
44+
* Has administrative access to the repositories
45+
46+
### Non-voting member (None)
47+
48+
* Attends Steering Committee meetings
49+
50+
Active members from the community may be invited as non-voting members with the approval of at
51+
least the majority of the Steering Committee.
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Proposing changes
2+
3+
Everyone can propose changes to the Standard ([`/docs/en/`](/docs/en/)) or organization of the
4+
Working Group ([`/governance/`](/governance/)). Every other part of the repo, including
5+
translations of the Standard, are not normative and don't undergo this procedure.
6+
7+
Proposals and high level ideas can be discussed in [GitHub
8+
Discussions](https://github.com/publiccodeyml/publiccode.yml/discussions) (or [GitHub
9+
Issues](https://github.com/publiccodeyml/publiccode.yml/issues) if you think the proposal is
10+
straightforward) but are only officially considered once a Pull Request is submitted as [a Pull
11+
Request directly on the GitHub repository](https://github.com/publiccodeyml/publiccode.yml/pulls).
12+
13+
The participation in the discussion is encouraged and is free and open to everyone, as is the
14+
submission of Standard-changing Pull Requests.
15+
16+
The [Maintainers](https://github.com/orgs/publiccodeyml/teams/steering-committee) are responsible
17+
for labelling any change depending on their nature according to the [Semantic
18+
Versioning](https://semver.org/), or in other words:
19+
20+
* [**`standard-fix`**](https://github.com/publiccodeyml/publiccode.yml/labels/standard-fix): for all
21+
changes that don't break any compatibility, warrants a new patch version
22+
* [**`standard-backward-compatible`**](https://github.com/publiccodeyml/publiccode.yml/labels/standard-backward-compatible),
23+
[**`standard-deprecation`**](https://github.com/publiccodeyml/publiccode.yml/labels/standard-deprecation):
24+
for all changes that are retrocompatibile, warrants a new minor version
25+
* [**`standard-breaking-change`**](https://github.com/publiccodeyml/publiccode.yml/labels/standard-breaking-change):
26+
for all changes that break retro-compatibility, warrants a new major version.
27+
Breaking changes can be released at most once every two years, provided the current
28+
version of the Standard has been deprecating the relevant feature for at least 6 months.
29+
30+
## Voting
31+
32+
To ensure the Standard always keeps aligned to the needs of public administrations, we encourage
33+
participation from everyone but restrict the voting to public servants, for this reason voting is
34+
only open to members of the [Steering Committee](charter.md#steering-commitee-publiccodeymlsteering-committee),
35+
typically one per country.
36+
37+
[The Chair](charter.md#roles-and-duties) of the Steering committee is responsible for holding a
38+
regular vote, which happens as deemed necessary. Once the voting starts, it stays open for a week.
39+
40+
Voting happens on formal proposals opened as Pull Requests through expressing a clear intention to
41+
*approve*, *reject*, or *abstain*. This can be done by either using GitHub's code review feature,
42+
or as a simple comment to the Pull Request. Only *approve* or *reject* votes are used to determine
43+
the results.
44+
45+
Proposals require unanimity to pass, but when that doesn't happen, proposals with at least 50%
46+
*approve* votes get discussed for an additional period of minimum of 90 days, after which they are
47+
put again to vote. In this second round, the change only needs 75% *approve* votes in order to be
48+
considered accepted.
49+
50+
### Country-specific sections
51+
52+
Changes to country-specific sections (top level keys named after [ISO 3166-1 alpha-2
53+
codes](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) and their children) always require the
54+
*approval* of the Steering Committee member representing the corresponding country and 50% *approve*
55+
votes.
56+
57+
Besides that, they must follow the format used in the rest of the Standard, in particular:
58+
* key names must be lowerCamelCase
59+
* key names must use only uppercase or lowercase ASCII letters
60+
* use English for keys and values, when possible
61+
* must not mimic or duplicate other existing top level keys
62+
63+
In practice, we expect members of other countries to abstain unless there's a good reason not to do
64+
so.
65+
66+
### Results of the vote and implementation of the changes
67+
68+
After a week from the vote has passed, the Chair formally announces the results.
69+
70+
The Maintainers act accordingly to reflect the changes on GitHub and proceed to queue the changes in
71+
the next release cycle.
72+
73+
# Releasing
74+
75+
Changes are batched and released at most monthly if there are approved proposal in the queue.
76+
77+
# Calls and meetings
78+
79+
No calls and meetings are scheduled. If the need arises for a community call, a technical call, or a
80+
meeting of the Steering Committee, an [announcement will be made in this
81+
category](https://github.com/publiccodeyml/publiccode.yml/discussions/categories/announcements).
82+
Make sure you watch it, so you don't miss any notifications!

0 commit comments

Comments
 (0)