i was originally going to post this as a reply to @xwu ’s reply over at Extension methods for non-nominal types - #36 by xwu , but halfway through i realized it’s a distinct enough topic to merit its own thread:
throughout the history of Swift Evolution we’ve tended to push people towards Option #1, with Option #2 a distant second (e.g. GSoC). we haven’t really done a lot with the other two Options, which kind of leaves us in a situation where Apple funds the vast majority of Swift compiler and “fundamental” library development (e.g. SwiftNIO), and unpaid volunteers fill in the gaps in their free time where they can.
this has some benefits to the language and its ecosystem:
- the very core components of the Swift toolchain are well-maintained, as Apple pays people directly to do this.
- language features that are central to the ‘big visions’ being spearheaded by Apple (e.g., Concurrency,
~Copyable
, etc.) are well-supported, as Apple pays people directly to work on them. - libraries that do very specific tasks that are central to a particular company’s business are well supported, as the third party invests in the library for their own use, and occasionally the companies decide to open-source the libraries.
but it also has some weaknesses:
- features that have niche constituencies but don’t fit into a ‘big vision’ fall by the wayside.
- “middle ring” infrastructure - the kind of stuff that is not Foundational but also not specific enough to a single company’s business for them to justify fronting the entire cost themselves is neglected, so this work falls to unpaid volunteers.
- these volunteers have little financial support so there is a frequent pattern of volunteers releasing a version 1.0 of a library and then abandoning the project for lack of funding.
- high quality third-party-backed libraries are often tailored specifically to that company’s needs, which makes them less useful to others.
today, we leave it to the individual volunteers to manage their own fundraising, e.g. through GitHub Sponsors. but Fundraising is Hard, especially as an individual, and isn’t really something that can be done as an afterthought - it requires a lot of planning, coordination, follow-up, and marketing skills, and a lot of it is about leveraging connections built up over time, and cultivating these relationships continuously.
which leads me to wonder if there is a space for an official “Fundraising Committee” to fill, which would
- enshrine raising funding from non-Apple sources as an official Community Goal,
- establish a stable and long-lived counterparty for sponsors to engage with, and
- coordinate ways to incentivize financial contributions to Swift, for example, by “badging” donors, displaying their logo on Swift.org, or connecting them with advertising space on community websites such as Swiftinit or Swift Package Index.