<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"> Thanks for taking this initiative Renato! While this doesn’t completely alleviate my concerns with the addition of the Bazel build system, I think this proposal is valuable in and of itself. It’s worthwhile to have documented policies
so that community members who are not in the in-group can point to a violation and state that it’s wrong without needing to have an excess level of clout or coalition to lend their words weight. I’ve suggested a few changes inline below, but I think this is
largely reasonable.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> I think talk of committing the Bazel build system to the repo should be tabled until we can ratify this policy, and then it should be re-proposed in terms of how it fits in with this policy. If Bazel is accepted into the repository in
conformance with an existing policy that can be enforced, my misgivings would be lessened.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal"> Christopher Tetreault<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> *** Tier 1: the core compiler, which *must* work at all times.<o:p></o:p></p>
<p class="MsoNormal">> * Front-ends, back-ends, middle-ends, libraries, core APIs, official projects and tools.<o:p></o:p></p>
<p class="MsoNormal">> * The CMake build infrastructure.<o:p></o:p></p>
<p class="MsoNormal">> * Builds on all first class citizen combinations of targets x OSs. [2]<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> It must:<o:p></o:p></p>
<p class="MsoNormal">> * have noisy green bots<o:p></o:p></p>
<p class="MsoNormal">> * revert on failure policy<o:p></o:p></p>
<p class="MsoNormal">> * etc?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> *** Tier 2: side projects that integrate with the compiler and that *should* work at all times.<o:p></o:p></p>
<p class="MsoNormal">> * Experimental targets, infrastructure and APIs, non-default cmd-line options<o:p></o:p></p>
<p class="MsoNormal">> * Alternative build systems (ex. GN, Bazel)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I would suggest: that it *<b>must</b>* have a subcommunity that cares about it<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> It must not:<o:p></o:p></p>
<p class="MsoNormal">> * Break or hinder tier 1<o:p></o:p></p>
<p class="MsoNormal">> * Increase validation noise beyond its scope<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> It should:<o:p></o:p></p>
<p class="MsoNormal">> * Have green buildbots, handled by the sub-community that cares about it<o:p></o:p></p>
<p class="MsoNormal">> * Have notifications only to those interested when things break (avoid bitrot)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> Sub-communities that care about it *must* fix issues in them, but the rest of the community has no obligations to support it. Lack of maintenance *could* be subject to removal.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I would suggest: that lack of maintenance *<b>will</b>* be cause for removal. Perhaps a timetable should be stated? (“if it’s red for more than 1 month, it is subject to removal?”)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> *** Tier 3: miscellaneous accessories<o:p></o:p></p>
<p class="MsoNormal">> * Helper scripts, editor files, debugger scripts, etc.<o:p></o:p></p>
<p class="MsoNormal">> * Whatever is detached enough that bit rot is irrelevant<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It sounds to me like the basic difference between tier 2 and 3 is that tier 2 needs to have a (quiet) build bot, and tier 3 does not need a build bot? If so, we should state the requirement for a public build bot under tier 2.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> It must not:<o:p></o:p></p>
<p class="MsoNormal">> * Break or hinder tiers 1 or 2<o:p></o:p></p>
<p class="MsoNormal">> * Increase validation noise beyond its scope<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> It should:<o:p></o:p></p>
<p class="MsoNormal">> * Have a sub-community that cares about it and maintain it<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> Sub-communities that care about it *should* fix issues in them, but the rest of the community has no obligations to support it. Lack of maintenance *will* be subject to removal.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><b>From:</b> llvm-dev <llvm-dev-bounces@lists.llvm.org> <b>On Behalf Of
</b>Renato Golin via llvm-dev<br>
<b>Sent:</b> Friday, October 30, 2020 8:45 AM<br>
<b>To:</b> LLVM Dev <llvm-dev@lists.llvm.org><br>
<b>Subject:</b> [EXT] [llvm-dev] Policy on support tiers<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It seems the BAZEL[1] discussion is going round in circles and many have suggested we encode the policy on the tiers of support we want from the community.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">This is not what I think is the best, just what I have interpreted the "consensus" seems to think is the best. I may be completely wrong, please don't assume anything other than a faulty attempt at getting it right.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I tried to use different words like "must", "should", "could", "will", etc. to convey the right meaning, but I'm not a native English speaker, so feel free to tweak that to get the right balance.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Here it goes.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">*** Tier 1: the core compiler, which *must* work at all times.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Front-ends, back-ends, middle-ends, libraries, core APIs, official projects and tools.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * The CMake build infrastructure.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Builds on all first class citizen combinations of targets x OSs. [2]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Vim support (kidding!! :)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It must:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * have noisy green bots<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * revert on failure policy<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * etc?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">*** Tier 2: side projects that integrate with the compiler and that *should* work at all times.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Experimental targets, infrastructure and APIs, non-default cmd-line options<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Alternative build systems (ex. GN, Bazel)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It must not:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Break or hinder tier 1<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Increase validation noise beyond its scope<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It should:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Have green buildbots, handled by the sub-community that cares about it<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Have notifications only to those interested when things break (avoid bitrot)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Sub-communities that care about it *must* fix issues in them, but the rest of the community has no obligations to support it. Lack of maintenance *could* be subject to removal.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">*** Tier 3: miscellaneous accessories<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Helper scripts, editor files, debugger scripts, etc.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Whatever is detached enough that bit rot is irrelevant<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It must not:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Break or hinder tiers 1 or 2<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Increase validation noise beyond its scope<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It should:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> * Have a sub-community that cares about it and maintain it<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Sub-communities that care about it *should* fix issues in them, but the rest of the community has no obligations to support it. Lack of maintenance *will* be subject to removal.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">cheers,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">--renato<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">[1] <a href="http://lists.llvm.org/pipermail/llvm-dev/2020-October/146138.html">
http://lists.llvm.org/pipermail/llvm-dev/2020-October/146138.html</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">[2] Existing definition of "first-class", could be updated / moved here.<o:p></o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>