Quellcode durchsuchen

Are We Explorer Yet? (#1891)

It is currently difficult to see the status of Carbon explorer and where effort
is needed. We propose creating a AreWeYet-styled dashboard to address this.
David Sankel vor 3 Jahren
Ursprung
Commit
48ba8bf6b6
1 geänderte Dateien mit 153 neuen und 0 gelöschten Zeilen
  1. 153 0
      proposals/p1891.md

+ 153 - 0
proposals/p1891.md

@@ -0,0 +1,153 @@
+# Are We Explorer Yet?
+
+<!--
+Part of the Carbon Language project, under the Apache License v2.0 with LLVM
+Exceptions. See /LICENSE for license information.
+SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+-->
+
+[Pull request](https://github.com/carbon-language/carbon-lang/pull/1891)
+
+<!-- toc -->
+
+## Table of contents
+
+-   [Abstract](#abstract)
+-   [Problem](#problem)
+-   [Background](#background)
+    -   [AreWeYet](#areweyet)
+    -   [Carbon Explorer Status Brainstorm](#carbon-explorer-status-brainstorm)
+-   [Proposal](#proposal)
+-   [Details](#details)
+    -   [Are We Explorer Yet?](#are-we-explorer-yet-1)
+-   [Alternatives considered](#alternatives-considered)
+
+<!-- tocstop -->
+
+## Abstract
+
+It is currently difficult to see the status of Carbon explorer and where effort
+is needed. We propose creating a AreWeYet-styled dashboard to address this.
+
+## Problem
+
+While the Carbon project has many published documents, it can be a challenge to
+get a high-level picture of work that has been done and work that remains to be
+done. This can make it difficult to both track its progress and identify
+contribution areas that will have the biggest impact. Left unchecked, this can
+lead to the team equivalent of micro-optimization where resources are deployed
+in a way that isn’t consistent with high-level goals.
+
+## Background
+
+### AreWeYet
+
+Mozilla, a non-profit behind many Open Source projects, has created and utilized
+what is known as the AreWeYet meme as an approach to solve the aforementioned
+problem. In this approach, a highly structured dashboard is built that
+succinctly states a goal, what its status is, and links to issues or other means
+to track subgoals.
+
+One example is [“Are We XBL Still?”](https://bgrins.github.io/xbl-analysis/))
+which tracks a project to remove all XBL bindings from Firefox. The general
+format is a question, “Are we X still?”, followed by a list of items that, when
+complete, means the answer to the question becomes yes. Other examples can be
+found on Mozilla’s [Areweyet page](https://wiki.mozilla.org/Areweyet).
+
+The success of this methodology has led to other projects, such as Rust,
+adopting it.
+
+### Carbon Explorer Status Brainstorm
+
+A portion of the June 29th, 2022 Carbon weekly sync was used as a brainstorming
+session to identify both work that has been accomplished and work that remains
+for the Carbon explorer tool. While a comprehensive snapshot in time, there
+wasn’t an explicit agreement on how to utilize this document or keep it updated
+going forward. This proposal is the logical next step in this work.
+
+## Proposal
+
+We propose creating and utilizing an AreWeYet for the explorer project. The
+methodology has already been successful elsewhere and we already have the data
+collected for the explorer project. Although this proposal narrowly targets
+Carbon explorer, experience with this methodology may indicate value for its use
+elsewhere.
+
+## Details
+
+In summary, we propose the creation of a new page on the carbon-lang Wiki called
+“Are We Explorer Yet?”, population of this page with results of the explorer
+status brainstorm, and the creation of issues for parts that are not complete.
+
+The following section will be used as the basis for the “Are We Explorer Yet?”
+page. Items that are specifically out of scope for this AreWeYet are C++ interop
+(likely never a target for explorer), metaprogramming, parallel programming, and
+coroutines. The last three are likely substantial enough to merit their own
+AreWeYet pages.
+
+### Are We Explorer Yet?
+
+-   ❌ Structured programming
+    -   ✅ While loops
+    -   ✅ Variable declarations
+    -   ❌ Variable initialization tracking
+    -   ❌ Returned var
+    -   ❌ Variadics
+-   ❌ User defined types
+    -   ✅ structs
+    -   ✅ classes
+    -   ❌ choice
+-   ✅ Alias system
+-   ❌ OO programming
+    -   ❌ Inheritance
+    -   ❌ Parameterized class methods w/ inheritance
+    -   ❌ Destructors
+    -   ✅ Methods
+    -   ✅ Static functions / Class functions
+-   ❌ Generic programming
+    -   ✅ Generic classes
+    -   ❌ Generic methods
+    -   ✅ Generic functions
+    -   ✅ Interfaces
+    -   ✅ Generic Interfaces
+    -   ✅ Impls
+    -   ✅ Generic Impls
+    -   ❌ Impl specialization
+    -   ❌ Templates
+-   ❌ Operator overloading
+    -   ✅ ==
+    -   ❌ /=
+    -   ❌ Other operators
+    -   ❌ Constraints
+    -   ✅ Implicit “as”
+-   ❌ Error handling
+-   ✅ Prelude
+    -   ✅ Print function
+-   ❌ Types
+    -   ✅ i32
+    -   ❌ Other integral types
+    -   ❌ Integral types as library types instead of native
+    -   ✅ Tuples
+    -   ✅ Pointer
+    -   ✅ Functions
+    -   ✅ Bool
+    -   ✅ String
+    -   ❌ Floating point types
+    -   ❌ Raw string literals
+-   ❌ Code organization
+    -   ❌ Mixins
+    -   ❌ Imports
+    -   ❌ Separate packages
+    -   ❌ Modules
+    -   ❌ Namespaces
+
+## Alternatives considered
+
+The default alternative is status quo where carbon explorer progress isn’t being
+tracked from a high-level. Due to the problems outlined in the problems section,
+this seems like an undesirable option.
+
+Another alternative is to use github issue tags and come up with a custom search
+to see the outstanding issues. This has the benefit of being fully automated. On
+the other hand, it would be difficult to get a hierarchical view which is useful
+to being able to grasp the big picture.