<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=us-ascii">
<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:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        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="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">The agenda that was in the telecon will come in a later email, here&#8217;s the minutes.&nbsp; Note that some people that couldn&#8217;t make the meeting have been assigned homework.&nbsp; Many thanks to Tom for taking minutes today!<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">===============================<o:p></o:p></p>
<p class="MsoNormal">Tom's notes<o:p></o:p></p>
<p class="MsoNormal">===============================<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Attendees:<o:p></o:p></p>
<p class="MsoNormal">- Anna Gringauze (AG)<o:p></o:p></p>
<p class="MsoNormal">- Ben Boeckel (BB)<o:p></o:p></p>
<p class="MsoNormal">- Ben Craig (BC)<o:p></o:p></p>
<p class="MsoNormal">- Bruno Cardoso Lopes (BCL)<o:p></o:p></p>
<p class="MsoNormal">- Colby Pike (CP)<o:p></o:p></p>
<p class="MsoNormal">- Gor Nishanov (GN)<o:p></o:p></p>
<p class="MsoNormal">- JF Bastien (JF)<o:p></o:p></p>
<p class="MsoNormal">- Mark Zeren (MZ)<o:p></o:p></p>
<p class="MsoNormal">- Mathew Woehlke (MW)<o:p></o:p></p>
<p class="MsoNormal">- Mathias Stern (MS)<o:p></o:p></p>
<p class="MsoNormal">- Michael Spencer (MSp)<o:p></o:p></p>
<p class="MsoNormal">- Nathan Sidwell (NS)<o:p></o:p></p>
<p class="MsoNormal">- Olga Arkhipova (OA)<o:p></o:p></p>
<p class="MsoNormal">- Peter Bindels (PB)<o:p></o:p></p>
<p class="MsoNormal">- Rene Rivera (RR)<o:p></o:p></p>
<p class="MsoNormal">- Steve Downey (SD)<o:p></o:p></p>
<p class="MsoNormal">- Stephen Kelly (SK)<o:p></o:p></p>
<p class="MsoNormal">- Tom Honermann (TH)<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">BC: Introduces agenda; agreement on the outline of the TR; get volunteers; minimal tech talk.<o:p></o:p></p>
<p class="MsoNormal">BC: Any objection to the findings as an outline?<o:p></o:p></p>
<p class="MsoNormal">JF: Need to base this on code at some point.&nbsp; Would like to see a code base that uses modules and multiple build systems.&nbsp; We can talk all day about theoretical concerns, but need to base work on reality.<o:p></o:p></p>
<p class="MsoNormal">BC: As an example, modularize Boost?<o:p></o:p></p>
<p class="MsoNormal">JF: Need to focus on applications.<o:p></o:p></p>
<p class="MsoNormal">BC: Need to distinguish modularizing a library and consuming a library.<o:p></o:p></p>
<p class="MsoNormal">PB: Perhaps try the kitchen sink example from CopperSpice?<o:p></o:p></p>
<p class="MsoNormal">TH: JF, do you want real projects or exemplary projects?<o:p></o:p></p>
<p class="MsoNormal">JF: Real projects.<o:p></o:p></p>
<p class="MsoNormal">SD: Don't think we need really real projects, just exemplary ones. POSIX demonstrates how to do compiles, link; use case oriented.<o:p></o:p></p>
<p class="MsoNormal">TH: Agree, and it would be nice to have examples in the TR demonstrating usage.<o:p></o:p></p>
<p class="MsoNormal">BC: Bryce has a hello world with modules that could be an example in the TR.<o:p></o:p></p>
<p class="MsoNormal">PB: I volunteer to make a hello world example.<o:p></o:p></p>
<p class="MsoNormal">BC: Back to the outline, who is working on what?&nbsp; Corentin and PB are working on module mapping?<o:p></o:p></p>
<p class="MsoNormal">PB: We have P1484.<o:p></o:p></p>
<p class="MsoNormal">MS: I volunteer to help with module mapping.<o:p></o:p></p>
<p class="MsoNormal">TH: Which aspect of module mapping are we discussing here?<o:p></o:p></p>
<p class="MsoNormal">PB: Mapping to source.<o:p></o:p></p>
<p class="MsoNormal">MS: Also want mapping to BMIs.<o:p></o:p></p>
<p class="MsoNormal">BC: Sounds like this covers mapping to source, BMI, and indication of header units.<o:p></o:p></p>
<p class="MsoNormal">BC: Michael Spencer is working on dependency scanning.&nbsp; So is Ben Boeckel. &nbsp;Can I record them as volunteers to work on this?<o:p></o:p></p>
<p class="MsoNormal">MSp: Yes.<o:p></o:p></p>
<p class="MsoNormal">JF: Dependency scanning is part of build system implementation. What is the goal of discussing dependency scanning (and other features we're<o:p></o:p></p>
<p class="MsoNormal">discussing) as part of the TR?<o:p></o:p></p>
<p class="MsoNormal">MS: It is a contract between stakeholders.<o:p></o:p></p>
<p class="MsoNormal">TH: Not concerned about implementation details; concerned about ensuring meta data is represented in ways usable by multiple tools, buld systems, etc..<o:p></o:p></p>
<p class="MsoNormal">MSp: The best/fastest way to build modules are relevant for implementation.<o:p></o:p></p>
<p class="MsoNormal">PB: Perhaps worth discussing trade offs between fast and accurate?<o:p></o:p></p>
<p class="MsoNormal">MS: Let's take inaccurate off the table.<o:p></o:p></p>
<p class="MsoNormal">BC: Moving on to build performance, can I sign Rene and Mathias up for that?<o:p></o:p></p>
<p class="MsoNormal">MS: Yes, questions to address: can BMI and object files be built concurrently?&nbsp; What gets built and how?&nbsp; These are worth researching.<o:p></o:p></p>
<p class="MsoNormal">RR: Happy to work on performance related issues and testing. There is a chicken/egg problem of needing working compilers.&nbsp; We can't tackle distributed builds without additional work.<o:p></o:p></p>
<p class="MsoNormal">MS: Would like feedback on how reasonable it is to look at performance of current compiler incarnations.<o:p></o:p></p>
<p class="MsoNormal">NS: In three years time, performance profile will probably be quite different; focus now is correctness, not speed.<o:p></o:p></p>
<p class="MsoNormal">MSp: Clang has some inefficiencies around finding modules now.&nbsp; I think overhead of modules will go down over time.&nbsp; Dependencies will remain.<o:p></o:p></p>
<p class="MsoNormal">MS: Wondering about relative performance, scanning vs code gen vs BMI gen, etc...&nbsp; Perhaps a TR2 would be a good focus for performance.<o:p></o:p></p>
<p class="MsoNormal">MSp: Some performance sensitive things will change, some things won't.<o:p></o:p></p>
<p class="MsoNormal">BC: Looking at code base transition path now.&nbsp; BC volunteers.<o:p></o:p></p>
<p class="MsoNormal">TH: Interested in transition path.<o:p></o:p></p>
<p class="MsoNormal">SK: Also interested.<o:p></o:p></p>
<p class="MsoNormal">SD: Also interested.&nbsp; Will bring a Lacos and Bloomberg informed focus.<o:p></o:p></p>
<p class="MsoNormal">BC: Olga, will you sign up for BMI distribution?<o:p></o:p></p>
<p class="MsoNormal">OA: Yes.&nbsp; We've had internal discussions about sharing BMIs.<o:p></o:p></p>
<p class="MsoNormal">BCL: Volunteers to work on BMI distribution as well.<o:p></o:p></p>
<p class="MsoNormal">SD: This overlaps with sharing of object files as well.&nbsp; What is the range of IFNDR when sharing BMIs?&nbsp; If a BMI isn't suitable, how does it get recompiled.<o:p></o:p></p>
<p class="MsoNormal">TH: Is MSp interested in volunteering with regard to BMI distribution?<o:p></o:p></p>
<p class="MsoNormal">JF: We can volunteer to write a section that says &quot;don't&quot;.<o:p></o:p></p>
<p class="MsoNormal">BC: I don't think we should have a section that raises questions for all stackeholders.&nbsp; Instead, each area under findings should raise questions and explore them from the standpoint of each stakeholder.<o:p></o:p></p>
<p class="MsoNormal">MS: I agree, though not particularly productive to discuss now until we have stuff to put in the doc.<o:p></o:p></p>
<p class="MsoNormal">BC: Makes sense.<o:p></o:p></p>
<p class="MsoNormal">BC: PB volunteered for hello world, volunteers for distributed build?<o:p></o:p></p>
<p class="MsoNormal">MS: I volunteer.&nbsp; Would be nice to have someone from Google due to difference in approaches.<o:p></o:p></p>
<p class="MsoNormal">GN: Volunteers Gaby to contribute to hello world examples.<o:p></o:p></p>
<p class="MsoNormal">BC: Would like to sign up Gaby for explicit module dependencies as the Microsoft Edge team purportedly used them.<o:p></o:p></p>
<p class="MsoNormal">MS: Do we want to encourage explicit module dependencies?<o:p></o:p></p>
<p class="MsoNormal">??: No.<o:p></o:p></p>
<p class="MsoNormal">TH: Matches existing PCH usage in Microsoft ecosystems.<o:p></o:p></p>
<p class="MsoNormal">BC: We should discuss.<o:p></o:p></p>
<p class="MsoNormal">OA: For dependency scanning, we are planning to do work to support this, but haven't started yet.&nbsp; Mixed mode dependency scanning and explicit dependencies may happen.<o:p></o:p></p>
<p class="MsoNormal">BC: Moving on to header only libraries.&nbsp; Done today to avoid build system pain.&nbsp; Any volunteers?<o:p></o:p></p>
<p class="MsoNormal">PB: Catch2 considering moving away from header-only for technical reasons (e.g., build speed).<o:p></o:p></p>
<p class="MsoNormal">BC: No volunteers for header-only.<o:p></o:p></p>
<p class="MsoNormal">BC: Volunteers for incremental-build?&nbsp; Kind of inherent to builds in general...<o:p></o:p></p>
<p class="MsoNormal">MS: I volunteer to writeup something for incremental builds.<o:p></o:p></p>
<p class="MsoNormal">BC: On to building BMIs for tooling consumption.<o:p></o:p></p>
<p class="MsoNormal">OA: I work on static analysis, so interested in special tools.<o:p></o:p></p>
<p class="MsoNormal">Interested in saving information useful for tools in BMIs.<o:p></o:p></p>
<p class="MsoNormal">TH: Will contribute to discussion on sharing BMIs across compilers/tools.<o:p></o:p></p>
<p class="MsoNormal">BC: No assignments for module naming, module granularity, BMI configuration.&nbsp; Got the rest.&nbsp; Stakeholders to be covered on a per item basis.<o:p></o:p></p>
<p class="MsoNormal">TH: Perhaps next meeting we can have everyone vote about their highest priority concerns to be addressed in the TR.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">===============================<o:p></o:p></p>
<p class="MsoNormal">Ben's notes<o:p></o:p></p>
<p class="MsoNormal">===============================<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Possibly interleave findings and guidance?<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Need concrete code base / code bases, need multiple concrete build systems<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Tie things to specific examples<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For multiple stakeholders, use cases<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Kitchen Sink CopperSpice example?<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Peter Bindels &#43; Gaby: Volunteering for hello world with modules section<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Corentin Jabot, Peter Bindels, Mathias Stearn: Module Mapping P1484<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; mapping to source files.&nbsp; mapping to BMI.&nbsp; Where to find a header unit<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Michael Spencer and Ben Boeckel: Dependency Scanning<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; What we've found, and what others might want to do.&nbsp; This is from the impl's perspective.<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Does the &quot;can we make it fast?&quot; belong in the TR?<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Mathias Stearn &#43; Rene Rivera: Build Performance?<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Can't get recommendations yet based off of current work<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Different models of building?&nbsp; Concurrent BMI and .o vs. distinct builds.&nbsp; Needs research<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Chicken and Egg<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Ben Craig &#43; Tom Honermann &#43; Steve Downey &#43; Stephen Kelly: Codebase Transition Path<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Olga Arkhipova &#43; Bruno Cardoso Lopes (maybe?): BMI Distribution<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Mathias &#43; Ben &#43; Googler TBD: Distributed build<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Microsoft (Gaby &#43; Olga): Dependency scanning vs explicit module dependencies build<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Michael Spencer: Incremental Builds (information on performance and build theory)<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Anna Gringauze, Tom Honermann: Building BMIs only for tooling consumption:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Probably going to look at source.&nbsp; Explain how tools are different from compilers.<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Sharing BMIs between compilers and tools.<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Bruno Cardoso Lopes (maybe?): BMI Configuration:<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">TBD:<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Header only library<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Module Naming<o:p></o:p></p>
<p class="MsoNormal">&nbsp;&nbsp; Module Granularity<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Stakeholders to be covered on a per item basis<o:p></o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<p class="MsoNormal">Hope that another meeting we can establish priorities<o:p></o:p></p>
</div>
</body>
</html>