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)
- How do I depend on Buck2 targets from another project? HOT 11
- Building and running tests in a single command HOT 5
- [Docs] Comprehensive Getting Started Documentation HOT 4
- erlang_release: "failed to cleanup output directory" when setting `include_erts = True`
- Profiling dynamic analysis HOT 3
- `rust-project develop` using a whitelist for `env` overrides where it shouldn't
- Allow load to take variable string or functions that returns string HOT 1
- load starlark from target output HOT 7
- Option to include remote execution actions in chrome-trace
- Build source file owned by another BUILD file HOT 1
- Status of `compatible_with` and alternatives HOT 6
- How do I call a rule impl explicitly? HOT 1
- Per-PACKAGE transitions HOT 7
- Shadow prelude rules globally HOT 4
- compile_command.json write to root directory HOT 6
- Template variables for `cxx_genrule` do not work with `system_cxx_toolchain`
- Windows System Libraires HOT 4
- namespacing rules
- How to get an `artifact`'s parent directory? HOT 1
- Will Buck2 work with Sun Grid Engine for remote execution? HOT 3
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.