Skip to content

Commit c616615

Browse files
authoredOct 26, 2020
Add an official Governance structure (#31)
* Draft of an official Governance structure * Add annoucement to go with governance structure * Further refinements to governance.md * Add Social Media * Typo fix and date bump * More tweaks * Council -> Committee * Fix typos * More typo fixes * Teak commit access wording * Bow to the will of the BDFL * Update mission * Change navigation header * Remove chatroom from navigation
1 parent 71c092d commit c616615

File tree

3 files changed

+340
-5
lines changed

3 files changed

+340
-5
lines changed
 

Diff for: ‎_config.yml

+9-5
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,14 @@ css_inline: false # Will insert all styles into a single <style> block in the <h
111111
navigation_header:
112112
- title: Home
113113
url: /
114-
- title: Code
115-
url: /pages/code/
116114
- title: Documentation
117115
url: https://jump.dev/JuMP.jl/stable/
116+
- title: Community
117+
items:
118+
- title: Forum
119+
url: https://discourse.julialang.org/c/domain/opt
120+
- title: Ecosystem
121+
url: /pages/code/
118122
- title: Workshops
119123
items:
120124
- title: 2020
@@ -125,9 +129,9 @@ navigation_header:
125129
url: /meetings/bordeaux2018
126130
- title: 2017
127131
url: /meetings/mit2017
128-
- title: Forum
129-
url: https://discourse.julialang.org/c/domain/opt
130-
- title: News
132+
- title: Governance
133+
url: /pages/governance
134+
- title: Blog
131135
url: /pages/news/
132136

133137
# TODO

Diff for: ‎_posts/2020-10-21-governance.md

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
layout: post
3+
title: "Formalizing a governance structure"
4+
date: 2020-10-21
5+
categories: [announcements]
6+
---
7+
8+
Recently, JuMP turned eight years old. (The [first commit](https://github.com/jump-dev/JuMP.jl/commit/688b732c13abf7182e438ca22b0b00890a08be63)
9+
for "Julp" was made on 10 October 2012!) It has come a long way since it's
10+
creation as a side-project of two graduate students at MIT, and as we approach
11+
a 1.0 release, we thought it was time to formalize our governance structure.
12+
13+
You can find the resulting document under the [Governance tab](/pages/governance)
14+
at [jump.dev](https://jump.dev).
15+
16+
The highlights include:
17+
18+
* Appointing Miles Lubin as our [BDFL](https://en.wikipedia.org/wiki/Benevolent_dictator_for_life).
19+
20+
* Defining entities such as the core contributors, emeritus core contributors,
21+
repository maintainers, and the Steering Committee, along with their roles,
22+
and how membership is determined for each entity.
23+
24+
* Clarifying our decision-making process, by describing who gets to decide what
25+
when.
26+
27+
* Listing what Github permissions different entities have to the repositories
28+
in the [jump-dev](https://github.com/jump-dev) Github organization.
29+
30+
* Outlining channels of community involvement, including the poorly publicized
31+
fact that we hold a monthly developer call.
32+
33+
* Formalizing a process for transferring repositories to the
34+
[jump-dev](https://github.com/jump-dev) Github organization.
35+
36+
We believe this document strengthens the foundation of JuMP, and sets it up for
37+
a sustainable, long-term future.
38+
39+
Stay tuned for more progress!

Diff for: ‎pages/governance.md

+292
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,292 @@
1+
---
2+
title: "Governance Structure"
3+
---
4+
5+
This document describes the formal governance structure of the JuMP project.
6+
7+
For the purpose of this document, "JuMP" includes all repositories in the
8+
[JuMP-dev Github organization].
9+
10+
## Mission
11+
12+
The mission of the JuMP project is to provide a free, open-source software stack
13+
for mathematical optimization based on the JuMP modeling language.
14+
15+
## Code of Conduct
16+
17+
The JuMP community strongly values inclusivity and diversity. Everyone should
18+
treat others with the utmost respect. Everyone in the community must adhere to
19+
the [NumFOCUS Code of Conduct](https://numfocus.org/code-of-conduct) and the
20+
[Julia Community Standards](https://julialang.org/community/standards/), which
21+
reflect the values of our community. Both these links have information on how to
22+
confidentially report a violation.
23+
24+
## Entities
25+
26+
This section outlines the different entities that exist within the JuMP project,
27+
their basic role, and how membership of each entity is determined.
28+
29+
### Benevolent Dictator For Life
30+
31+
Due to his role in the creation of JuMP, [Miles Lubin](https://github.com/mlubin)
32+
holds the title of [Benevolent Dictator For Life (BDFL)](https://en.wikipedia.org/wiki/Benevolent_dictator_for_life).
33+
34+
### Core Contributors
35+
36+
Core contributors lead the technical development of the JuMP project, and they
37+
are the ultimate authority on the direction of the JuMP project.
38+
39+
The current core contributors are:
40+
41+
* Miles Lubin (@mlubin)
42+
* Benoît Legat (@blegat)
43+
* Joaquim Dias Garcia (@joaquimg)
44+
* Joey Huchette (@joehuchette)
45+
* Oscar Dowson (@odow)
46+
47+
A new core contributor may be added by consensus of the current core
48+
contributors and notification to the [Steering Committee].
49+
50+
Before becoming a core contributor, it is expected that the community member is
51+
a [repository maintainer](#repository-maintainers) of several repositories in
52+
the [JuMP-dev Github organization].
53+
54+
### Emeritus Core Contributors
55+
56+
Emeritus core contributors are community members who were [core contributors],
57+
but have stepped back to a less active role.
58+
59+
The emeritus core contributors are:
60+
61+
* Iain Dunning (@iainnz)
62+
63+
A [core contributor](#core-contributors) may choose to switch to emeritus status
64+
by informing the other [core contributors] and the [Steering Committee].
65+
66+
### Repository Maintainers
67+
68+
Repository maintainers are trusted members of the community who help the [core
69+
contributors] by managing a limited number of repositories in the [JuMP-dev
70+
Github organization].
71+
72+
Any [core contributor](#core-contributors) has individual authority to appoint a
73+
community member as a repository maintainer of a repository with notification to
74+
the other [core contributors].
75+
76+
Before becoming a repository maintainer, it is expected that the community
77+
member will have been an active participant in the development and maintenance
78+
of a repository for a sustained period of time. This includes triaging issues,
79+
proposing and reviewing pull requests, and updating any binary dependencies as
80+
needed.
81+
82+
Community members may be maintainers of multiple repositories at the same time.
83+
84+
Repository maintainers can step back from their role at any time by informing a
85+
[core contributor](#core-contributors). Furthermore, [core contributors], by
86+
consensus, can choose to remove repository maintainers for any reason (typically
87+
inactivity).
88+
89+
### NumFOCUS
90+
91+
JuMP is a [fiscally sponsored project of NumFOCUS](https://numfocus.org/project/jump),
92+
a 501(c)(3) public charity in the United States. NumFOCUS provides JuMP with
93+
fiscal, legal, and administrative support to help ensure the health and
94+
sustainability of the project.
95+
96+
### Steering Committee
97+
98+
The Steering Committee supports the [core contributors] by representing JuMP in
99+
all interactions with [NumFOCUS](#numfocus), e.g., by attending [NumFOCUS's
100+
annual summit](https://numfocus.org/blog/numfocus-summit-2019). In addition, the
101+
Steering Committee:
102+
103+
* Approves expenditures related to JuMP and paid through the NumFOCUS account.
104+
* Negotiates and approves contracts between NumFOCUS and external contractors
105+
who provide paid work to JuMP.
106+
107+
The current members of the Steering Committee are:
108+
109+
* Miles Lubin, _Google_ (@mlubin)
110+
* Juan Pablo Vielma, _Google_ (@juan-pablo-vielma)
111+
* Joey Huchette, _Rice University_ (@joehuchette)
112+
* Oscar Dowson (@odow)
113+
* Changhyun Kwon, _U. South Florida_ (@chkwon)
114+
115+
A member of the Steering Committee may leave the committee by notifying the
116+
Steering Committee and [core contributors]. The remaining Steering Committee
117+
members, in consultation with the [core contributors], will invite a member of
118+
the community to join in order to maintain a quorum of five members.
119+
120+
## Decision Making Process
121+
122+
This section outlines how financial and non-financial decisions are made in the
123+
JuMP project.
124+
125+
### Financial Decisions
126+
127+
All financial decisions are made by the [Steering Committee] to ensure any funds
128+
are spent in a manner that furthers the [mission](#mission) of JuMP. Financial
129+
decisions require majority approval by [Steering Committee] members.
130+
131+
Community members proposing decisions with a financial aspect should contact the
132+
[Steering Committee] directly, or table their proposal as an agenda item for
133+
discussion on a [monthly developer call].
134+
135+
### Non-financial Decisions
136+
137+
All non-financial decisions are made via consensus of the [core contributors]
138+
and relevant [repository maintainers]. [Emeritus core contributors](#emeritus-core-contributors)
139+
are not considered to be [core contributors] for this purpose.
140+
141+
Code-related decisions, such when a pull request is ready to be accepted and
142+
merged, should be discussed via the relevant Github issues and pull requests. If
143+
consensus cannot be achieved, the community member proposing the change may be
144+
invited by a [core contributor](#core-contributors) to present their proposal at
145+
a [monthly developer call] for further discussion and community input.
146+
147+
Non-code-related decisions, such as long-term strategic planning for JuMP,
148+
should either be discussed in a Github issue, or tabled as an agenda item and
149+
discussed on a [monthly developer call].
150+
151+
If consensus on a non-financial decision cannot be achieved, the final decision
152+
will be made by the [BDFL](#benevolent-dictator-for-life).
153+
154+
The [Steering Committee] can gain additional decision-making power if the [core
155+
contributors] decide to delegate.
156+
157+
### Conflict of Interest
158+
159+
It is expected that community members will be employed at a wide range of
160+
companies, universities and non-profit organizations. Because of this, it is
161+
possible that members will have conflicts of interest. Such conflicts of
162+
interest include, but are not limited to:
163+
164+
* Financial interests, such as investments, employment or contracting work,
165+
outside of JuMP that may influence their work on JuMP.
166+
* Access to proprietary information of their employer that could potentially
167+
leak into their work with JuMP.
168+
169+
All members of the [Steering Committee] shall disclose to the [Steering
170+
Committee] any conflict of interest they may have. Members with a conflict of
171+
interest in a particular issue may participate in [Steering Committee]
172+
discussions on that issue, but must recuse themselves from voting.
173+
174+
[Core contributors](#core-contributors) and [repository maintainers] should also
175+
disclose conflicts of interest with other [core contributors] and step back from
176+
decisions when conflicts of interests are in play.
177+
178+
## Github Permissions
179+
180+
[Github permissions][permissions] are used to control access to repositories in
181+
the [JuMP-dev Github organization].
182+
183+
Anyone with commit access to a repository is trusted to use it in a way that is
184+
consistent with the [Decision Making Process](#decision-making-process).
185+
Those with permissions should prefer pull requests over direct pushes, ask for
186+
feedback on changes if they are not sure there is a consensus, and follow JuMP's
187+
[style guide](https://jump.dev/JuMP.jl/stable/style/) and development processes.
188+
189+
### Core Contributors
190+
191+
[Core contributors](#core-contributors) are added as [Owners][owner-permission]
192+
of the [JuMP-dev Github organization] and have [Admin][permissions] permission
193+
to every repository.
194+
195+
### Emeritus Core Contributors
196+
197+
[Emeritus core contributors](#emeritus-core-contributors) retain the same commit
198+
rights as [core contributors], unless they choose to surrender them.
199+
200+
### Repository Maintainers
201+
202+
[Repository maintainers](#repository-maintainers) have [Maintain][permissions]
203+
rights to an individual repository as an outside collaborator. Among other
204+
rights, this allows them to push code to a branch in the
205+
[JuMP-dev Github organization] instead of their personal fork, merge pull
206+
requests, and close issues.
207+
208+
## Community Involvement
209+
210+
The JuMP project highly values the contributions made by members of the
211+
community. As an open-source project, JuMP is both made for the community, and
212+
by the community.
213+
214+
There are five main channels that JuMP uses to engage with the community.
215+
216+
### Community Forum
217+
218+
The community forum is a place for community members to post questions and
219+
receive help.
220+
221+
The current forum is the ["Optimization (Mathematical)" section of the
222+
Julia Discourse Forum](https://discourse.julialang.org/c/domain/opt/13).
223+
224+
### Developer Chatroom
225+
226+
The developer chatroom is a chatroom for developer-focused discussions about
227+
JuMP.
228+
229+
The current chatroom is the [JuMP-dev Gitter channel](https://gitter.im/JuliaOpt/JuMP-dev).
230+
231+
### Monthly Developer Call
232+
233+
The [Steering Committee] hosts a monthly developer call to discuss JuMP-related
234+
business.
235+
236+
The calls are currently scheduled on the fourth Thursday of every month at 14:00
237+
Eastern. For information on how to take part, join the [developer chatroom] and
238+
ask `@odow` or `@mlubin` for an invite to the monthly developer call.
239+
240+
The invite contains information on how to table agenda items for upcoming calls.
241+
242+
### JuMP-dev Workshops
243+
244+
The [Steering Committee] will periodically choose a Chair to organize a JuMP-dev
245+
workshop.
246+
247+
Previous workshops include [Santiago, 2019](https://jump.dev/meetings/santiago2019/),
248+
[Bordeaux, 2018](https://jump.dev/meetings/bordeaux2018/), and [Boston, 2017](https://jump.dev/meetings/mit2017/).
249+
250+
Announcements of future workshops will be communicated through the
251+
[community forum], [social media](#social-media), and via the
252+
[jump.dev](https://jump.dev) website.
253+
254+
### Social Media
255+
256+
The JuMP Twitter handle is [@JuMPjl](https://twitter.com/JuMPjl).
257+
258+
## Transferring repositories to jump-dev
259+
260+
The [JuMP-dev Github organization] exists to simplify the management of Github
261+
permissions on JuMP-related repositories. It is not a curation of all
262+
JuMP-compatible solvers and supporting packages.
263+
264+
Instead, community members who develop new pure-Julia solvers or solver-wrappers
265+
should first add their package to the list of supported solvers in the
266+
[Installation Guide](https://jump.dev/JuMP.jl/stable/installation/#Getting-Solvers-1)
267+
of the JuMP documentation.
268+
269+
Note that when developing a new solver or JuMP-extension, the [core
270+
contributors] request that you do not use "JuMP" in the name without prior
271+
consent.
272+
273+
Even once a package has matured, the bar for transferring repositories to the
274+
[JuMP-dev Github organization] is high, and can be summarized by the following:
275+
276+
* The maintenance of the package would be simplified if [core contributors]
277+
have [Admin permission][permissions] to the repository.
278+
279+
Community members wishing to transfer a repository from their personal account
280+
to the [JuMP-dev Github organization] should contact the [core contributors]
281+
via the [developer chatroom].
282+
283+
[JuMP-dev Github organization]: https://github.com/jump-dev
284+
[permissions]: https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#repository-access-for-each-permission-level
285+
[owner-permission]: https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization#permission-levels-for-an-organization
286+
287+
[community forum]: #community-forum
288+
[developer chatroom]: #developer-chatroom
289+
[core contributors]: #core-contributors
290+
[repository maintainers]: #repository-maintainers
291+
[Steering Committee]: #steering-committee
292+
[monthly developer call]: #monthly-developer-call

0 commit comments

Comments
 (0)
Please sign in to comment.