Git Product home page Git Product logo

Comments (5)

thoughtpolice avatar thoughtpolice commented on April 28, 2024 7

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 build foobar 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 and buck2-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.

ndmitchell avatar ndmitchell commented on April 28, 2024

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.

ndmitchell avatar ndmitchell commented on April 28, 2024

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.

kaniini avatar kaniini commented on April 28, 2024

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.

ndmitchell avatar ndmitchell commented on April 28, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.