|
| 1 | +# Are We Explorer Yet? |
| 2 | + |
| 3 | +<!-- |
| 4 | +Part of the Carbon Language project, under the Apache License v2.0 with LLVM |
| 5 | +Exceptions. See /LICENSE for license information. |
| 6 | +SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 7 | +--> |
| 8 | + |
| 9 | +[Pull request](https://github.com/carbon-language/carbon-lang/pull/1891) |
| 10 | + |
| 11 | +<!-- toc --> |
| 12 | + |
| 13 | +## Table of contents |
| 14 | + |
| 15 | +- [Abstract](#abstract) |
| 16 | +- [Problem](#problem) |
| 17 | +- [Background](#background) |
| 18 | + - [AreWeYet](#areweyet) |
| 19 | + - [Carbon Explorer Status Brainstorm](#carbon-explorer-status-brainstorm) |
| 20 | +- [Proposal](#proposal) |
| 21 | +- [Details](#details) |
| 22 | + - [Are We Explorer Yet?](#are-we-explorer-yet-1) |
| 23 | +- [Alternatives considered](#alternatives-considered) |
| 24 | + |
| 25 | +<!-- tocstop --> |
| 26 | + |
| 27 | +## Abstract |
| 28 | + |
| 29 | +It is currently difficult to see the status of Carbon explorer and where effort |
| 30 | +is needed. We propose creating a AreWeYet-styled dashboard to address this. |
| 31 | + |
| 32 | +## Problem |
| 33 | + |
| 34 | +While the Carbon project has many published documents, it can be a challenge to |
| 35 | +get a high-level picture of work that has been done and work that remains to be |
| 36 | +done. This can make it difficult to both track its progress and identify |
| 37 | +contribution areas that will have the biggest impact. Left unchecked, this can |
| 38 | +lead to the team equivalent of micro-optimization where resources are deployed |
| 39 | +in a way that isn’t consistent with high-level goals. |
| 40 | + |
| 41 | +## Background |
| 42 | + |
| 43 | +### AreWeYet |
| 44 | + |
| 45 | +Mozilla, a non-profit behind many Open Source projects, has created and utilized |
| 46 | +what is known as the AreWeYet meme as an approach to solve the aforementioned |
| 47 | +problem. In this approach, a highly structured dashboard is built that |
| 48 | +succinctly states a goal, what its status is, and links to issues or other means |
| 49 | +to track subgoals. |
| 50 | + |
| 51 | +One example is [“Are We XBL Still?”](https://bgrins.github.io/xbl-analysis/)) |
| 52 | +which tracks a project to remove all XBL bindings from Firefox. The general |
| 53 | +format is a question, “Are we X still?”, followed by a list of items that, when |
| 54 | +complete, means the answer to the question becomes yes. Other examples can be |
| 55 | +found on Mozilla’s [Areweyet page](https://wiki.mozilla.org/Areweyet). |
| 56 | + |
| 57 | +The success of this methodology has led to other projects, such as Rust, |
| 58 | +adopting it. |
| 59 | + |
| 60 | +### Carbon Explorer Status Brainstorm |
| 61 | + |
| 62 | +A portion of the June 29th, 2022 Carbon weekly sync was used as a brainstorming |
| 63 | +session to identify both work that has been accomplished and work that remains |
| 64 | +for the Carbon explorer tool. While a comprehensive snapshot in time, there |
| 65 | +wasn’t an explicit agreement on how to utilize this document or keep it updated |
| 66 | +going forward. This proposal is the logical next step in this work. |
| 67 | + |
| 68 | +## Proposal |
| 69 | + |
| 70 | +We propose creating and utilizing an AreWeYet for the explorer project. The |
| 71 | +methodology has already been successful elsewhere and we already have the data |
| 72 | +collected for the explorer project. Although this proposal narrowly targets |
| 73 | +Carbon explorer, experience with this methodology may indicate value for its use |
| 74 | +elsewhere. |
| 75 | + |
| 76 | +## Details |
| 77 | + |
| 78 | +In summary, we propose the creation of a new page on the carbon-lang Wiki called |
| 79 | +“Are We Explorer Yet?”, population of this page with results of the explorer |
| 80 | +status brainstorm, and the creation of issues for parts that are not complete. |
| 81 | + |
| 82 | +The following section will be used as the basis for the “Are We Explorer Yet?” |
| 83 | +page. Items that are specifically out of scope for this AreWeYet are C++ interop |
| 84 | +(likely never a target for explorer), metaprogramming, parallel programming, and |
| 85 | +coroutines. The last three are likely substantial enough to merit their own |
| 86 | +AreWeYet pages. |
| 87 | + |
| 88 | +### Are We Explorer Yet? |
| 89 | + |
| 90 | +- ❌ Structured programming |
| 91 | + - ✅ While loops |
| 92 | + - ✅ Variable declarations |
| 93 | + - ❌ Variable initialization tracking |
| 94 | + - ❌ Returned var |
| 95 | + - ❌ Variadics |
| 96 | +- ❌ User defined types |
| 97 | + - ✅ structs |
| 98 | + - ✅ classes |
| 99 | + - ❌ choice |
| 100 | +- ✅ Alias system |
| 101 | +- ❌ OO programming |
| 102 | + - ❌ Inheritance |
| 103 | + - ❌ Parameterized class methods w/ inheritance |
| 104 | + - ❌ Destructors |
| 105 | + - ✅ Methods |
| 106 | + - ✅ Static functions / Class functions |
| 107 | +- ❌ Generic programming |
| 108 | + - ✅ Generic classes |
| 109 | + - ❌ Generic methods |
| 110 | + - ✅ Generic functions |
| 111 | + - ✅ Interfaces |
| 112 | + - ✅ Generic Interfaces |
| 113 | + - ✅ Impls |
| 114 | + - ✅ Generic Impls |
| 115 | + - ❌ Impl specialization |
| 116 | + - ❌ Templates |
| 117 | +- ❌ Operator overloading |
| 118 | + - ✅ == |
| 119 | + - ❌ /= |
| 120 | + - ❌ Other operators |
| 121 | + - ❌ Constraints |
| 122 | + - ✅ Implicit “as” |
| 123 | +- ❌ Error handling |
| 124 | +- ✅ Prelude |
| 125 | + - ✅ Print function |
| 126 | +- ❌ Types |
| 127 | + - ✅ i32 |
| 128 | + - ❌ Other integral types |
| 129 | + - ❌ Integral types as library types instead of native |
| 130 | + - ✅ Tuples |
| 131 | + - ✅ Pointer |
| 132 | + - ✅ Functions |
| 133 | + - ✅ Bool |
| 134 | + - ✅ String |
| 135 | + - ❌ Floating point types |
| 136 | + - ❌ Raw string literals |
| 137 | +- ❌ Code organization |
| 138 | + - ❌ Mixins |
| 139 | + - ❌ Imports |
| 140 | + - ❌ Separate packages |
| 141 | + - ❌ Modules |
| 142 | + - ❌ Namespaces |
| 143 | + |
| 144 | +## Alternatives considered |
| 145 | + |
| 146 | +The default alternative is status quo where carbon explorer progress isn’t being |
| 147 | +tracked from a high-level. Due to the problems outlined in the problems section, |
| 148 | +this seems like an undesirable option. |
| 149 | + |
| 150 | +Another alternative is to use github issue tags and come up with a custom search |
| 151 | +to see the outstanding issues. This has the benefit of being fully automated. On |
| 152 | +the other hand, it would be difficult to get a hierarchical view which is useful |
| 153 | +to being able to grasp the big picture. |
0 commit comments