Skip to content

Commit 9930e5b

Browse files
committed
fix lost save
1 parent 271b95e commit 9930e5b

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

community/history.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Travis Oliphant, on [Why I promote conda](https://technicaldiscovery.blogspot.co
3030
3131
Conda packages could not only ship pre-compiled Python packages across platforms but were also agnostic enough to ship Python itself, as well as the underlying shared libraries without having to statically vendor them. This was particularly convenient for projects that relied on both compiled dependencies (e.g. C++ or Fortran libraries) and Python "glue code".
3232

33-
By June 2013, conda was using a SAT solver and included the `conda build` tool [^new-advances-in-conda] for community users outside of Continuum to build their own conda packages. This is also when the first Miniconda release and Binstar.org [^binstar], a site for hosting arbitrary user-built conda packages, were announced. Miniconda provided a minimal base environment that users could populate themselves, and Binstar.org gave any user an easy platform for redistributing their packages. All of the conda tools and Binstar/Anaconda.org have been free (as in beer), with some paid options on Binstar/Anaconda.org for more storage.
33+
By June 2013, conda was using a SAT solver and included the `conda build` tool [^new-advances-in-conda] for community users outside of Continuum to build their own conda packages. This is also when the first Miniconda release and Binstar.org [^binstar], a site for hosting arbitrary user-built conda packages, were announced. Miniconda provided a minimal base environment that users could populate themselves, and Binstar.org gave any user an easy platform for redistributing their packages. All of the conda tools have been free (BSD 3-clause) and Binstar/Anaconda.org was also free (as in beer, not open source), with some paid options on Binstar/Anaconda.org for more storage.
3434

3535
With `conda build` came along the concept of recipes [^early-conda-build-docs]. The [`ContinuumIO/conda-recipes`](https://github.com/conda-archive/conda-recipes) repository became _the_ central
3636
place where people would contribute their conda recipes. This was separate from Anaconda's package recipes, which were private at this point. While successful, the recipes varied in quality, and typically only worked on one or two platforms. There was no CI for any recipes to help keep them working. It was common to find recipes that would no longer build, and you had to tweak it to get it to work.
@@ -43,19 +43,21 @@ By 2015, several institutes and groups were using Binstar/Anaconda.org to distri
4343

4444
In 2014, Filipe Fernandes ([@ocefpaf](https://github.com/ocefpaf)) and Phil Elson ([@pelson](https://github.com/pelson)) were maintaining the Binstar channels for IOOS and SciTools, respectively. Phil had [implemented CI pipelines](https://github.com/SciTools/conda-recipes-scitools/blob/995fc231967719db0dd6321ba8a502390a2f192c/.travis.yml) and [special tooling](https://github.com/conda-tools/conda-build-all) to build conda packages for SciTools efficiently, and Filipe borrowed it for IOOS. There was also a healthy exchange of recipes between the two groups, often assisted by members of other communities. For example, Christophe Gohlke and David Cournapeau were instrumental in getting Windows builds of the whole SciPy stack to work on AppVeyor.
4545

46-
There was a lot of cross-pollination between projects/channels, but working in separate repos, duplicated recipes, and differing build toolchains. Given the success of the `ContinuumIO/conda-recipes` repository, it became clear there was a demand for high quality conda recipes and more efficient collaboration under a single umbrella. On April 11th, 2015, `conda-forge` was registered as a Github organization [^github-api-conda-forge] and an Anaconda.org channel [^binstar-conda-forge].
46+
There was a lot of cross-pollination between projects/channels, but projects were still working in separate repos, duplicating recipes, and with differing build toolchains (so mixing channels was unpredictable). Given the success of the `ContinuumIO/conda-recipes` repository, it became clear there was a demand for high quality conda recipes and more efficient collaboration under a single umbrella. On April 11th, 2015, `conda-forge` was registered as a Github organization [^github-api-conda-forge] and an Anaconda.org channel [^binstar-conda-forge].
4747

4848
## Meanwhile at Continuum
4949

50-
It's a little strange to describe Continuum Analytics/Anaconda's history here, but the company history is so deeply intertwined with conda-forge that it is essential for a complete story. During this time, Continuum (especially Ilan Schnell) was developing its own internal recipes for packages. Continuum's Linux toolchain at the time was based on CentOS 5 and GCC 4.8. These details matter, because they effectively set the compatibility bounds of the entire conda package ecosystem. The packages made from these internal recipes were available on the [`free` channel][free-channel], which in turn was part of a metachannel named `defaults`. The `defaults` channel made up the initial channel configuration for the Miniconda and Anaconda installers.
50+
Reminder: Continuum is now Anaconda, but this article tries to keep the company name contemporaneous with the state of the world.
5151

52-
Concurrently, Aaron Meurer led the `conda` and `conda-build` projects, contributed many recipes to the `conda-recipes` repository and built many packages on his `asmeurer` binstar.org channel. Aaron left Continuum in late 2015, leaving the community side of the projects in need of new leadership. Continuum hired Kale Franz to fill this role. Kale had huge ambitions for `conda`, but `conda-build` was not as much of a priority for him. Michael Sarahan stepped in to maintain `conda-build`.
52+
It's a little strange to describe Continuum's history here, but the company history is so deeply intertwined with conda-forge that it is essential for a complete story. During this time, Continuum (especially Ilan Schnell) was developing its own internal recipes for packages. Continuum's Linux toolchain at the time was based on CentOS 5 and GCC 4.8. These details matter, because they effectively set the compatibility bounds of the entire conda package ecosystem. The packages made from these internal recipes were available on the `free` channel, which in turn was part of a metachannel named `defaults`. The `defaults` channel made up the initial channel configuration for the Miniconda and Anaconda installers. Concurrently, Aaron Meurer led the conda and conda-build projects, contributed many recipes to the conda-recipes repository and built many packages on his `asmeurer` binstar.org channel. Aaron left Continuum in late 2015, leaving the community side of the projects in need of new leadership. Continuum hired Kale Franz to fill this role. Kale had huge ambitions for conda, but conda-build was not as much of a priority for him. Michael Sarahan stepped in to maintain Conda-build.
5353

54-
In 2016, Rich Signell at USGS connected Filipe and Phil with Travis Oliphant at Continuum, who assigned Michael Sarahan to be Continuum's representative in conda-forge. Ray Donnelly joined the team at Continuum soon afterwards, bringing extensive experience in package managers and toolchains from his involvement in the MSYS2 project. There was a period of time where conda-forge and Continuum worked together closely, with conda-forge relying on Continuum to supply several core libraries. This reliance was partly to lower conda-forge's maintenance burden and reduce duplicate work, but it also helped keep mixtures of `conda-forge` and `defaults` channel packages working by reducing possibility of divergence. Just as there were binary compatibility issues with mixing packages from among the many Binstar channels, mixing packages from `defaults` with `conda-forge` could be fragile and frustrating.
54+
In 2016, Rich Signell at USGS connected Filipe and Phil with Travis Oliphant at Continuum, who assigned Michael Sarahan to be Continuum's representative in Conda-Forge. Ray Donnelly joined the team at Continuum soon afterwards, bringing extensive experience in package managers and toolchains from his involvement in the MSYS2 project. There was a period of time where conda-forge and Continuum worked together closely, with conda-forge relying on Continuum to supply several core libraries. In its infancy, the conda-forge channel had far fewer packages than the `defaults` channel. Conda-forge's reliance on `defaults` was partly to lower conda-forge's maintenance burden and reduce duplicate work, but it also helped keep mixtures of conda-forge and `defaults` channel packages working by reducing possibility of divergence. Just as there were binary compatibility issues with mixing packages from among the many Binstar channels, mixing packages from `defaults` with `conda-forge` could be fragile and frustrating.
5555

5656
Around this point in time, [GCC 5 arrived][gcc-5] with a breaking change in `libstdc++`. These changes, among other compiler updates, began to make the CentOS 5 toolchain troublesome. Cutting edge packages, such as the nascent TensorFlow project, required cumbersome patching to work with the older toolchain, if they worked at all. There was strong pressure from the community to update the ecosystem (i.e. the toolchain, and implicitly everything built with it). There were two prevailing options. One was Red Hat's `devtoolset`. This used an older GCC version which statically linked the newer `libstdc++` parts into binaries, so that `libstdc++` updates were not necessary on end user systems. The other was to build GCC ourselves, and to ship the newer `libstdc++` library as a conda package. This was a community decision, and it was split roughly down the middle. In the end, the community decided to take the latter route, for the sake of greater control over updating to the latest toolchains, instead of having to rely on Red Hat. One major advantage of providing our own toolchain was that we could provide the toolchain as a conda package instead of a system dependency, so we could now express toolchain requirements in our recipes and have better control over compiler flags and behavior.
5757

58-
As more and more conflicts with `free` channel packages occurred, conda-forge gradually added more and more of their own core dependency packages to avoid those breakages. At the same time, Continuum was working on two contracts that would prove revolutionary. Samsung wanted to use conda packages to manage their internal toolchains, and Ray suggested that this was complementary to our own internal needs to update our toolchain. Samsung's contract supported development to `conda-build` that greatly expanded its ability to support explicit variants of recipes. Intel was working on developing their own Python distribution at the time, which they based on Anaconda and added their accelerated math libraries and patches to. Part of the Intel contract was that Continuum would move all of their internal recipes into public-facing GitHub repositories. Rather than putting another set of repositories (another set of changes to merge) in between internal and external sources, such as conda-forge, Michael and Ray pushed for a design where conda-forge would be the reference source of recipes. Continuum would only carry local changes if they were not able to be incorporated into the conda-forge recipe for social, licensing, or technical reasons. The combination of these `conda-forge`-based recipes and the new toolchain is what made up the `main` channel, which was also part of `defaults`. The `main` channel represented a major step forward in keeping conda-forge and Continuum aligned, which equated to smooth operation and happy users.
58+
Here around 2017, Continuum renamed itself to Anaconda, so let's switch those names from here out.
59+
60+
As more and more conflicts with `free` channel packages occurred, conda-forge gradually added more and more of their own core dependency packages to avoid those breakages. At the same time, Anaconda was working on two contracts that would prove revolutionary. Samsung wanted to use Conda packages to manage their internal toolchains, and Ray suggested that this was complementary to our own internal needs to update our toolchain. Samsung's contract supported development to conda-build that greatly expanded its ability to support explicit variants of recipes. Intel was working on developing their own Python distribution at the time, which they based on Anaconda and added their accelerated math libraries and patches to. Part of the Intel contract was that Anaconda would move all of their internal recipes into public-facing GitHub repositories. Rather than putting another set of repositories (another set of changes to merge) in between internal and external sources, such as conda-forge, Michael and Ray pushed for a design where conda-forge would be the reference source of recipes. Anaconda would only carry local changes if they were not able to be incorporated into the conda-forge recipe for social, licensing, or technical reasons. The combination of these conda-forge based recipes and the new toolchain are what made up the `main` channel, which was also part of `defaults`. The `main` channel represented a major step forward in keeping conda-forge and Anaconda aligned, which equates to smooth operation and happy users. The joined recipe base and toolchain has sometimes been contentious, with conda-forge wanting to move faster than Anaconda or vice-versa. The end result has been a compromise between cutting-edge development and slower enterprise-focused development.
5961

6062
<!-- miniforge -->
6163

0 commit comments

Comments
 (0)