Skip to content
Snippets Groups Projects

Initial draft policy on supported platforms and dependencies

Merged Nick Mathewson requested to merge nickm/arti:support_policy into main

Here's a draft of a policy to say about what we support, and what we don't. It's quite incomplete at the moment, but I hope it can be a starting point for us to discuss and improve.

cc @eta @Diziet

Closes #379 (closed)

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • assigned to @nickm

  • requested review from @Diziet

  • This is definitely in the right direction.

    I still have a bit of a problem with the word "supported", which is used many times without definition. That word can mean different things to different people. Indeed in this document it is even used with different meanings in different places.

    Questions that this document needs to answer are:

    1. What do we advise users and embedders to do
    2. What steps do we take to ensure quality/workingness/whatever
    3. What patches will we take
    4. What advisories will we issue

    (1) and (2) are addressed very well. (3) and (4) partially.

    As a thought experiment, I read it trying to replace "support" with some longer phrase each time it appeared. I don't think the result would be very nice.

    Perhaps instead we should take the approach of defining "levels" of support. I think this document offers the following levels (if they only need to address points (1) and (2)):

    • unsupported: we will generally reject, without substantive review, patches
    • best effort: we will review patches and accept them on their merits, but we won't do any systematic verification or testing
    • supported: additionally, we will do systematic verification and testing
    • security-supported: additionally, we will issue an advisory if we become aware of a severe enough vulnerability
  • eta approved this merge request

    approved this merge request

  • Contributor

    (I'm happy with this as is!)

  • I had a thought: how about "non-goal" for the lowest tier. As in "Supporting other proprietary operating systems is a non-goal".

  • Nick Mathewson added 1 commit

    added 1 commit

    • a42a6467 - SupportPolicy: Add tiers, clarify what "support" means.

    Compare with previous version

  • Nick Mathewson added 1 commit

    added 1 commit

    • 6a00b74b - Clarify which releases get advisories.

    Compare with previous version

  • I've added a bunch of text, and a set of tiers based loosely on C tor's; how do we like it now? (cc @Diziet @eta)

  • eta
    eta @eta started a thread on commit a42a6467
9 9 promise. For now, we'll deviate from these policies whenever it we think it
10 10 makes sense, and we'll amend from time to time without notice.
11 11
12 ## Elements of support
13
14 For this document, we define the following support tiers.
15
16 If a configuration is **unsupported**:
  • Contributor

    I would move this to a separate sub-heading ("### Unsupported configurations") and mention all the unsupported stuff in that heading. e.g.

    ### Unsupported configurations
    
    We don't support proprietary operating systems, [etc]. This means that:
    
    * We do not typically accept patches related to these configurations [etc]

    (The rationale here is "putting this front-and-center adds to the list of supported configurations you have to keep in your head")

  • Please register or sign in to reply
  • eta
    eta @eta started a thread on commit a42a6467
  • 9 9 promise. For now, we'll deviate from these policies whenever it we think it
    10 10 makes sense, and we'll amend from time to time without notice.
    11 11
    12 ## Elements of support
    13
    14 For this document, we define the following support tiers.
    15
    16 If a configuration is **unsupported**:
    17
    18 * We do not typically accept patches related to the configuration.
    19 * We do not issue security advisories related to the configuration.
    20 * We close tickets related to the configuration as wont-fix.
    21
    22 If a configuration is **community-supported**:
    • Contributor

      Maybe we could give these numbers, like Rust's platform support; for example, this might be "Tier 1". That lets you sort levels of support more intuitively, maybe (?)

    • Hmm. I'd like to make this as clear as possible, but I'm not sure that the numbers are more clear than the words, especially since we reference them elsewhere in the document out of order. Remembering the distinction between tier 3 and tier 4 seems harder than remembering the distinction between maintained and community-supported when we see those terms elsewhere.

      Maybe for clarity it would be better to rearrange the document so that everythign related to one tier is in the same place. In other words it would go something like:

      • Tier 1 (tested)
        • What 'tested' means?
        • 'tested' operating systems
        • 'tested' CPU architectures
        • 'tested' dependencies
        • 'tested' rust versions
      • Tier 2 (target)
        • What 'target' means
        • 'target' operating systems
        • ...
      • ...
      • Supported versions of Arti
      • API compatibility
      • Security advisories
    • Please register or sign in to reply
  • eta
    eta @eta started a thread on commit a42a6467
  • 28
    29 Additionally, if configuration is **maintained**:
    30
    31 * We commit not to knowingly make releases that break the
    32 configuration.
    33 * If we learn that the configuration is broken, we prioritize fixing
    34 it.
    35 * We write and announce security advisories if we learn about security
    36 issues in the configuration.
    37
    38
    39 Additionally, if configuration is a **target**:
    40
    41 * It is a higher priority for us than other **maintained**
    42 configurations.
    43 * We'd like to make it a **tested** configuration, if we have the
    • Contributor

      I kind of think this should be merged with tested; "we would like to make this tested but haven't gotten around to it yet" doesn't sound like a distinction worth having here. This document should describe policy, not the current state of affairs (imo).

    • The reason I thought that this difference matters is that it affects the level of support you're actually getting. (For example, if your chosen platform is target, you should make sure to re-run our unit tests with each release, since we're not doing that.)

    • Please register or sign in to reply
  • eta
    eta @eta started a thread on commit a42a6467
  • 44 resources. We intend to add more testing to it until it can become
    45 **tested**.
    46
    47 Additionally, if a configuration is **tested**:
    48
    49 * We have automated systems to make sure that the configuration
    50 builds and runs tests correctly.
    51 * We have one or more team members who "dogfood" the configuration,
    52 using it ourselves to get rapid notifications about usability
    53 problems.
    54
    55 (Note that no broad configuration can be fully **tested** in all of its
    56 permutations. For example, our automated tests can only be run on a
    57 limited set of the number of Linux distributions and versions, when in
    58 fact there are vast numbers of possible Linux installations whose
    59 variations might affect our behavior.)
    • Comment on lines +55 to +59
      Contributor

      Arguably, this shouldn't be included; I think it's somewhat implied that tests aren't going to catch everything.

    • So, the reason I put this in specifically was so that I could say things like "Linux is tested", rather than having to say "The exact versions of Linux, Glibc, Ubuntu etc contained in the latest rust-stable docker image are tested."

    • Please register or sign in to reply
  • eta
    eta @eta started a thread on commit a42a6467
  • 23 We only support modern versions of these operating systems. (If the
    24 upstream providers of the operating system no longer support it, neither
    25 do we.)
    72 We only support modern versions of these operating systems. If the
    73 upstream providers of the operating system no longer provides security
    74 patches for it, it is **unsupported**. Sufficiently old versions may
    75 also be **maintained** or **community-supported**, depending on their
    76 age and the difficulty of working with them.
    26 77
    27 We currently have automated builds and tests on Linux only. On OSX and
    28 Windows, we have automated builds, but the tests are not (yet) run. In the
    29 long run, we aim to have automated builds and testing for all of our priority
    78 We currently have automated tests on Linux only. On OSX and Windows, we
    79 have automated builds, but the tests are not (yet) run. In the long
    80 run, we aim to have automated builds and testing for all of our these
    30 81 platforms.
    • Contributor

      I think this new version does a good job of specifying things in more detail, which users arguably want. However, I think it probably goes a smidge too far, to the point that while reading it I kind of got a bit confused having to hold 5 tier levels in my head (kind of like a legal document with a big page of Capitalized Definitions at the start which you have to remember).

      I've left a few non-blocking comments on how I think it could be improved; please feel free to ignore any or all of them and merge at your leisure (after @Diziet weighs in too, that is)

    • I've tried to note what my rationales were for the parts I put in, and noted a possible alternative organization for some part of the document.

      @Diziet what do you think about the reorganization I suggested?

    • Please register or sign in to reply
  • Ian Jackson
  • Ian Jackson
  • This is good and I think answers all the questions with good (or at least plausible) answers.

    I had two minor suggestions where the wording seemed anomalous to me.

  • Nick Mathewson added 1 commit

    added 1 commit

    Compare with previous version

  • Merging per discussion, but let's remember the idea of rearranging this if we need to.

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading