Saturday, September 7, 2019

A C++ Hall of Fame

Rock & roll has a hall of fame. So do toys. Fresh water fishing and towing each have one, and there's one for pretty much every kind of sport. I think C++ should have one, too.

CppCon, which starts in about a week, provides a natural setting for discussions about a C++ Hall of Fame. To get things rolling, I present the following proposal, on which I welcome comments. I won't be at CppCon, but I'll send a final version of the proposal to The C++ Foundation before the conference begins. Let me know what you think! (If there are a lot of comments, don't be surprised if I don't respond to each one.)

Proposal for a C++ Hall of Fame ("HoF")

Motivation

The success of C++ is based on the efforts of many contributors, but a few have done especially significant work. A C++ HoF would allow the C++ community to formally recognize and honor contributors whose efforts have been unusually important.

Administration

The HoF will be run by a Steering Committee, whose size and makeup will be determined by the Standard C++ Foundation. Duties of the Steering Committee will include overseeing the nomination, selection, and induction of HoF members, as well as maintaining the HoF itself.

The Steering Committee will establish a Selection Committee, whose role will be to solicit, accept, and evaluate nominations for HoF membership. The Selection Committee will determine who is included in the HoF.

Membership in the Steering and Selection committees need not be disjoint. Membership may even be the same, but it may be preferable for some Steering Committee members to work only on HoF activities unrelated to nomination or selection of new HoF members.

Eligibility for HoF Membership

HoF eligibility will be determined by the Steering Committee.  I suggest that, initially, only people (living or dead) or teams (i.e., groups of collaborating people) are eligible for membership in the HoF. In the future, eligibility can be broadened (e.g., to permit companies and organizations), but I think it’s reasonable to begin with a people-only HoF.

To reduce conflicts of interest, no one involved in HoF administration is eligible to be selected for membership in the HoF. However, existing HoF members may serve as administrators, and former administrators are eligible for the HoF.

Nomination

The nomination process will be determined by the Selection Committee.  I suggest an initial “anybody can nominate anybody” policy and a generous nomination period. If this proves unwieldy, more restrictive policies can be adopted.

Selection

Each year, the Selection Committee will choose no more than five nominees for inclusion in the HoF. Selection is an honor. Choosing too many new members would dilute the effect.

The primary criterion for selection is that the nominee has made one or more unusually significant contributions to the success of C++. Such contributions may have been made in the areas of design, specification, implementation, application, explanation, popularization, or any other aspect of C++ that the Selection Committee deems appropriate.

The Selection Committee may consider negative factors outside the realm of C++ when determining whether a nominee is worthy of HoF membership. If a nominee is guilty of a heinous crime, for example, the Selection Committee may take that into account when deciding whether to select the nominee for the HoF.

Inductions

The Steering Committee will determine how inductions are to take place. I suggest that CppCon schedule an induction ceremony as part of its program, during which new inductees are awarded a membership token (e.g., certificate, trophy, gaudy ring) and given time to make public comments marking the occasion.

The first group of HoF members will be selected before CppCon 2020. This will make it possible for them to participate in an induction ceremony during the conference.

Manifestation

The Steering Committee will determine what form the HoF will take. I suggest beginning with a HoF web site (cpphof.org?) that showcases each member and summarizes the contributions that led to their inclusion.

13 comments:

Ran Regev said...

Can you elaborate on the reasoning for HoF? What purpose does it serve? What do you wish to accomplish, etc. The only reasoning I saw is that other groups have.

Herb Sutter said...

I think a key reason is to recognize people whose contributions have made C++ successful, including many people who might otherwise go un(der)recognized.

For example: How many people have heard of Michael Tiemann? How many people know how much Walter Bright and his Zortech compiler contributed to making C++ take off? There was a time when the total number of C++ compiler writers could (and did) fit at a four-person dining table: Bjarne, Michael, Walter, and Mike Ball, at Usenix C++ 1998, but I'll bet most people haven't heard of the other three. Yet without them, or someone like them, C++ wouldn't have taken off and been successful.

Rene Rivera said...

Why is this needed when we already have the "Programming Languages Achievement Award" (http://www.sigplan.org/Awards/Achievement/). As I would think anyone who qualifies for this C++ HoF would, I hope, also qualify for the PLAA. Perhaps we should have a campaign to nominate worthy individuals to PLAA instead?

Scott Meyers said...

@Ran Regev: the proposal begins with the motivation for a HoF: to "allow the C++ community to formally recognize and honor contributors whose efforts have been unusually important."

Scott Meyers said...

@Rene Rivera: A C++ HoF would be more focused than the PLAA. Why do we need a baseball HoF and a football HoF and a hockey HoF instead of just having a single sports HoF? Because each sport wants to honor its own, and what's worthy of recognition in a specific community may not be considered important enough to recognize in a much more general community.

Robert D. French said...
This comment has been removed by the author.
Anonymous said...

We also need a C++ Hall of Shame for all the nonsensical bloat the committee keeps introducing into the language, to the point that the barrier to entry is so darn high at this point that it is hard to imagine many of the younger people new to programming be willing to subscribe themselves to the pain required to master it.

Less is more the C++ ISO Committee. Keep that in mind.

Unknown said...

I have to say I agree with the anonymous poster. I am not convinced that the endless changes now in C++ are gaining us anything, beyond making C++ less accessible to people. In every job I have worked in lately, you get some C++ guru who wishes to use the latest coding standards with no training for the rest of the team, leading to a mishmash of coding styles and code that only certain people can maintain. C++ has become a complex mess, and I say that as a user and fan of it for 20+ years.

Anonymous said...

To me this seems like an unnecessary source of conflict for the community. Determining who is "worthy" and who has commited "heinous crimes" is an incredibly subjective and potentially politically charged process (different cultures and different law systems view different things as crimes or heinous), and the fact that a tiny subset of the community gets to make all the decisions about these is certainly not going to help when the inevitable conflict arises.
And conflicts like these are a really efficient way to kill a community.

Besides, this is not really comparable to the HoF of Sports or Rock&Roll. Both of these are competitive in nature; They are made up of individuals who try to become better than everybody else in their respective category, so making a list of the top individuals in respect to these goals makes sense.
The C++ Committee is not competitive and does not focus on individuals. Its a group effort to make C++ the best it can possibly be. Making a group of specific individuals when individual accomplishments were never the focus of the group doesnt make much sense.

With that in mind, even if this somehow worked as a motivator, it would probably not attract the kind of people that C++ needs. If your goal is to get that sweet C++ hall of fame spot rather than make C++ a better language, you will probably be less inclined to compromise or collaborate, as this would deminish your part of the contribution.

Steve Sperandeo said...

Excellent idea, Scott. Celebration of one’s spectacular achievements (often work spanning decades), especially achievements that significantly helped others, is a wonderfully warm and worthwhile exercise. People matter and it’s important to celebrate their work.

One point of caution: it would be nice to reach out to the nominees privately before they’re announced. Some people genuinely dislike public recognition. They should be given the opportunity to privately decline.

Jorg said...
This comment has been removed by the author.
Jorg said...

Baseball has a hall of fame, too, which reminds me of https://www.reddit.com/r/baseball/comments/2rykgb/olbermann_close_the_hall_of_fame_and_start_over/ ... sadly the video is "probably not available in your country".

The fundamental problem with any hall of fame is the boolean nature of its inclusion. You're either in or you're out, which means in the early years, there will be many people who have made immense contributions but are never included. And in the later years, there will be inductees who are controversial because they haven't contributed as much as some other person. Josef Stein would certainly never make it into a C++ hall of fame... but I think his improvement to GCD is really cool.

It also turns discussion toward individual people, rather than aspects of the language or its history. Inevitably, it will introduce personal shortcomings into the discussion... which will then be amplified; look at Pete Rose and Barry Bonds.

Honestly I would rather see the effort directed toward a continually updated "Design and Evolution of C++". Every 3 years we get a new standard, but so much more important than the standard itself is the reasoning behind it.

Anonymous said...

Great idea!

I think with C++20, the language is continuing to evolve and innovate new great ideas in programming. So this would be something that could help in continuing this effort!