6 ms·
I chatted to Nelson when I was designing brisk (https://github.com/brisktest/brisk https://github.com/brisktest/brisk) and his insight informed the development
by reillys 2y ago
I chatted to Nelson when I was designing brisk (https://github.com/brisktest/brisk https://github.com/brisktest/brisk) and his insight informed the development of it.
Among other things, Brisk allows you to run tests for your local code changes in the cloud (basically the pay mini test piece but for any test runner)
We also have a sync step much like the one described here and allow users to run one off commands (linters, tsc etc)
- riffraff 2y ago> Brisk allows you to run tests for your local code changes in the cloud how does this work for interactive debugging? I was going to ask the same about the system in TFA but I might as well ask you :)
- IshKebab 2y agoCan't you achieve all that just using a build system with reliable remote builds & caching e.g. Bazel, Buck, Please, etc? That also avoids hacky sync scripts.
- reillys 2y agoNo you can’t. They don’t work from your local development env and also work in your CI env. Mostly Brisk was designed to run your complete test suite on every codes save (ie local save) but it also works great from your CI. We can run entire test suites in seconds which is performance you don’t get with those systems you named (which are generally for building/compiling)
- reillys 2y agoTo be clear the sync step is used for the test suite execution not only the one off command running - it’s just something we can also easily do because we have a hot env in the cloud
- joshuamorton 2y ago> They don’t work from your local development env and also work in your CI env. This is one of the biggest selling points of bazel-like build systems. Like to the extent that, for some changes, bazel can say "even though you changed this source file, I can be 100% certain that that change didn't affect any tests and so I will not run them"
- Maxious 2y agoI'd suggest you revise your competitor analysis. Bazel definitely has a test command that with remote execution and caching absolutely allows you to run entire test suites in seconds* both locally and in CI eg. https://blog.aspect.build/typescript-with-rbe https://blog.aspect.build/typescript-with-rbe
- reillys 2y agoThis blog post says 2 and a half minutes not seconds. I know Bazel is a build system which distributes builds among remote machines. In fact using any computer language you can achieve these goals - you just need to program it. So yes you could probably do all the things with all the things, but Basel does not solve this problem out of the box. I wonder why stripe didn’t “just use Bazel”.
- IshKebab 2y ago> This blog post says 2 and a half minutes not seconds. It's meaningless to say "we can run tests in seconds". You can't run my tests in seconds because they're single threaded and take 10 minutes. The important thing is the speedup, and they got a pretty good speedup. Arguably the nop build/test time is important too but it doesn't look like they measured that. > Basel does not solve this problem out of the box. Yes it does. > I wonder why stripe didn’t “just use Bazel”. In my experience it's because setting up Bazel is a) more work than setting up some ad-hoc build system (Make or CMake or whatever) and b) difficult to switch to retrospectively. So it only gets used where you have people who are experienced enough to know that you will wish you had started with it, and can convince the inexperienced people that it's worth the effort. Usually you get too many inexperienced people saying "it's too difficult; we'll be fine with Make".
- zrail 2y agoFirst release of Basel was in 2015 when Stripe was already 5 years old and the progenitor of this tooling was already running with several dozen users.
- jvolkman 2y agoStripe does use Bazel. https://stripe.com/blog/fast-secure-builds-choose-two https://stripe.com/blog/fast-secure-builds-choose-two
- IshKebab 2y ago> They don’t work from your local development env and also work in your CI env. Err yes they do? Unless you mean something really specific that I'm not getting?