<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<meta name ="description" content="Mark the Library Fundamentals project as complete"/>
<meta name ="keywords" content="C++,cplusplus,wg21,LEWG<Library Fundamentals,Technical Specification,TS"/>
<meta name ="author" content="Alisdair Meredith"/>

<title>No Further Fundamentals TSes</title>

<style>

    ins {background-color:#A0FFA0}
    del {background-color:#FFA0A0}
    p   {text-align:justify}
    li  {text-align:justify}

    blockquote.note {
        background-color:#E0E0E0;
        padding-left: 15px; padding-right: 15px;
        padding-top:   1px; padding-bottom: 1px;
    }

    blockquote.recommend {
        background-color:#ffffb0;
        padding-left: 10px; padding-right: 10px;
        padding-top: 1px; padding-bottom: 1px;
    }

    blockquote.review {
        background-color:#c8ffc8;
        padding-left: 10px; padding-right: 10px;
        padding-top: 1px; padding-bottom: 1px;
    }

    blockquote.review_note {
        background-color:#ffffcc;
        padding-left: 15px; padding-right: 15px;
        padding-top: 1px; padding-bottom: 1px;
    }

    blockquote.draft_wording {
        background-color:#f8f8f8;
        padding-left: 15px; padding-right: 15px;
        padding-top: 1px; padding-bottom: 1px;
    }

    blockquote.old_wording {
        background-color:#f8f0f0;
        padding-left: 15px; padding-right: 15px;
        padding-top: 1px; padding-bottom: 1px;
    }

    blockquote.proposed_wording {
        background-color:#f8f8e8;
        padding-left: 15px; padding-right: 15px;
        padding-top: 1px; padding-bottom: 1px;
    }

    tr:nth-child(even) {background-color: #f2f2f2;}

    table.poll tr {background-color: #fcfcfc; text-align:center;}
    table.poll td {width: 20%;}
</style>
</head>

<body>
<table>
  <tr>
    <td>Doc. no.</td>
    <td>P2708R1</td>
  </tr>
  <tr>
    <td>Date:</td>
    <td>2022-11-10</td>
  </tr>
  <tr>
    <td>Project:</td>
    <td>Programming Language C++</td>
  </tr>
  <tr>
    <td>Audience:</td>
    <td>LWG</td>
  </tr>
  <tr>
    <td>Reply to:</td>
    <td>
      Alisdair Meredith
      &lt;<a href="mailto:ameredith1@bloomberg.net">ameredith1@bloomberg.net</a>&gt;
    </td>
  </tr>
  <tr>
    <td> </td>
    <td>
      Bryce Adelstein Lelbach
      &lt;<a href="mailto:brycelelbach@gmail.com">brycelelbach@gmail.com</a>&gt;
    </td>
  </tr>
  <tr>
    <td> </td>
    <td>
      Nevin Liber
      &lt;<a href="mailto:nliber@anl.gov">nliber@anl.gov</a>&gt;
    </td>
  </tr>
  <tr>
    <td> </td>
    <td>
      Fabio Fracassi
      &lt;<a href="mailto:f.fracassi@gmx.net">f.fracassi@gmx.net</a>&gt;
    </td>
  </tr>
  <tr>
    <td> </td>
    <td>
      Ben Craig
      &lt;<a href="mailto:ben.craig@gmail.com">ben.craig@gmail.com</a>&gt;
    </td>
  </tr>
</table>

<h1>No Further Fundamentals TSes</h1>

<h2>Table of Contents</h2>
<ul>
<li>
  <a href="#rev.hist">Revision History</a>
  <ul>
  <li>
    <a href="#rev.0">Original</a>
  </li>
  <li>
    <a href="#rev.1">Revision 1</a>
  </li>
  </ul>
</li>
</ul>

<ol class="index">
<li>
  <a href="#1.0">Rationale</a>
</li>
<li>
  <a href="#2.0">Formal Wording</a>
</li>
<li>
  <a href="#3.0">References</a>
</li>
</ol>

<h2 class="uncounted" id="rev.hist">Revision History</a></h2>

<h3 id="rev.0">Original</a></h3>
<p>
Original version of the paper as reviewed by LEWG in Kona, 2022.
</p>

<h3 id="rev.1">Revision 1</a></h3>
<p>
Update reviewed by LEWG in Kona, 2022.
</p>
<ul>
  <li>Added more authors, and a rationale for the change.</li>
</ul>



<h2 id="1.0">1 Rationale</h2>
<p>
The original inspiration for the Library Fundamentals Technical Specification
was to create a testing ground that run through the process rapidly, enabling
us to evaluate and standardize libraries with more confidence.  This direction
was chosen shortly after C++11 was finally published after an 8 year
development cycle, and we did not want to risk such long delays evaluating
future libraries.
</p>

<p>
Since the first TS was commissioned, we have adopted the <em>train model</em>
for delivering C++ standards, and have now established a reliable cadence of
publishing a new standard every 3 years.  The concern of a slow release
schedule has been mitigated.
</p>

<p>
Meanwhile, in practice, the work to deliver a feature into the Library
Fundamentals TS has been no less than adopting a feature into the main
standard.  The Library Fundamentals TS is generally seen as lower priority
than the standard when allocating committee time, so Fundamentals libraries
are often delayed as a result of our TS process.
</p>

<p>
Further, now that we are familiar with the train model release cycle, we are
more confident in adopting proposals directly into the standard.  This is a
different committee culture than that which delivered the early standards.
</p>

<p>
Looking forward, the consensus of the Library Evolution Working Group is that
we do not intend to send further proposals to a general purpose TS like Library
Fundamentals, but will standardize with confidence.
</p>

<p>
This proposal makes clear the intent that no more Library Fundamentals TSes are
planned, and updates Library Fundamentals v3 to make this clear, so that we do
not suggest intent that we are not going to follow through on.
</p>

<h2 id="2.0">2 Proposed Wording</h2>

<p>
Make the following edit to the library fundamentals TS draft:
</p>

<blockquote class="proposed_wording">
<h4>1.4 Future plans (Informative) [general.plans]</h4>
<p>
This section describes tentative plans for future versions of this technical
specification and plans for moving content into future versions of the C++
Standard.
</p>

<p>
<del>The C++ committee intends to release new versions of this technical
specification periodically, containing the library extensions we hope to add to
a near-future version of the C++ Standard. F</del>
<ins>
This is the last in a series of revisions of this technical specification 
planned by the C++ committee; while there are no plans to resume the series, any
f</ins>uture versions will define their contents in
<code>std::experimental::fundamentals_v4</code>,
<code>std::experimental::fundamentals_v5</code>, etc., with the most recent
implemented version inlined into std::experimental.
</p>

<p>
When an extension defined in this or a future version of this technical
specification represents enough existing practice, it will be moved into the
next version of the C++ Standard by removing the
<code>experimental::fundamentals_vN</code> segment of its namespace and by
removing the experimental/ prefix from its header's path.
</p>
</blockquote>

<h2 id="3.0">3 References</h2>
<ul>
  <li>
<a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4920">N4920</a>
Working Draft, C++ Extensions for Library Fundamentals, Version 3,
Thomas Köppe
  </li>
</ul>
<body>
</html>
