Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion minutes/2020-09-17.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ rules must be followed by projects that get run by the IWG.

There are two categories of projects run by IWG:

* software and services beign used for the direct benefit of TPF
* software and services being used for the direct benefit of TPF
* software and services being used for the benefit of the Perl and Raku
communities

Expand Down
69 changes: 69 additions & 0 deletions rubric.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# So you want the IWG to run a service…

⚠️ This document is maintained by the IWG and is likely to change as we learn
from the process of actually carrying out our mandate.

## What does "run a service" mean?

The IWG has a few roles in running services:

1. It holds administrative keys and delegates access to the current active
admins, if needed.
2. It keeps services running, monitors availability, performs security updates,
and does other "keep the lights on" tasks.
3. It identifies breakages caused by upstream changes and attempts to have them
fixed. The IWG does not perform development tasks (like rewriting custom
software). See "[When Things Break](#When Things Break)" below.
4. It writes internal documentation (playbooks) for how to manage services.
This covers generic documentation of the hosting platform and
service-specific troubleshooting steps.

The IWG expressly *does not* do the following:

1. moderate user content
2. develop new features
3. fix non-trivial bugs
4. write documentation for users

## What kind of services does IWG run?

There are two categories of system run by IWG:

1. **TPF services**: those being used for the direct benefit of TPF
2. **community services**: those being used for the benefit of the Perl and Raku communities

## Enrollment of TPF Services

IWG administrates all TPF unless there is a compelling reason for other
accomodations.

## Enrollment of Community Services

Before any service can be hosted by the IWG, its current maintainer and the IWG
must agree to this arrangement. Here are a number of guidelines about how the
IWG decides what to host:

* Services must have a significant ongoing value to the community.
* Services must have a minimum level of reliability (or, alternatively,
hosting it must fall below some maximum level of hassle).
* The IWG must have full ownership of the hosting and deployment environment.
* The IWG will establish an official hosting platform. ("We host everything on
such and such OS and are comfortable with managing the following services.")
Deviation from the official platform is treated as a hassle and judged
accordingly.
* Services must be hosted at domain controlled by the IWG.
* Custom code must be hosted at GitHub, in an organization administrated by
IWG.

## When Things Break

The IWG will establish internal procedures for dealing with things like "such
and such service has crashed and needs a reboot."

The larger question is what happens when a service's custom code is broken by
changes to the standard deployment environment. If the IWG is unable to make

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we have a responsibility to test any such change to make sure it doesn't break stuff? And if it does, give a window for remediation?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but consider:

  • imagine we say "services must run on Debian, and we have some minimum version"
  • hosted service relies on a feature of Debian-packaged service no longer found in new version
  • if it's trivial to tweak the software, we will
  • …but what if it's not?

We discussed this on Zoom, basically saying that in a case like this, we would make at least a bare minimum attempt to see if the problem was trivially addressable, and failing that, we would make a notice that the service would go offline at some future point if nobody provided a fix. We'd say "send your fix to this github repo" or the like.

a fix easily, they will make a prominent call for assistance. If the problem
isn't fixed, the service may be taken down and replaced by a page describing
the problem. Fixes provided by the public will be tested and, if they're
effective, deployed.