INFRASTRUCTURE.md (7835B)
1 <!-- 2 Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 3 4 SPDX-License-Identifier: curl 5 --> 6 7 # Infrastructure in the curl project 8 9 Overview of infrastructure we maintain, host and run in the project for the 10 project. 11 12 ## git repository 13 14 Since 2010, the main curl git repository has been hosted by GitHub, available 15 at https://github.com/curl/curl. 16 17 We also use the issue tracker, pull requests and discussions on GitHub. 18 19 curl has an "enterprise account" on GitHub and is an "organization" on the 20 site. 21 22 We accept sponsorship via GitHub Sponsors. 23 24 ## CI services 25 26 For every pull request and git push to the master repository, a number of 27 build and testing jobs are run on a set of different CI services. The exact 28 services vary over time. GitHub Actions and AppVeyor are the primary ones 29 these days. 30 31 ## Test Clutch 32 33 A [Test Clutch](https://github.com/dfandrich/testclutch) instance generates 34 regular reports on curl CI test results at https://testclutch.curl.se/ as well 35 as writing comments on curl pull requests whose tests have failed. The jobs 36 are hosted on a Virtuozzo Application Platform PaaS instance and is managed by 37 Dan Fandrich. The configuration code is available and managed at 38 https://github.com/dfandrich/testclutch-curl-web 39 40 ## Autobuilds 41 42 The curl autobuild system is a set of scripts that build and test curl and 43 send all output logs back to the autobuild server. The results are 44 continuously collected and visualized on the curl website at 45 <https://curl.se/dev/builds.html>. 46 47 The autobuild system and server is maintained by Daniel Stenberg. 48 49 ## OSS-Fuzz 50 51 Google runs the [OSS-Fuzz](https://google.github.io/oss-fuzz/) project which 52 also runs fuzzing on curl code, non-stop, in their infrastructure and they 53 send us emails in the rare instances they actually find something. 54 55 OSS-Fuzz notifies those that are members in the "curl team". Any curl 56 maintainer who wants to is welcome to participate. It requires a Google 57 account. 58 59 ## Coverity 60 61 We regularly run our code through the [Coverity static code 62 analyzer](https://scan.coverity.com/) thanks to them offering this service to 63 us for free. 64 65 ## CodeSonar 66 67 [CodeSonar](https://codesecure.com/our-products/codesonar/) analyzes the curl 68 source code daily and emails Daniel Stenberg whenever it finds suspected 69 problems in the source code. I hope and expect that we can invite other 70 maintainers to access these reports soon. 71 72 ## Domain names 73 74 The project runs services and website using a few different curl related 75 domain names, including `curl.se` and `curl.dev`. Daniel Stenberg owns these 76 domain names. 77 78 Until a few years ago, the curl website was present at `curl.haxx.se`. The 79 `haxx.se` domain is owned by Haxx AB, administrated by Daniel Stenberg. The 80 curl.haxx.se name is meant to keep working and be redirecting to curl.se for 81 the foreseeable future. 82 83 ## Websites 84 85 The main curl website at `curl.se` is maintained by curl maintainers and the 86 content is available and managed at https://github.com/curl/curl-www. The site 87 updates from git and runs make every 20 minutes. Any change pushed to git can 88 thus take up to 20 minutes until it takes effect on the origin server. 89 90 The content on `curl.dev` is available and managed at 91 https://github.com/curl/curl.dev/ 92 93 The content on `everything-curl.dev` is available and managed at 94 https://github.com/curl/everything-curl/ 95 96 The machine hosting the website contents for these three sites is owned by 97 Haxx AB and is primarily managed by Daniel Stenberg (co-owner of the Haxx 98 company). The machine is physically located in Sweden. 99 100 curl release tarballs are hosted on https://curl.se/download.html. They are 101 uploaded there at release-time by the release manager. 102 103 curl-for-win downloads are hosted on https://curl.se/windows and are uploaded 104 to the server by Viktor Szakats. 105 106 curl-for-QNX downloads are hosted on <https://curl.se/qnx> and are uploaded to 107 the server by Daniel Stenberg. 108 109 Daily release tarball-like snapshots are generated automatically and are 110 provided for download at <https://curl.se/snapshots/>. 111 112 CA certificate bundles are extracted from the Firefox source code, hosted by 113 Mozilla and converted to PEM file format and is offered for download. The 114 conversion checks for updates daily. The bundle is provided for download at 115 <https://curl.se/docs/caextract.html>. 116 117 There is an automated "download check bot" that runs twice daily to scan for 118 available curl downloads to populate the curl download page appropriately with 119 the correct updated information. The bot uses URLs and patterns for all 120 download packages and is maintained in a database, maintained by Daniel 121 Stenberg and Dan Fandrich. 122 123 The TLS certificate for the origin curl web server is automatically updated 124 from Let's Encrypt. 125 126 ## CDN 127 128 Fastly runs the Content Delivery Network (CDN) that fronts all the curl 129 websites. The CDN caches content that it gets from the origin server. 130 Recently, roughly 99.99% of web requests are satisfied by the CDN without 131 having to reach the origin. 132 133 The CDN caches different content at different lengths depending on the 134 content-type. The caching thus adds to the time for a change to have an effect 135 on the site from the moment it gets pushed to the git repository. 136 137 Using this setup, we provide four IPv4 addresses and eight IPv6 addresses for 138 anycast access to the site. Should be snappy from virtually everywhere across 139 the globe. 140 141 The CDN servers support HTTP/1, HTTP/2 and HTTP/3. They set HSTS for a year. 142 The `HTTP://` version of the site redirects to `HTTPS://`. 143 144 Fastly manages the TLS certificates from Let's Encrypt for the servers they 145 run on the behalf of curl. 146 147 ## Containers 148 149 The curl project offer container builds of curl. The source repository for 150 them is located at <https://github.com/curl/curl-container>. 151 152 Container images are hosted at <https://quay.io/repository/curl/curl> and 153 <https://hub.docker.com/r/curlimages/curl> 154 155 ## DNS 156 157 The primary domain name, `curl.se` is managed by Kirei and is offered over 158 fault-tolerant anycast servers. High availability and fast access for 159 everyone. 160 161 The actual physical DNS files and origin bind instance is managed by Daniel 162 Stenberg. 163 164 ## Mailing lists 165 166 The curl related mailing lists are hosted by Haxx AB on `lists.haxx.se` and 167 are maintained by Daniel Stenberg. This includes the mailman2 and Postfix 168 instances used for this. 169 170 ## Email 171 172 We use a few rare additional curl related email aliases in the curl domains. 173 They go through the mail server `mail.haxx.se` maintained by Daniel Stenberg 174 175 ## Bug-bounty 176 177 We run a [bug-bounty](https://curl.se/docs/bugbounty.html) on HackerOne. The 178 setup runs entirely at https://hackerone.com/curl. 179 180 The money part for the bug bounty is sponsored by the [Internet Bug 181 Bounty](https://hackerone.com/ibb). 182 183 ## Open Collective 184 185 We use [Open Collective](https://opencollective.com/curl) as our "fiscal 186 host". All money sent to and received by the curl project is managed by Open 187 Collective. 188 189 ## Merchandise 190 191 We have stickers, coffee mugs and coasters. They are managed by Daniel who 192 sits on the inventory. The best way to get your hands on curl merchandise is 193 to attend events where Daniel is physically. 194 195 ## Chat 196 197 Some curl developers, maintainers, users and enthusiasts use IRC for real-time 198 chat about curl and related topics. This done in the `#curl` channel on the 199 `libra.chat` IRC network. **Daniel Stenberg** (`bagder`) is registered owner 200 of the channel. We do not run any IRC servers or services ourselves. 201 202 `curelbot` is a service in the channel that shows details about GitHub issues 203 and pull requests when publicly mentioned using #[number]. The bot is run by 204 user `TheAssassin`. 205 206 There is a Matrix bridge to the IRC channel called `matrix.curl.se`. The 207 bridge is setup and run by **Sergio Durigan Junior** and **Daniel Stenberg**. 208 209 [curl online chat documentation](https://curl.se/docs/irc.html)