git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Documentation: add platform support policy

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Jul 9, 2024, 23:16 UTC
Message-ID
<Zo3EvvSI999ngrLn@tapette.crustytoothpaste.net>
In-Reply-To
<20240709225042.2005233-1-emilyshaffer@google.com>
On 2024-07-09 at 22:50:42, Emily Shaffer wrote:
> Right now, this doc talks about "guarantees." I used that phrasing based on
> what I've observed to be an implicit expectation that we guarantee support; it
> could be this isn't actually a guarantee that the community is willing to make,
> so I am hoping we can discuss it and come up with the right term.

I think it might be helpful to look at what some other projects do. Rust has a concept of tiered support, and it requires platforms to have maintainers who will commit to support an OS. I don't think we necessarily need to be so formal, but if nobody's stepping up to monitor an OS or architecture, it may break at any time and we won't be able to consider it when deciding on features we require from the platform (such as Rust, C versions, or POSIX versions).

I think it's also worth discussing what we require from a platform we're willing to support. For example, we might require that the platform pass the entire testsuite (ignoring irrelevant tests or tests for things that platform doesn't use, such as Perl) or be actively pursuing an attempt to do so. We may also want to require that an OS be actively receiving security support so that we don't have people asking us to carry patches for actively obsolete OSes, such as CentOS 6. Finally, some sort of time limit may be helpful, since some Linux vendors are now offering 15 years of support, and we really may not want to target really ancient versions of things like libcurl.

At the same time, we do have people actively building Git on a variety of platforms and a huge number of architectures, including most Linux distros and the BSDs, and we will want to be cognizant that we should avoid breaking those environments when possible, even though, say, the porters for some of those OSes or architectures may not actively follow the list (due to limited porters and lots of porting work). I imagine we might say that released architectures on certain distros (Debian comes to mind as a very portable option) might be implicitly supported.

Show 10 quoted lines
> +Compatible on `next`
> +--------------------
> +
> +To guarantee that `next` will work for your platform, avoiding reactive
> +debugging and fixing:
> +
> +* You should add a runner for your platform to the GitHub Actions CI suite.
> +This suite is run when any Git developer proposes a new patch, and having a
> +runner for your platform/configuration means every developer will know if they
> +break you, immediately.

I think this is a particularly helpful approach. I understand the Linux runners support nested virtualization, so it's possible to run tests in a VM on a Linux runner on OSes that Actions doesn't natively support. I do this for several of my Rust projects[0] on FreeBSD and NetBSD, for example, and it should work on platforms that support Vagrant and run on x86-64.

That won't catch things like alignment problems which don't affect x86-64, but it does catch a lot of general portability problems that are OS-related.

I'm in agreement with all of your suggestions, by the way, and I appreciate you opening this discussion.

[0] An example for the curious is muter: https://github.com/bk2204/muter.
-- 
brian m. carlson (they/them or he/him)
Toronto, Ontario, CA
Previous: Emily ShafferNext: Emily Shaffer
Message 2 of 55 in “Documentation: add platform support policy”
  1. Documentation: add platform support policyEmily Shaffer, Jul 9, 2024
  2. brian m. carlsonJul 9, 2024
  3. Emily ShafferJul 11, 2024
  4. Kyle LippincottJul 11, 2024
  5. rsbecker@nexbridge.comJul 11, 2024
  6. Emily ShafferJul 11, 2024
  7. brian m. carlsonJul 11, 2024
  8. Emily ShafferJul 11, 2024
  9. brian m. carlsonJul 12, 2024
  10. rsbecker@nexbridge.comJul 12, 2024
  11. Emily ShafferJul 15, 2024
  12. rsbecker@nexbridge.comJul 15, 2024
  13. Emily ShafferJul 15, 2024
  14. Junio C HamanoJul 10, 2024
  15. Emily ShafferJul 10, 2024
  16. Junio C HamanoJul 10, 2024
  17. Emily ShafferJul 11, 2024
  18. rsbecker@nexbridge.comJul 10, 2024
  19. Emily ShafferJul 11, 2024
  20. rsbecker@nexbridge.comJul 11, 2024
  21. Kyle LippincottJul 10, 2024
  22. Emily ShafferJul 11, 2024
  23. Junio C HamanoJul 11, 2024
  24. Junio C HamanoJul 11, 2024
  25. Kyle LippincottJul 11, 2024
  26. Documentation: add platform support policyEmily Shaffer, Jul 11, 2024
  27. Junio C HamanoJul 12, 2024
  28. Emily ShafferJul 15, 2024
  29. Junio C HamanoJul 15, 2024
  30. Emily ShafferJul 16, 2024
  31. rsbecker@nexbridge.comJul 16, 2024
  32. Junio C HamanoJul 17, 2024
  33. Documentation: add platform support policyEmily Shaffer, Jul 18, 2024
  34. Emily ShafferJul 18, 2024
  35. Junio C HamanoJul 18, 2024
  36. Junio C HamanoJul 18, 2024
  37. rsbecker@nexbridge.comJul 18, 2024
  38. Emily ShafferJul 25, 2024
  39. Emily ShafferJul 25, 2024
  40. Junio C HamanoJul 25, 2024
  41. rsbecker@nexbridge.comJul 25, 2024
  42. Patrick SteinhardtJul 23, 2024
  43. Emily ShafferJul 25, 2024
  44. Josh SteadmonJul 23, 2024
  45. Emily ShafferJul 25, 2024
  46. Documentation: add platform support policyEmily Shaffer, Jul 30, 2024
  47. Junio C HamanoJul 30, 2024
  48. Emily ShafferJul 30, 2024
  49. Junio C HamanoJul 30, 2024
  50. rsbecker@nexbridge.comJul 30, 2024
  51. Emily ShafferJul 31, 2024
  52. rsbecker@nexbridge.comJul 31, 2024
  53. Documentation: add platform support policyEmily Shaffer, Aug 2, 2024
  54. Junio C HamanoAug 2, 2024
  55. rsbecker@nexbridge.comAug 2, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.