Commit Graph
59 Commits
Author SHA1 Message Date
Dave Abrahams 4383b9fd92 Doc: make tools needed by tests required/add validation check 2021-02-26 13:15:05 -08:00
Jon Meow 23009d3b06 Stop using 'Review manager requests', adjust some minor advice bits. (#293) 2021-02-25 11:15:13 -08:00
Jon MeowandChandler Carruth 50fa120c87 Add style guideline for using std::foo; (#263)
Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
2021-02-22 10:38:54 -08:00
Jon Meow 6e5070de18 Adapting jsiek's executable semantics tooling for commit. (#237)
Notes versus what jsiek wrote:

- This adopts Bazel for building.
    - System-local versions of bison/flex are used. I found https://github.com/jmillikin/rules_bison, but those print a lot of warnings (things like -Wsign-compare IIRC) which makes builds hard to read. Plus I think the underlying bison_cc_library rule didn't work, so this would really only get a hermetic bison/flex build (helpful, but didn't seem worth more time).
    - I'm adding in a .bazeliskrc to push a somewhat more standard choice of bazel versions. I noticed I was getting unstable versions by default, possible Google-specific, but seemed good to include.
    - The `-lpthread` kludge.
- Turn all of the examples into golden tests.
    - Including adding a golden test rule.
- Fixed various style guide issues. For example:
    - Fixing function names to be CamelCase instead of snake_case (https://google.github.io/styleguide/cppguide.html#Function_Names)
    - Removed exception use (https://google.github.io/styleguide/cppguide.html#Exceptions)
    - File name fixes (https://github.com/carbon-language/carbon-lang/blob/trunk/docs/project/cpp_style_guide.md#file-names)
- Dropped `using` of `std` names -- I believe this is preferred (maybe we should be explicit about this in the Carbon style guide)
- Switched `enum` uses to `enum class` for ease-of-identification.
- Spent some time breaking out files to hopefully be easier to read/edit pieces, and understand relations between structs.
- Added `code requires` to `syntax.ypp` to address include issues

Possibly other things -- but the fundamental structure is, I believe, unchanged. I put in the golden tests pretty early to ensure I wasn't mutating output/results.
2021-02-19 15:25:43 -08:00
Jon Meow 7a1abddb4f Clarify code review applies to docs in CONTRIBUTING (#262)
And add note about rebasing issues
2021-02-10 10:36:36 -08:00
Jon MeowandChandler Carruth f58e5da827 Modify clang detection to build clang (#261)
Per chandlerc's comment:

First, this builds inside the Bazel tree rather than in the source
repository. This ensures we start in a clean directory each time the
repository rule is run again. We don't need to detect an existing build
with this, and it will only be rebuilt when the workspace file or the
repository rule implementation is changed. This can be forced by using:
```
bazel sync --configure
```

Second, we use an implicit dependency on the `WORKSPACE` file to locate
the workspace directory automatically, and the `HEAD` file from the
`llvm-project` submodule to trigger a rebuild if the submodule is
updated.

Third, teach the CMake script to try to use a system-installed `clang`
if installed and not overridden by the `CC` environment variable. This
is very different from the prior logic -- this is only used with the
CMake build, and so should work with any system C++ compiler that can
build Clang and LLVM.

Lastly, this tweaks the CMake options to tune this build given that we
now fully control it and it will only be used in this context. This
still results in a 1.5gb build for me. =/ But its as small as I can make
it really. It's a frustrating long list, but I couldn't find a more
brief way of representing this.

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
2021-02-08 17:17:58 -08:00
Jon Meow 299e5e2f83 Remove text about creating open question issues without a decision. (#247)
This isn't reflected in the above text, not sure how it managed to remain. There is still a note about filing issues for open questions at https://github.com/carbon-language/carbon-lang/blob/trunk/docs/project/consensus_decision_making.md#formal-decision-content, but I think it's much clearer when it's part of the core team's decision, rather than during proposal iteration.
2021-02-08 16:16:28 -08:00
Jon Meow b24e694ba2 Flesh out advice on package managers, add fsmonitor/ninja. (#246) 2021-02-05 16:26:03 -08:00
Jon Meow efef7cae16 Detect if there's a built version of clang within the workspace (#260) 2021-02-05 15:15:51 -08:00
Matt Godbolt 769c6b4c01 Update path for llvm-project (#255) 2021-02-05 14:37:17 -08:00
Matthew Riley d1f4b15aab Use new name for "Google Meet" (#241)
https://www.theverge.com/2020/4/8/21214059/google-hangouts-meet-rebrand-video-chat-conferencing
2021-01-27 20:12:53 -08:00
Matthew Riley c2ec084d07 Add mmdriley as review manager (#242)
As discussed at https://forums.carbon-lang.dev/t/looking-for-additional-review-managers
2021-01-27 20:12:25 -08:00
Jon Meow 6ba2f5851c Document more tools (#240)
- bazel/bazelisk because it's kinda needed
- buildifier per #236 
- Clang/LLVM I know a number of people are familiar with, but I wasn't...
- `go get` and `pip` because it's feeling more and more appropriate to separate out package managers vs other tools
2021-01-27 09:51:11 -08:00
5db229afc6 Create an implementation team. (#179)
Create a team to oversee the implementation of Carbon. This team is
responsible for code reviews as well as handling any implementation-specific
decisions.

Originally, it was suggested to call this a "toolchain" team. During
discussion, it became clear that the scope wasn't easily limited to
implementation efforts that were necessarily part of the toolchain. There are
many different aspects of implementation, and we anticipate code sharing
between them that make it unhelpful to try to separate these. Instead, this
team is chartered with broadly covering all of the implementation concerns in
Carbon. If someone is concerned that an issue is larger than that, perhaps
impacting the design of the language, the project, or the community, the
standard process already provides for easy escalation to the core team.

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
Co-authored-by: austern <austern@google.com>
Co-authored-by: Geoff Romer <gromer@google.com>
2021-01-16 16:06:39 -08:00
Chandler Carruth 79ad0bf228 Make the rules for braces on ifs and loops simpler and more strict. (#194)
This simply requires braces and doesn't allow single-line `if`s. There
is some minor readability loss here, but it seems minor and provides
extremely simple rules which I'd value.

I can also trivially get clang-tidy to both check for this and
automatically fix code to conform.

Just sending this as a code review as it seems fully in the direction of
the style guide approved by the core team and I've heard no real
objections. That said, if anyone is concerned, I'm happy to take it
through the proposal process.
2020-12-02 20:07:13 -08:00
Jon Meow cc4211442f Merge carbon-project-tools back into carbon-lang (#203)
As proposed at https://forums.carbon-lang.dev/t/merged-repo-structure/174:

- carbon-lang:/src/jekyll -> carbon-lang:/website/jekyll
- carbon-lang:/src/scripts -> carbon-lang:/proposals/scripts
- carbon-project-tools:/firebase -> carbon-lang:/website/firebase
- carbon-project-tools:/github -> carbon-lang:/github
2020-12-02 09:53:14 -08:00
Bryce Adelstein Lelbach aka wash b8750e6c4b Criteria for Carbon to go public (#63)
- [Google Doc](https://docs.google.com/document/d/1Uir4sc1HuT5pOzRrFDnbuClzSYBEwE2Unbabr28e8iw/edit)
- [Ideas](https://forums.carbon-lang.dev/t/going-public-doc/139)
- [RFC](https://forums.carbon-lang.dev/t/rfc-criteria-for-carbon-to-go-public/146)
- [Decision announcement](https://forums.carbon-lang.dev/t/accepted-criteria-for-carbon-to-go-public/167)
2020-11-17 14:13:46 -08:00
Jon Meow 79a9b51d07 Update pre-commits, add and address flake8 (#195)
Adopts new copyright and markdown toc checks.

The new toc check generates the toc header, so that's why all the md files changed (this had felt better to me for the long-term, more auto-generated content)
2020-11-13 16:34:23 -08:00
f44cf22924 Add a C++ style guide for the project (#113)
When writing C++ code for Carbon, we want to keep all of our code consistent,
easy to learn, and help avoid spending undue code review time arguing about
the same core style and idiomatic issues.

This adopts the Google C++ style guide as a baseline, and then makes minimal,
focused additions and adjustments to it to suit the needs of Carbon.

Co-authored-by: Thomas Köppe <tkoeppe@google.com>
Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
Co-authored-by: Geoff Romer <gromer@google.com>
Co-authored-by: Richard Smith <richard@metafoo.co.uk>
Co-authored-by: austern <austern@google.com>
Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>
2020-11-13 00:49:54 -08:00
Jon Meow 94e065d9d2 Automated fixes using check-google-doc-style (#193)
With one manual ignore in the markdown style proposal, because it's explicitly listing disallowed terms.
2020-11-12 10:31:26 -08:00
Richard Smith 2078b8d095 Fix pyenv version number syntax (#182) 2020-10-27 18:59:19 -07:00
Jon Meow 5676765375 Pre-commit fix (#180)
Issue introduced by #48
2020-10-27 11:08:27 -07:00
1b434896b2 Add a workflow to support stacked pull requests. (#48)
There is limited direct or obvious support for working with a stack of
dependent pull requests with clean code review of each incremental
change.

Carbon needs to support high-latency asynchronous code review due to
timezones, schedule differences (especially in an open source project),
and the delays imposed by our proposal process. To this end we need some
solution for doing stacked pull requests with a reasonable code review
experience. This suggests a compromise flow that seems to minimize the
costs of doing this.

Co-authored-by: josh11b <josh11b@users.noreply.github.com>
Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>
Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
Co-authored-by: austern <austern@google.com>
2020-10-24 19:17:50 -07:00
Chandler Carruth 2ebf7ca0a0 Address a TODO by linking to the code review document. (#177)
The pull request workflow was supposed to connect to the review guidance
anyways, but the link hadn't been added.

Also adds a TOC to the pull request workflow document as it was missing
one.
2020-10-20 18:32:12 -07:00
Jon Meow 800e87efcf Moving github scripts to carbon-project-tools (#170) 2020-10-09 10:21:10 -07:00
Jon Meow a768b0ee19 Adjust copyrights based on carbon-project-tools/#3 (#171) 2020-10-09 10:18:06 -07:00
Chandler Carruth 630311c6ae Create code review guidelines (#42)
Carbon needs a strong code review process to handle code (and other)
changes that are not significant proposals. This attempts to provide
clear guidance on the process, structure, and scope of code review.
It also gives detailed guidance on how to effectively do code review
for both reviewers and authors.

This proposal was accepted on 2020-08-04.
2020-08-27 02:05:40 -07:00
Jon Meow 1e7aba7391 Add idiomatic code performance and developer-facing docs to goals (#120)
- [RFC topic](https://forums.carbon-lang.dev/t/rfc-add-idiomatic-code-performance-and-developer-facing-docs-to-goals/105)
- [Decision](https://forums.carbon-lang.dev/t/request-for-decision-add-idiomatic-code-performance-and-developer-facing-docs-to-goals/116)

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
Co-authored-by: Geoff Romer <gromer@google.com>
Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>

Most of this is addressing issue #106.

Two new explicit sub-goals:

- Idiomatic code should be performant, stemming from #106.
- User-facing documentation, separate thought from #83 discussion.

I think both of these are on people's minds and assumed, but still worth spelling out.
2020-08-20 15:26:58 -07:00
Jon Meow c0403cf82d Add more setup instructions for various tools (#138)
This was mainly to document pyenv/python, but I figured I'd note a few other things while I was in here.
2020-08-18 08:34:33 -07:00
Jon Meow e9130a29e9 Use _ consistently in filenames (#135)
This had been causing me issues when writing a test for pr-comments.py, which I then renamed so that I could import. It's had me mulling that I should really write tests for other scripts, but the name gets in the way.

The decision files are just an exception, so trying to reach consistency.
2020-08-18 08:32:23 -07:00
Jon Meow b8be334ab3 Brushing up review manager docs. (#119)
- Add mentions of new "comment deadline" label.
- Link to review manager doc from evolution doc.
- Standardize evolution doc on "topic" instead of "forum topic" (use was mixed).
2020-07-30 11:05:14 -07:00
Jon Meow be116a46c9 Adjust md tab width to work better cross-markdown-parser (#124)
We're running into issues with md handlers that expect this kind of 4-space indent. It should be cross-compatible with GH, so switch, even though it feels a little churny.

Manual edits are to:

- .prettierrc.yaml:
    - rename from .prettierrc
    - add tabWidth (primary change)
    - add trailingComma (fix vimPrettier skew)
- contribution_tools.md: Fix remarks about .prettierrc.yaml
- pre-commit-toc.js: indent, bullets
- pre-commit-proposal-list.py: indent of output

The rest is the result of `pre-commit run --all-files`

Unfortunately this'll probably depend on the change being propagated into PR branches, so I wouldn't be surprised if we see regressions for a bit. We'll also need to nudge people to update .vimrc's. Hopefully the pre-commit GH action helps catch issues.
2020-07-27 10:47:38 -07:00
George Kulakowski ba7d7c3c0e Fix the spelling of 'hardware' (#123) 2020-07-24 15:08:06 -07:00
Jon Meow 6edd57da02 Switch from em dash to -- for style. (#116)
Partly for relevant discussion on goals (where I didn't want to combine discussions), partly for https://github.com/carbon-language/carbon-lang/issues/106#issuecomment-657932678 in particular.
2020-07-21 19:28:01 -07:00
Jon Meow f7b0a60cb2 Fix pre-commit issues from #51. (#115) 2020-07-20 14:36:16 -07:00
Jon Meow 00152b4ca6 Proposal for Goals (#51)
Co-authored with chandlerc

- [Draft doc](https://docs.google.com/document/d/1MJvVIDXQrhIj6hZ7NwMDbDch9XLO2VaYrGq29E57meU/edit)
- [RFC topic](https://forums.carbon-lang.dev/t/rfc-goals-for-carbon/69)
- [Decision request](https://forums.carbon-lang.dev/t/request-for-decision-goals-for-carbon/91)
- [Decision announcement](https://forums.carbon-lang.dev/t/accepted-goals-for-carbon/98)
2020-07-20 14:15:04 -07:00
Jon Meow 4e09f03981 Consolidate towards github usernames (#105) 2020-07-08 15:32:27 -07:00
c5ddb57dd7 Proposal for an explicit GitHub workflow. (#29)
* Proposal for an explicit GitHub workflow.

This suggests a GitHub workflow that uses pull requests, produces linear
history, and both incentivizes and encourages small, incremental changes
(both at the pull request and commit granularity). It tries to follow
general best practices around software engineering at scale and GitHub
workflows. It also tries to ensure the workflow is very well supported
by tooling and automation built into GitHub.

Of note, this proposal should match precisely the current enforced flow
on our GitHub repositories. But we need to actually decide we like this,
write up the rationale behind it, and document what we're doing.

I've added an abbreviated version of the proposal as a documentation
update to the contributing file. Happy to restructure or find a better
home for this. I've tried to focus on the parts that contributors
actually would need to care about as opposed to the things that are
simply and fully enforced mechanically.

My hope after this is to suggest more detailed code review guidelines.

* Addressing review comments.

Notably, I really was giving too much weight to multi-commit PRs which
shouldn't be the common or default. I've tried to restructure everything
to make it much more clear what is going on here.

* Minor tweaks

* Fix typo in CONTRIBUTING.md

Co-authored-by: josh11b <josh11b@users.noreply.github.com>

* Extract workflow description and remove redundancies.

* remove tracking issue template field

* Update proposals/p0029.md with reviewer suggsetion.

Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>

* Continue to address review feedback.

* Apply suggestions from code review

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
Co-authored-by: austern <austern@google.com>

* Incorporate code review feedback and begin moving toward "trunk" based terminology

* Tweak the wording and make it a bit more consistent.

* Update docs/project/pull_request_workflow.md

Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>

* Address more review comments.

* Correct the rationale.

* Tweak wording based on discussion in review.

* Improve the rationale around the default branch to avoid overstating or
misstatig things.

* Apply suggestions from code review

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>

* Clean up formatting and address a couple of comments on grammar from review.

* Update docs/project/pull_request_workflow.md

Co-authored-by: austern <austern@google.com>

* Add to proposal list.

Co-authored-by: josh11b <josh11b@users.noreply.github.com>
Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>
Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
Co-authored-by: austern <austern@google.com>
2020-06-30 23:12:39 -07:00
Jon Meow bc76242838 Configure black for Python formatting (#97) 2020-06-29 11:34:15 -07:00
Jon Meow 65cfd73b78 Enable codespell pre-commit (#90)
This catches some common spelling errors, but is *not* an exhaustive spell-checker. The only false positive is "rouge" in Gemfile.lock, which is why I'm excluding that file.

True positives are in the change, and it does catch the "langauge" typo I keep making, which zygoloid fixed for me in a few spots. False negatives are:

- virmc
- Announcemented
- propsal

For comparison:

- cspell (https://www.npmjs.com/package/cspell) is too aggressive and has a small dictionary
  - Caught the false negatives, but many false positives, including 'LLVM', 'roadmap', 'Carruth'
- https://github.com/lorenzwalthert/precommit has a spellcheck, but config looks ruby-specific
2020-06-25 08:37:03 -07:00
Jon Meow 444e041317 Small doc improvement about pre-commit use (#88) 2020-06-19 15:24:47 -07:00
Jon Meow 06e560e502 Review manager doc (#75)
Mostly to have templates in a central place.
2020-06-16 14:49:57 -07:00
Jon MeowandChandler Carruth f1e4323fda Set up pre-commit (#73)
Added here:

- .pre-commit-config.yaml
- docs/project/contribution_tools.md
- src/scripts/pre-commit-toc.js
- CONTRIBUTING.md
- proposals/* (just to switch TOC formats)

The rest consists of auto-generated fixes.

The switch from doctoc to markdown-toc is because doctoc wants to put a TOC in every file, whereas markdown-toc only does it if you have an insertion point.

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
2020-06-16 09:09:10 -07:00
Jon Meow a3e8a5e389 More "or four working days" style (#72) 2020-06-15 11:50:59 -07:00
Jon MeowandChandler Carruth 809f074c55 Minor doc style cleanups (#70)
Co-authored-by: Chandler Carruth <chandlerc@gmail.com>

Trying to bring docs closer to the developer documentation style guide.
2020-06-12 07:58:12 -07:00
Jon Meow 503cad3c38 Adjust style of evolution doc (#67)
- Sentence case headers: https://developers.google.com/style/headings
- Remove parentheticals where possible: https://developers.google.com/style/parentheses
- Avoid latin abbreviations: https://developers.google.com/style/abbreviations#dont-use

Also some evolution-specific changes:

- Remove obsolete PDF references
- "decision is to accept the proposal" instead of "decision is to approve the change"
- Adjust review manager actions for accepted/declined/deferred decisions.
- Rephrase arbiter decisions, particularly to avoid 1-0 being considered a "majority".
  - I think this was always intended, and does not reflect a substantive change.
2020-06-11 21:21:01 -07:00
Jon Meow 411c171b95 Add a script for updating the triage group (#64)
We're using labels for proposals... https://github.com/carbon-language/carbon-lang/settings/access allows granting triage access for specific teams. https://github.com/organizations/carbon-language/settings/member_privileges doesn't appear to allow doing the same at the org-level. So I've decided to create a team that mirrors the org, and grants triage access. `¯\_(ツ)_/¯`

I don't know that this is the right solution long-term, but for now I think it's right.

Manually updating this group is slow and error-prone, so the script automates it.
2020-06-11 21:19:59 -07:00
sidney13 268b56cf20 Extend final comment period to 7 days (#60)
* Extend final comment period to 7 days

This is the implementation of proposal 0004, "Carbon: Change comment/decision timelines in proposal process"
2020-06-09 17:18:12 -07:00
josh11bandJon Meow e8cb551d2b First draft of a README for the principles/ directory. (#56)
* First draft of a README for the principles/ directory.

* More closely mirror the relevant section from the goals doc.

* Reword bit about excluding using chandlerc@'s suggested text.

* Link to goals doc.

* Update docs/project/principles/README.md

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
2020-06-04 16:22:19 -07:00
Jon Meow b7e80bf233 Remove prefix 'Carbon:' from page titles. (#54)
* Also retitle src/README.md
2020-06-04 13:34:45 -07:00