Skip to content

Commit

Permalink
Merge pull request tock#3894 from alevy/core_wg_proposal
Browse files Browse the repository at this point in the history
New provisions for what Core WG vs other WGs do
  • Loading branch information
alevy authored Mar 4, 2024
2 parents bc694f8 + 89d87ff commit e73556f
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 22 deletions.
76 changes: 75 additions & 1 deletion doc/wg/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,83 @@
Tock Working Groups
===================

Working groups (wg) are focused groups to organize development around a
Working groups are focused groups to organize development around a
particular aspect of Tock.

## Motivation

Tock encompasses a large and varied set of subsystems, architectures,
focus areas, libraries, ancillary tools, and documentation. Most
contributors have expertise and stake in a subset of these. Moreover,
it is impractical for any maintainer to keep up with the discussions
and direction of each part of the project. Finally, different parts of
the project should be able to move at different paces, with different
levels of scrutiny. For example, a soundness bug or performance
regression in the kernel crate can catastrophically impact all users
and should be avoided if at all possible, while a suboptimal design
decision in an experimental user-space library is not a big deal.

To facilitate this, working groups take on responsibility for specific
sub-areas of the project. Members of a working group become experts in
that sub-area and are best able to determine appropriate scrutiny for
accepting contributions, frequency and mode of design discussions,
etc.

## Structure And Responsibilities

Tock development organizes around a core working group as well as
additional area-specific working groups. The core working group
oversees the project holistically, defining high-level design goals
and project direction, establishing working groups, and facilitating
work that spans multiple working groups. Other working groups
facilitate contributions to specific sub-areas of the project, with
devolved decision-making responsibility for accepting contributions,
design, and direction.

While working groups *oversee* development, working group members are
not expected to be the primary source of contributions. Instead,
working groups establish code review standards, define and communicate
specific design direction for their purview, and ensure relevant
contributors are both supported and effective.

### Working Group Organizational Guidelines

Each working group has a Lead who assembles the working group
membership and is responsible for its operation.

Each working group should include at least one member from the Core
Working Group to ensure that the Core Working Group is regularly
updated on the activities and motivations of the working group. The
Core Working Group member need not be the working group Lead.

Each working group, including the Core Working Group, establishes its
own rules and procedures for accepting contributions, communicating,
meeting, and making decisions. In absence of such rules, working
groups make decisions by consensus, have weekly voice calls, make
meeting notes available publicly, and communicate asynchronously via a
mailing list.

However, working groups are encouraged to establish appropriate
decision-making rules, meeting frequency and communication mode for
their needs and membership.

## Core Working Group

The Core Working Group shepherds and oversees the Tock OS and related
tools and libraries. Importantly, it serves as a backstop for managing
contributions that fall outside the purview of existing working groups
and for resolving conflicts about contributions that fall under the
purview of multiple working groups. It also establishes new working
groups to handle such contributions, and dissolves or re-organizes
existing working groups.

Formally, the Core Working Group controls who can directly commit to
all Tock project repositories and devolves the ability to commit to
specific repositories or components of repositories to other working
groups. The Core Working Group, like other working groups, establishes
its own rules for deciding how to accept contributions as well as how
to establish and disband working groups.

Existing Working Groups
-----------------------

Expand Down
48 changes: 27 additions & 21 deletions doc/wg/core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,45 @@ Tock Core Working Group (core)

- Working Group Charter
- Adopted 3/31/2020
- Amended 3/01/2024

## Goals

The core team manages and guides the development of Tock. Its responsibilities
are to:
are:

- Design, implement, and maintain the Tock kernel and its interfaces, including
system calls, hardware interface layers, and internal kernel APIs,
- Decide when to update the Rust compiler toolchain that Tock uses,
- Decide on the formation, scope, and lifetime of other Tock working groups,
- Decide on, articulate, and promote core principles of Tock kernel software and
its development,
- Support any code in the Tock repository that is not supported by another
working group.

- Managing and overseeing code, documentation, testing, and releases
for the Tock project.

- Defining and communicating overall project goals and direction.

- Establishing and delegating responsibility over components and
subprojects to working groups.

- Ensuring that working groups have the people and resources needed to
accomplish their work.

- Ensuring working groups are accountable to their delegated
responsibilities and the project as a whole.

- Coordinating decisions including (but not limited to) code,
documentation, testing, and releases that affect purviews delegated
to more than one working group.

- Facilitating communication channels and consensus among working
groups.

- Coordinating project-wide changes to teams, structures, or
processes.

## Members

- Hudson Ayers, [hudson-ayers](https://github.com/hudson-ayers), Stanford
- Brad Campbell, [bradjc](https://github.com/bradjc), UVA
- Branden Ghena, [brghena](https://github.com/brghena), Northwestern
- Philip Levis, [phil-levis](https://github.com/phil-levis), Stanford
- Amit Levy (chair), [alevy](https://github.com/alevy), Princeton University
- Amit Levy (Lead), [alevy](https://github.com/alevy), Princeton University
- Pat Pannuto, [ppannuto](https://github.com/ppannuto), UCSD
- Alexandru Radovici [alexandruradovici](https://github.com/alexandruradovici), Politehnica Bucharest & OxidOS
- Leon Schuermann, [lschuermann](https://github.com/lschuermann), Princeton University
Expand Down Expand Up @@ -71,14 +88,3 @@ within a week of a call. This delay is to give participants an opportunity to
correct any errors or better explain points that came up. They are intended to
be a communication mechanism of the group, its discussions, the technical
issues, and decisions, not a literal transcription of what is said.

## Code Purview

The core working group is in charge of (responsible for reviewing, approving,
and merging pull requests for) all code directories that are not under the
purview of another working group. The following directories are expected to
remain under the sole purview of the core working group:

- `capsules`, although other working groups may have subdirectories
- `kernel`
- `libraries`

0 comments on commit e73556f

Please sign in to comment.