You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: proposals/0000-midstream-bindists.md
+30-53Lines changed: 30 additions & 53 deletions
Original file line number
Diff line number
Diff line change
@@ -150,20 +150,7 @@ idea how to achieve that.
150
150
151
151
## Technical Content
152
152
153
-
We propose here to create a joint project of "installation experience" developers to get funding and maintain
154
-
all tooling bindists centrally and autonomically.
155
-
156
-
This will allow:
157
-
158
-
* greater quality assurance
159
-
* good platform support, we want to support at least these consistently:
160
-
* more bindists for uncommon linux distros
161
-
* continuously updated and maintained bindists (including historical GHC versions)
162
-
* actually working nightlies
163
-
164
-
### Phase 1
165
-
166
-
In Phase 1 we will build the entire Haskell toolchain autonomically.
153
+
We propose here to start with the smallest step possible, to build the entire Haskell toolchain autonomically.
167
154
The way this will be implemented is to start a central GitHub repository that builds bindists for releases of:
168
155
169
156
- GHC
@@ -197,9 +184,17 @@ For the following Linux x86_64 distros:
197
184
198
185
Linux i386, armv7 and aarch64 will be confined to Debian or Ubuntu.
199
186
200
-
### Phase 2
187
+
These private runners will be made available to the whole Haskell GitHub org and as such benefit
188
+
other projects there as well (like HLS, Cabal, bytestring, etc.).
189
+
190
+
## Future work
191
+
192
+
The following ideas and goals are outside of the scope of this proposal, but are essential
193
+
to understand the broader mission and roadmap that motivated this proposal.
201
194
202
-
In Phase 2 we want to:
195
+
### Enhancements to bindist quality and installation experience
196
+
197
+
Further goals are:
203
198
204
199
* enhance the quality of the bindists by
205
200
- running the entire test suite for all of the tools
@@ -225,56 +220,38 @@ this type of feedback. Early release candidates can assist with this workflow.
225
220
Another perception shift necessary is that upstream projects should consider that their build system
226
221
are end-user interfaces, making it easier for both distributors and end-user to build release binaries correctly themselves.
227
222
228
-
### Phase 3
223
+
### Nightlies
229
224
230
-
In phase 3, we will mainly focus on making nightlies available for GHC and cabal. This will require
225
+
We also want to make nightlies available for GHC and cabal and HLS. This will require
231
226
coming up with a permanent storage solution and very robust nightly pipelines.
232
227
233
-
HLS nightlies may be added as well.
234
-
235
228
## Timeline
236
229
237
-
* phase 1 (6 months): proof of concept of a central GitHub CI building the entire toolchain
238
-
* phase 2 (9 months): bindist testing workflow, automated integration with GHCup, etc.
239
-
* phase 3 (12+ months): nightlies working for GHC and cabal and maybe HLS
230
+
* 6 months: proof of concept of a central GitHub CI building most of the toolchain
231
+
* 12 months: building GHC via github actions
240
232
241
233
## Budget
242
234
243
-
We would like to have a full-time developer work on this, at least partly. But at the moment,
244
-
we don't have anyone to propose and hiring an external contractor for this role may or may not
245
-
be helpful, since this requires significant DevX experience and commitment to the specified goals.
246
-
247
-
As such, we propose the "phase 1" of this proposal that focuses on advancing the existing GitHub CI
248
-
support for the GitHub Haskell organization, spearheaded by @angerman (providing aarch64 linux and
249
-
darwin M1 self-hosted machines). This infrastructure is already used by GHCup, HLS and other projects
250
-
and needs more runners.
251
-
252
-
Github actions at the moment does not provide all platforms. So the budget proposal to close the platform gap on GitHub actions is as follows (all prices in USD):
253
-
254
-
- FreeBSD x86_64 private runner on [vultr](https://www.vultr.com/pricing/), utilizing [github-act-runner](https://github.com/ChristopherHX/github-act-runner), instance with 8vCPU, 16 GB Memory, 150GB storage
255
-
* monthly: $160
256
-
* yearly: $1,920
257
-
- Linux aarch64 private runner on [AWS](https://aws.amazon.com/marketplace/pp/prodview-uzg6o44ep3ugw) (m6g.xlarge instance)
258
-
* hourly: $0.154
259
-
* monthly: $112.5
260
-
* yearly: $1,350
261
-
- Darwin M1 private runner on [macstadium](https://www.macstadium.com/pricing), instance with M1 8 Core, 16 GB Memory, 1 TB SSD
262
-
* monthly: $179
263
-
* yearly: $2,148
235
+
We request funding for private GitHub CI runners to power our midstream bindist release pipelines. Prices are in USD.
236
+
This is an example/estimate. The HF and the proposer will negotiate the exact terms in private.
264
237
265
-
To host one additional private runner per all these platform, the yearly cost would be: **$5,418**
238
+
- Linux/FreeBSD x86_64 runner on Hetzner (AX52)
239
+
* monthly: $62.24
240
+
* yearly: $746.88
241
+
- Linux aarch64 runner on Hetzner (RX170)
242
+
* monthly: $181.73
243
+
* yearly: $2,180.76
244
+
- Darwin runner on Hetzner (Mac Mini M1)
245
+
* monthly: $56.59
246
+
* yearly: $679.08
266
247
267
-
We may request more runners depending on the demand, so it may very well be 3 runners per platform, resulting in yearly cost of: $16,254
248
+
To host one private runner per all these platform, the yearly cost would be: **$3,606.72**
268
249
269
-
For FreeBSD it is also possible to buy [Cirrus CI compute credits](https://cirrus-ci.org/pricing/#compute-credits),
270
-
which amount to a similar value of: $1,576.8
250
+
There will likely also be an initial setup cost (as is usual for Hetzner).
271
251
272
-
As such, we estimate the cost for phase 1 to be between 5000 to 16000 USD. The benefit of this investment is not confined to
273
-
the midstream bindist proposal, but to the entirety of the GitHub Haskell organization CI infrastructure
0 commit comments