Comments (5)
While this sounds strange at a glance, I think stuff like this is actually a cultural difference between a place like Meta and most consumers of FOSS projects.
From the point of view of a downstream FOSS user, like, someone who is interested in buck2 and what it can do, this question could be re-phrased through multiple lenses:
- Where do I, a user of prospective project
foobar
, get a buck2 binary, when I want to buildfoobar
from source? - Where do I, as a person interested in buck2, keep up to date with changes?
- What version of buck2, do I, a package maintainer, include in my repository for downstream users who don't compile themselves? (For example, NixOS in the case of yours truly)
- What do I, the developer of a project using buck2, look for when I want to see what's changed or introduced or been changed in the API?
- What do I, the developer of a project using buck2, need to know about the relationship between
buck2
andbuck2-prelude
and the dependencies between the two? - And so on and so forth
Broadly speaking, all of these questions can be put under the umbrella of "release management." People want releases because they directly relate to or answer all of these questions. Release management helps define how APIs can break, what releases users should use (stable vs prerelease), and much more. Proper release management for a project needs to answer questions like this to satisfy users.
However, at a place like Meta or any company, basically none of these apply. You have a team focused on providing buck2
binaries, so users don't need to care. The version of buck2
and buck2-prelude
is irrelevant, because they can be updated atomically as rollouts happen, and backwards compatibility is irrelevant as changes can simply be done in a three step process (add new thing, migrate users of old thing to new thing, delete all uses of old thing). So all of this is answered ahead of time by policies that already exist.
I have a similar setup with buck2-nix
: I migrate the buck2
binary and all of my rules atomically at once, so releases are not important for me in that regard. I control the whole pipeline, so it's easy to see what changes are needed. That said: I'd still benefit from releases, because they answer questions like "What new APIs are there?" Reading git history is a bit of a chore!
I could write more about this, but I think this is long enough to chew on for the team. Bi-monthly git tags and binaries being cut, even if a policy isn't fully figured out, might be a good place to start...
from buck2.
We are using Buck2 at Meta for thousands of developers, so consider it quite far advanced already. I'm not sure we have any plans to cut an official release, we typically use the latest version, so consider it always ready to go. We might want to put some stability guarantees around a specific version in future, but hadn't thought about that.
Perhaps asked a different way, what are you hoping to get out of a release?
from buck2.
Thanks for the notes @thoughtpolice - hopefully binaries are being solved in #113. But that still leaves plenty of discussion points left! I'll encourage members of the team to post their thoughts here.
from buck2.
Perhaps asked a different way, what are you hoping to get out of a release?
Releases help interested parties, such as curators of FOSS distributions, to distribute your software to their downstream users. Without them, we have no knowledge of which commits of buck2 are related to a stable version that we should recommend to our users.
from buck2.
We now have released binaries with tags every 2 weeks. We have 6 of them, so I think this ticket is done. Anything else required?
from buck2.
Related Issues (20)
- Test
- Does not prebuilt_cxx_library.static_lib support $(location //:target)? HOT 3
- Conflicting inputs on erlang build of Opentelemetry HOT 1
- error: Variable `typing` not found HOT 2
- Excluding rules from certain platforms HOT 6
- Unable to `buck2 clean` a repo which uses `git_fetch()` on Windows
- `configured_alias` and configuration modifiers HOT 2
- review Go analysis.Pass.Module proposal
- Creating symbolic links to toolchains HOT 10
- Early-building some parts of graph HOT 7
- How to use "buck2 clean" or other commands to delete only the generated files (cache) without killing the daemon? HOT 2
- Question: how to pass dependencies that change state forward across a non-output-changing rule HOT 4
- buck2 : Is java supported as a part of buck2 HOT 2
- Share work across configurations by setting working directory for actions then canonicalizing that working directory in RE HOT 5
- How to use multiple execution platforms HOT 1
- Distributed project.ignore
- How to use c/aquery to find the dependents of an anon_target HOT 3
- Trouble linking Apple Frameworks HOT 1
- documentation mentions `frecli` which doesn't seem to be available publicly HOT 1
- Adding support for new languages HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from buck2.