proposals/p1363.md
Open, transparent, and public development is often the best way to build a developer community. Long-term evolution of Carbon behind closed doors does not align with our core principles.
While early exploration with a limited group of participants has been effective at bootstrapping, a primary goal for the Carbon experiment is to establish whether there will be broad industry interest and participation in this direction. We expect this kind of interest and participation to ultimately result in widespread adoption if the technical components of the experiment succeed. We both want to see how the industry reacts to Carbon and think that reaction will be much more positive if the industry can actively participate and help shape the language.
Historically, Carbon has followed a "quiet" development model. While developed on GitHub using an open source process, the project was not publicly visible or discussed outside the invited set of early participants.
Carbon developed an initial set of criteria that we expected to signal the correct time for the project to become public:
See the removed going_public.md document in this
proposal for the
full historical criteria and analysis.
We should make the Carbon experiment public as soon as reasonably possible, specifically at the upcoming C++ North conference.
Many of the criteria outlined previously have not yet been met, and this proposal specifically suggests shifting Carbon to be public without waiting for them. Instead, we should make Carbon public largely as it is today. We should be open and transparent about the current status. We should frame this as making a nascent project public in order to build it in the open, rather than suggesting it is "done" or "ready" even for evaluation.
There is no perfect time to shift the project public, it is a tradeoff. The earlier we move the project to be public, the earlier we can gain more broad feedback and participation from the industry. However, it comes at the cost of introducing people to the project at an earlier stage with less material to help them get started. We believe Carbon has crossed the point where this tradeoff suggests sooner would be overall better for the project than later.
The Carbon experiment has accomplished what it can to explore industry interest and participation with limited and targeted outreach to experts. We have built the critical community and design process and framework to support an open technical discussion. We have also developed the key language design ideas sufficiently to show what Carbon would look like clearly and unambiguously. To broaden or deepen the feedback, we will need frank and public discussion with wider groups of users and stakeholders. We will need to iterate with a larger community and a broader set of stakeholders.
The needs of the C++ community remain unmet, and they are eager and asking for exactly Carbon's approach. The technical approach of Carbon directly addresses concrete and current requests from influential C++ developers. These needs are specifically not met by C or C++ as they exist or by Rust or other options, and we have a strategic opportunity to help drive a solution in this space.
A recent example on Twitter:
Speaking as a C/C++ developer, when I write in C/C++, I am doing so due to ecosystem/practical/legacy code constraints I have no control over, which means that being given a superior choice makes no difference to me because I didn't get a chance to choose C/C++ to start with
-- @mcclure111
A recent HackerNews discussion directly suggested essentially the direction we are exploring:
The permanent-ABI compatibility decision was effectively the death-knell for C++. Can't improve the standard library performance, making it effectively useless for the real world. Can't correct mistakes - the language and library warts grow and grow as the years pass by, making it impossible for beginners to pick up and learn the language.
-- lenkite
Last but not least, the Carbon experiment will accelerate thinking about more dramatic ways to improve C++ across the industry.
Our planned process is anchored around a few key principles:
We expect three phases to move things to be public:
During the second phase, we plan to engage with the following individuals and groups:
Our intent is to invite large portions of these groups to join community spaces to help engage and establish the community culture.
The third phase will be oriented around a keynote at CppNorth:
We are specifically not planning on a website, blog, or other more "official" presence. This should anchor on Carbon being an experiment and attracting contributors and participants rather than users.
GitHub will move to the normal for a public repository:
Discord will be fully public, using the community features to gate entry on CoC and CLA.
The shared Google drive and docs:
Meetings and calendar:
Making Carbon public does raise some significant risks that we need to be aware of and work to mitigate.
Planned mitigations:
Planned mitigations:
Planned mitigations:
Planned mitigations:
While somewhat unlikely, we don't want to create unnecessary friction with the LLVM and especially the Clang community, as they have heavily invested in a C++ compiler and tooling stack and supporting the C++ language.
Planned mitigations:
Planned mitigations:
An appealing time to go public would be when we have a toolchain that implements the core language design and provides a demonstration of the banner feature of Carbon -- C++ interop -- working effectively. If we made this our top priority, we expect we could complete this in the order of a year.
Advantages:
Disadvantages:
The desire to build Carbon in the open, develop strong trust with the community, and understand the breadth of industry interest outweigh the costs and risks of making Carbon public earlier.
We could delay still further and build Carbon into a compelling and ready-to-use programming language before going public.
Advantages:
Disadvantages:
This has never been seen as a realistic approach for Carbon, and that doesn't seem to have changed. While it does have some advantages, the tradeoff seems sharply wrong for the needs of the Carbon project.