|
Boost : |
From: René Ferdinand Rivera Morell (grafikrobot_at_[hidden])
Date: 2024-09-18 04:31:19
== Distractions:
Before I get to the meat of the review I need to point out that I will
not talk about: if Boost needs a new website, whether Boost needs to
be revitalized, if policing communications in Boost is a good idea or
not, if Boost is relevant any longer, what build system Boost should
use, what documentation system Boost should use, if Boost is
attractive, if some other project is the new-old Boost, if Discord is
better than email. All of those, and more, are distractions to the key
questions that we are deciding on:
* Who should manage the assets that sustain the development of Boost Libraries?
* Who should decide how those assets are managed?
== Disclosure, Present
Seeing as the C++ Alliance proposal lists me as one of the initial
members of a new Committee I thought I'd include additional
biographical background for those that may not be aware of what I've
done, and do, both in the foreground and background of programming.
In case some are not aware I wear many hats in my life. And some of
them intersect with the Boost community. Because of the kind of work
that I've traditionally done, and still do, in game development and
contracting in that domain I have learned to compartmentalize facets
of my life. And how to reorient my thinking to each facet as needed.
Below is a very brief exposition of current and past involvement
arenas.
*Chicago Developer Development NFP*
I currently serve as a member of the board of the Chicago Developer
Development NFP. This is a non-profit that manages the finances of the
Chicago C/C++ User Group. Although the non-profit is very new, the
user group has been around for almost as long as Boost. And I've
helped manage it for just about as long.
*Disbelief LLC*
My day job for Disbelief is now at about 9.5 years doing AAA game
development consulting. Mainly doing Unreal Engine systems and
graphics programming. The one intersection with Boost here is that we
happen to use Boost in an internal project. And Boost is used in the
internals of Unreal Engine (at one point it had at least 4 different
copies of Boost in it at once).
*C++ Alliance*
I currently serve as a member of the board of the C++ Alliance and
hold the position of Secretary. As mentioned in the C++ Alliance
proposal my duties include advising on the non-profit operation and
alignment of initiatives with the goal of advancing the C++ ecosystem.
My experience in Boost and running various nonprofits and for-profit
corporations is particularly useful. The C++ Alliance also makes it
possible for me to participate in WG21 where much of my time has been
spent in C++ tooling and the standardization of tool interop.
*Boost C++ Libraries*
I currently maintain Predef and B2. I am currently working to make the
B2 build support in Boost allow for modular usage. With the hope of
making it easier to support package managers and the desire from some
users to depend on just the Boost libraries they need. In the past I
created the current Boost website, which is the second iteration. I
provide advice on the development of the new website. I provide advice
on the packaging of Boost for Conan. I maintain the B2 Conan package
which is separate from the Boost Conan package. In the past I've also
served as Boost Documentation Manager during which I helped maintain
Quickbook. I also served as Boost Release Manager during which I
automated much of the labor using cloud CI. I also served as Boost
Testing Manager during which I tried, but failed, to improve the
global test matrix but at least kept it running. And long ago I
minimally helped to start BoostCon.
*Bincrafters*
Bincrafters is a group that got started at the early stages of the
Conan package manager. We created many packages for libraries of all
sorts. I joined at its foundation to do one main task, to create the
first modular set of Boost packages. Although that modular Boost
packaged release is no longer available it taught me many lessons that
I applied to the current modular B2 building. That effort also
provided the conceptual model for the current modular vcpkg Boost
packages. Currently the group does minimal support of some existing
packages. But otherwise we've ported most of the packages we created
to the public Conan Index. Of particular relevance is that we
organized using the Open Source Collective as a Fiscal Sponsor
(https://opencollective.com/bincrafters).
== Disclosure, Past
As the past is an indicator of the future I thought it important to
also include some of the related organizations I've been part of
before now.
*Redshift Software*
I was President of a software development S-Corp that did all kinds of
contracting projects during the 16.5 years it operated. We did
everything from tools, games, and web sites. It was during the early
days here that our need for a build system for the version control
system we developed came from and how I came to find Boost. We went on
to use Boost heavily during that time. Which necessitated myself
fixing bugs across many of the Boost libraries. This is also where I
taught myself how to run a corporation, by reading Illinois corporate
law books and IRS rules.
*Couchworld Games*
I was also President of this game development C-corp (minor note, I
was "volunteered" for the position in this one and in Redshift). Even
though this corp got created to develop some AAA games, we ended up
creating some iPhone puzzle games in C++. Which was a rather hard
endeavor given the iPhone ecosystem in the early days. And, yes, we
used Boost and B2 in the engines we developed for those games.
*BoostPro Computing*
BoostPro was a consulting company started by Dave Abrahams to support
Boost developers by having clients pay for the technical support of
their use of Boost and general development for the clients. Some of
that work ended up as new Boost libraries. I worked, as a
subcontractor, for 3 years alongside Dave, Eric Neibler, and Joel de
Guzman.
In summary, I've been involved in most aspects of Boost for more than 22 years.
== Executive Committee:
When I say "Executive Committee" I'm referring to a group that
performs actions on behalf of a group. In this case I'm avoiding the
"Steering Committee" term as it appears to have additional
connotations because of the past use in Boost.
I think it's important that I explain what I think how a group (like
an Executive Committee but applies to any group claiming an equivalent
role) representing Boost developers should operate. For an Executive
Committee it is paramount to gain and maintain the trust of the
developers. To achieve that, decisions need to have the support of the
developers. Actions by an Executive Committee should not come as a
surprise to developers.
>From the beginning of my interactions in Boost I learned one key
fact.. Progress got made by those that acted and obtained buy-in from
the Boost developer community. Of the various achievements Boost
created early on, the one that made it possible to get such buy-in,
has been the community review process. It is a bottom up process that
is designed to remove doubt from the ethos of Boost.
It is the community review process that we are using now to clarify
how Boost moves forward, and hopefully upward. It should be the
process that we follow for Boost developers to make decisions about
the assets that sustain Boost development. And it should be the
results of such a process that the group representing Boost developers
accept as binding to make further decisions. I am hopeful that the
machinations we are currently following will become the norm.
Some have mentioned concerns about conflicts of interest in our
governance moving forward. Irrespective of my current inclusion in the
proposed composition of the Committee by the Alliance, it is my hope
that any future Committee will adopt policies that uses the Boost
Community Review process to drive decisions. Any actions the Committee
makes, including, but not limited to, its future composition, should
have community consensus by the time the Committee votes. It is the
only fair, open, and clear way to make decisions.
== Inclusivity:
As this topic has been mentioned a couple of times I feel like I need
to explain my philosophy on this and some related context. I believe
that a varied set of ideas and understanding is essential to any life
endeavor. As such I believe that keeping doors open to conversation is
key in understanding and inclusion. Even though I think that words are
important, I place actions above rhetoric. In other words, I think
being a decent person is more important than telling others how they
should be decent. My philosophy likely stems from learning to live
with conflicts in my life. I became an immigrant to the US when I was
a teenager. I'm also not an immigrant because I was born in Puerto
Rico with US citizenship. English is not my native language. But I am
also more fluent in English than my native Spanish. I am a straight
man in a field (game development programming) dominated by straight
men. I am also Hispanic in a field where they are an underpaid
minority. Part of my ancestry is European and originates in Mallorca,
Spain and further back in Catalonia. Another part of my ancestry is
Native American of the Caribbean Taino Civilization.
Even though I came to Boost searching for a build system, that is not
what kept me in Boost. And it was not racial, language, biological (I
say that one from the perspective of having a name that is often
confused as female in the US), theological, or cultural inclusivity
that kept me in Boost. It was intellectual inclusivity that has kept
me here for more than 2 decades. It was, and in my opinion still is, a
community where I can expect an honest consideration and assessment of
technical ideas.
== Are you knowledgeable about the problem domain?
Yes. I have managed for-profit companies. I have helped, and currently
help, to manage non-profit companies. I am versed in managing
organization assets of those companies.
== Proposals:
Given all that preamble, below is my review of each proposal.
Foundation:: I found this proposal spent most of its wording
explaining the ethos it aims to operate within. It is helpful to get
that detailed exposition as it has been something that has been
missing from the Foundation (and the SC before it) for a long time.
What I see in that exposition though is in dissonance with my
experience. The mentioned transparency is limited in time, the past
two years publishing minutes, and scope, process on how decisions like
board membership are made have been lacking. Consensus building is
mentioned as a core aspect. But it is unclear how the consensus
process is achieved for Foundation decisions that impact Boost. The
items mentioned as the actionable parts of this proposal are
"Community building", "Improve relevance", and "Adopt governance best
practices". Of those, the one that enumerates some steps that apply to
the stewardship of Boost assets is the last one. The first three
items, as far as I understand, apply to how Boost developers operate
and make decisions as envisioned by the Foundation. The fourth and
last items pertain to how the Foundation intends to improve its
composition with, I can only assume, the intent to increase
participation from Boost developers. The fifth item is the only one
that directly addresses the aspect of managing Boost assets. Outlining
how the Foundation would take control, and possibly ownership, of
assets. But it doesn't mention which assets. Is the library source an
asset in this model? Who decides which assets? What this proposal
lacks throughout is consideration for accountability to Boost
developers wishes. While placing all control in the Foundation. This
is an arrangement that would require the utmost trust in the
Foundation by Boost developers. And given past history I don't see
evidence of such a level of trust being merited.
Alliance:: The background of the proposal is thoroughly researched and
explained in detail. Although there is a fair amount of background
information in the proposal I think it can be summarized as "it gives
Boost developers control over Boost assets through a Steering
Committee". And although this specific proposal is for the Alliance to
be the Fiscal Sponsor that is, as we like saying, "an implementation
detail". As the control of what happens with the assets goes to the
Committee who represents the Boost developers. The proposed Transition
Plan recognizes the roles of the various parties and does a good job
of remunerating the parties for the work in the transition. The
operation of such a Committee and the Agreement match what I know of
the requirements for managing non-profit assets.
== Conclusion:
I support the C++ Alliance proposal to transfer assets to it and to
form a new Steering Committee.
There are various details to be worked out if the proposal is accepted
by the Boost community. For example, the name of the Committee, its
final composition, a final contract, and so on. But that's expected,
and natural to achieve a structure that the Boost community can grow
with.
Thank you for reading this far, René
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk