Skip to content

Commit f1bb49d

Browse files
authored
Merge pull request #2054 from jaimergp/migrate-blog
Migrate blog to Docusaurus
2 parents 81e361b + ad68b66 commit f1bb49d

22 files changed

+2531
-124
lines changed

SECURITY.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ The role responsible for each step is noted at the beginning.
9595
mailing list.
9696
- **Developer**: Merge the security fix PR
9797
- **Developer**: Release the package and/or deploy the fix as appropriate
98-
- **Developer & Coordinator**: Draft a [blog post](https://github.com/conda-forge/blog) and other
98+
- **Developer & Coordinator**: Draft a [blog post](/blog) and other
9999
announcement texts. This can be done in parallel with the previous steps, but consider using a
100-
[private advisory](https://github.com/conda-forge/blog/security/advisories) for the text.
100+
[private advisory](https://github.com/conda-forge/conda-forge.github.io/security/advisories) for the text.
101101
- **Coordinator**: Publish the security advisory on the announcement date. If applicable, GitHub
102102
will post the CVE to the MITRE database.
103103
- **Coordinator**: Publish the blog post and other announcements (Element chat room, Twitter,

blog/2019-12-06-cfep09.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
authors:
3+
- cj-wright
4+
tags: [autotick-bot]
5+
---
6+
7+
# Automatically Deployed ABI Migrations
8+
9+
Handling application binary interface (ABI) migrations has always been a
10+
hassle for Conda-Forge. Maintaining ABI consistency helps enable the
11+
"just use conda-forge" experience for many of our users, making
12+
certain that numpy's blas is the same as scipy's. As libraries update
13+
their code, the new versions may be ABI incompatible, as function
14+
signatures and other symbols may have changed, leading to the dreaded
15+
`SegmentationFault` and other errors.
16+
17+
<!--truncate-->
18+
19+
Conda-Forge handles this by having a pinning file that tracks all the
20+
currently supported ABIs. These pinned ABIs are then used to build the
21+
downstream packages, making certain that all are consistent. As new
22+
versions of pinned software are released the pins are updated, causing a
23+
migration of the pin, and the rebuilding of all packages which rely on
24+
the pinned package. In the past, this was handled by a change to the
25+
global pinnings and a subsequent migration via the auto-tick bot. While
26+
this worked, there were issues that this created. Firstly, this approach
27+
could cause unsatisfiable build dependencies for new packages, as some
28+
of the new package's dependencies had been compiled with the new pins,
29+
but not all. Secondly, migrations happened in series, if a second pin
30+
was moved while the first was being migrated then the migration could go
31+
wrong as packages which were being rebuilt for the first pin got the
32+
second pin before they were ready.
33+
34+
Conda-Forge Core has recently approved CFEP-9, a migration policy to fix
35+
these issues. With CFEP-9 pinnings are proposed as small yaml snippets
36+
which contain the new pins. The auto-tick bot then starts migrating the
37+
packages in order, applying the yaml snippet to each package in turn. If
38+
a second pinning change is issued then the bot starts the migration for
39+
that package too, enabling the two migrations to work independently. If
40+
a package needs a change in both pins then the maintainers can choose
41+
the order in which they apply the pins by merging one pin before the
42+
other.
43+
44+
This approach will yield much greater stability in migrations and will
45+
enable more maintainers to issue migrations. Migrations can be issued by
46+
putting a PR into
47+
[conda-forge/conda-forge-pinning-feedstock](https://github.com/conda-forge/conda-forge-pinning-feedstock),
48+
adding a file to the `migrations` folder, PRs into the auto-tick bot are
49+
not needed anymore.

blog/2020-02-04-gsoc.md

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
---
2+
authors:
3+
- ocefpaf
4+
tags: [autotick-bot, gsoc]
5+
---
6+
7+
# Google Summer of Code 2020 improved automatic maintenance of `conda-forge`
8+
9+
The `conda-forge` "autotick" bot is a crucial part of `conda-forge`'s
10+
infrastructure. It enables automatic maintenance of `conda-forge`
11+
packages by pushing version updates to the underlying software and
12+
enabling large migrations of packages from one dependency to another
13+
(e.g., Python 3.7 to Python 3.8). As `conda-forg` grows in size, with
14+
over 9,000 packages to date, automatic maintenance of the `conda-forge`
15+
ecosystem will become even more important.
16+
17+
<!--truncate-->
18+
19+
We here at `conda-forge` have a large number of potential Google Sumer
20+
of Code projects around maintenance and development of the autotick bot
21+
infrastructure. These projects are high-impact, affecting the entire
22+
`conda-forge` ecosystem. They also cover multiple systems including
23+
databases, `conda`'s CDN provider, continuous integration providers,
24+
and user interactions on GitHub.
25+
26+
Want to be a part of the team? Great! Take a look at the projects below
27+
and get in touch with us on GitHub! You can check the [GSoC
28+
label](https://github.com/regro/cf-scripts/labels/GSOC) for a
29+
detailed listing of the issues that need work.
30+
31+
1. Maintenance and Refactoring
32+
33+
We have a large backlog of maintenance and refactoring issues that
34+
are great for people with a range of experience from beginners to
35+
true code ninjas.
36+
37+
- Integration Testing for the Autotick Bot
38+
39+
> Run true integration testing on a copy of the graph to better
40+
> test code changes and improve our CI process.
41+
>
42+
> **Issue**: [regro/cf-scripts261](https://github.com/regro/cf-scripts/issues/261)
43+
>
44+
> **Experience Level**: advanced
45+
46+
- Work on the "code hardening"
47+
[Milestone](https://github.com/regro/cf-scripts/milestone/4)
48+
49+
Address any of the issues in the milestone above related to code
50+
refactoring and cleanup.
51+
52+
**Issues**: [regro/cf-scripts milestone #4](https://github.com/regro/cf-scripts/milestone/4)
53+
54+
**Experience Level**: beginner to advanced
55+
56+
2. Automated PRs for Globally Pinned Packages
57+
58+
`conda-forge` maintains a list of globally pinned packages. These
59+
are typically dependencies whose version needs to be the same across
60+
all of `conda-forge` (e.g., the compiler versions or packages like
61+
`HDF5`). While we have infrastructure to run a migration of the
62+
downstream packages from a given pinned package, we do not have
63+
automated infrastructure to propose the migration of the pin itself.
64+
The project here is to add this functionality to our infrastructure.
65+
66+
**Issue**: [regro/cf-scripts#665](https://github.com/regro/cf-scripts/issues/665)
67+
68+
**Experience Level**: advanced
69+
70+
3. Check the `conda` CDN for Updated Packages before Issuing PRs in a
71+
Migration
72+
73+
`conda` relies on a CDN provider to serve the index of available
74+
packages. There is a moderate ~30 minute delay between when a
75+
package is uploaded to `anaconda.org` and when it will appear in the
76+
`conda` index. We currently do not take this delay into account when
77+
issuing PRs in a migration.
78+
79+
**Issue**: [regro/cf-scripts#595](https://github.com/regro/cf-scripts/issues/595)
80+
81+
**Experience Level**: beginner
82+
83+
4. Finish Migrations with PR into the `conda-forge` Pinnings File
84+
85+
Right now, when the migration of say package `ABC` to version `X`
86+
from version `Y` is done, we do not automatically merge the change
87+
in the globally pinned value of `ABC` into our listing of global
88+
pinnings. We should be issuing a PR to the pinnings file once we
89+
have determined that a suitable fraction of the packages effected by
90+
a migration have been properly rebuilt.
91+
92+
**Issue**: [regro/cf-scripts#595](https://github.com/regro/cf-scripts/issues/595)
93+
94+
**Experience Level**: moderate
95+
96+
5. Fully Render `conda` Packages in order to Determine Migration
97+
Dependencies
98+
99+
Determining the dependencies of a given package is actually a
100+
computation expensive task due to the way `conda` recipes are
101+
structured and parametrized through the use of `Jinja2` and
102+
`conda-build-config.yaml` files. Currently, the autotick bot
103+
examines the static metadata in the `meta.yaml` file and not the
104+
fully rendered metadata. For this reason, we sometimes miss
105+
dependencies of a given package that need to be migrated first.
106+
Addressing this issue involves both calling the rendering process
107+
and also scaling that process to the entire set of `conda-forge`
108+
packages.
109+
110+
**Issue**: [regro/cf-scripts#664](https://github.com/regro/cf-scripts/issues/664)
111+
112+
**Experience Level**: moderate

0 commit comments

Comments
 (0)