Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed Carbon roadmap for 2021 #253

Merged
merged 11 commits into from
Mar 13, 2021
Merged

Proposed Carbon roadmap for 2021 #253

merged 11 commits into from
Mar 13, 2021

Conversation

chandlerc
Copy link
Contributor

@chandlerc chandlerc commented Feb 3, 2021

This document tries to lay out a high-level roadmap for Carbon in 2021
following the roadmap process.

The initial draft of this was here:
https://docs.google.com/document/d/19ER9jKG0gXth063wdJIeSaegrO0P8Cye2SIdoVvlhrU/edit

Currently, the content is in a proposal. I'd also be happy to lift it to
live in its own document as part of the project documentation if people
prefer.

@chandlerc chandlerc added WIP proposal A proposal labels Feb 3, 2021
@google-cla google-cla bot added the cla: yes PR meets CLA requirements according to bot. label Feb 3, 2021
This document tries to lay out a high-level roadmap for Carbon in 2021
following the [roadmap process](/docs/project/roadmap_process.md).

The initial draft of this was here:
https://docs.google.com/document/d/19ER9jKG0gXth063wdJIeSaegrO0P8Cye2SIdoVvlhrU/edit

Currently, the content is in a proposal. I'd also be happy to lift it to
live in its own document as part of the project documentation if people
prefer.
proposals/p0253.md Outdated Show resolved Hide resolved
@chandlerc chandlerc requested a review from a team February 3, 2021 09:43
@chandlerc chandlerc added proposal rfc Proposal with request-for-comment sent out and removed WIP labels Feb 3, 2021
@chandlerc chandlerc changed the title 2021 Roadmap Proposed Carbon roadmap for 2021 Feb 3, 2021
@chandlerc
Copy link
Contributor Author

One comment that came up as @dabrahams and I were discussing this: it might be nice to add a lower resolution outline of likely subsequent (post-2021) goals to help telegraph where things are going.

@dabrahams
Copy link

dabrahams commented Feb 5, 2021 via email

@chandlerc
Copy link
Contributor Author

I just pushed a significant update to the wording here. Mostly, this tries to zoom in on the concrete things we want to achieve in 2021, and on the outcome of moving faster rather than the input of more resources being devoted to the project. Please take a look and let me know what you all think.

I've also added a high-level outline of what the longer term path might look like to help contextualize, etc.

@dabrahams also suggested:

I also think it's crucial that (soon, but not immediately) we have a higher resolution outline of intermediate goals during 2021.

Do you have any suggestions on where / how you'd like to see something like this? The wording rework has focused some on the concrete things, but it hasn't really added more resolution.

proposals/p0253.md Outdated Show resolved Hide resolved
proposals/p0253.md Outdated Show resolved Hide resolved
Copy link
Contributor Author

@chandlerc chandlerc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review comments and suggestions, I think I've updated to address these, PTAL!

proposals/p0253.md Outdated Show resolved Hide resolved
proposals/p0253.md Outdated Show resolved Hide resolved
proposals/p0253.md Show resolved Hide resolved

- Increase the investment by existing individuals and organizations.
- Increase the breadth of different individuals and organizations investing in
Carbon.
Copy link

@dabrahams dabrahams Feb 12, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know if something like this belongs here or in a different section, but I think we need some way to quantify what it means to "speed up development." Neither of the above two bullets correspond in any obvious way to development speed.

Suggested change
Carbon.
Carbon.
- Establish some statistics that serve as approximate measurement of progress (e.g. the number of distinct tests in executable semantics).
- Establish development rhythm and process that results in steady progress by that measurement.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think increasing the effort invested in Carbon does correspond somewhat with speed?

But to be clear, all of these are directional goals, not concrete outcomes. I feel like what you're suggesting are concrete outcomes and so don't really fit here.

I somewhat prefer the higher level outcomes we have below, which I don't think are achievable without a significant increase in speed, and I think also will unblock further improvements (by unblocking further increases in investment).

proposals/p0253.md Outdated Show resolved Hide resolved
that we are including as broad and representative a set of perspectives in the
evolution of Carbon as possible.

### Example ports of C libraries to Carbon (100% of [woff2](https://github.com/google/woff2), 99% of [RE2](https://github.com/google/re2))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it a problem that our ports only address code written to follow Google's coding standard?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure how much of Google's coding standards woff2 really follows...

But generally, while we have one or two I think we'll have lots of weaknesses. Long term, we should add more here.

One suggestion was made in discussion to add some of the HPC community's canonical benchmarks. I don't know what those are or what the exact link is, but would love to have additions to this list maybe from @dhollman ?

Stretch goals if we can hit the above:

- Automatic code formatter on top of the implementation infrastructure.
- A compiler explorer fork with REPL integrated.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know what a "compiler explorer fork" means; I suggest clarifying or omitting this bullet.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A fork of http://compiler-explorer.com -- I've linked the text.

Instead, it should focus on letting us track large/high-level impact on
different phases as they are developed or features are added. They may also help
illustrate initial high-level performance characteristics of the implementation,
but the long term focus should be on end-to-end user metrics.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't believe generating executable code is even important at this stage. Capturing all the semantics in the executable semantics interpreter and having a plausible compilation strategy should be enough.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This came up in some in-person discussions, but to relay here I really think we need to have a reasonable demo as early as possible to help reset people's ingrained assumptions around both how fast compilation / tooling can be as well as how complex the compiler ultimately will be.

implementation. The intent is to reflect that _completing_ coverage of the
features in the specification is a slightly lower priority, and instead we
should rapidly spike out as complete of a demo as possible and come back to the
semantics if possible.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would strongly encourage inverting this philosophy. IMO the demo should be the executable semantic specification. There's no reason a demo needs to be fast in the first year. If we know what our design means, producing executable code, linking, and optimizing is a somewhat mechanical process. If we emphasize “real tooling” over something that corresponds to a specification, I worry we will invest a great deal of energy in layers of the system that aren't needed in order to prove that we can create a migration and interop path, which will slow progress, and that we will never end up with an accurate specification.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See above -- I still feel fairly strongly about the need to have a "real" demo.

@chandlerc
Copy link
Contributor Author

(And found a suggestions that I missed when reading -- thanks Jon!)

@jonmeow jonmeow added needs decision and removed proposal rfc Proposal with request-for-comment sent out comment deadline labels Mar 2, 2021
@mmdriley mmdriley added proposal accepted Decision made, proposal accepted and removed needs decision labels Mar 10, 2021
@mmdriley mmdriley mentioned this pull request Mar 10, 2021
@chandlerc chandlerc requested a review from a team March 13, 2021 03:07
@chandlerc chandlerc merged commit 81ce0bd into carbon-language:trunk Mar 13, 2021
@chandlerc chandlerc deleted the roadmap-2021 branch March 13, 2021 03:28
mmdriley added a commit that referenced this pull request Mar 22, 2021
jonmeow added a commit that referenced this pull request May 14, 2021
Co-authored-by: Chandler Carruth <[email protected]>
chandlerc added a commit that referenced this pull request Jun 28, 2022
This document tries to lay out a high-level roadmap for Carbon in 2021
following the [roadmap process](/docs/project/roadmap_process.md).

Co-authored-by: Dave Abrahams <[email protected]>
chandlerc pushed a commit that referenced this pull request Jun 28, 2022
chandlerc added a commit that referenced this pull request Jun 28, 2022
Co-authored-by: Chandler Carruth <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla: yes PR meets CLA requirements according to bot. proposal accepted Decision made, proposal accepted proposal A proposal
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants