Replies: 10 comments 31 replies
-
|
I'm not sure how much the |
Beta Was this translation helpful? Give feedback.
-
|
We may want to consider speeding up our test matrix. For example the |
Beta Was this translation helpful? Give feedback.
-
|
Do we know, or do you know, exactly where the bottle necks are in our whole dev process?
I don't know exactly where they are, and if The Goal is anything to go by, and I think it is, bottle necks are a big deal. cc @dpc in case you want to share some thoughts? |
Beta Was this translation helpful? Give feedback.
-
|
Can I merge non-controversial attribute additions too @apoelstra (#5794) ... hmm these carveouts are reminding me of all the 2-ack stuff. Do pull me up if I'm getting trigger happy. EDIT: And a less trivial example: #5793 (I'm being intentionally transparent and erring on the side of asking too often.) |
Beta Was this translation helpful? Give feedback.
-
|
Mutants config looks like a candidate. E.g. #5806 |
Beta Was this translation helpful? Give feedback.
-
|
Hiiii! I've largely offline whole week so I'm catching up with backlog. Happy to share some thoughts. Note that I've gave up on following rust-bitcoin development in detail a while ago, so discount and adjust for individual situation. Maybe a bit of a tangent, but from my PoV all the productivity action is in LLMs now. LLMs became very robust around a half a year ago, and keep improving, and their utilization is changing the landscape and calculation on how to approach software development in general. And it's a weird place, because as productive and capable they are, they still can be extremely risky and just dumb. So you get this potential 10x productivity lure, but you need to manage 10x trust issues now. I guess it depends a lot on the industry and project, but where we are (high-reliability-required) even before everything was bottlenecked on code review and trust. Now it is just so much worse. Because with people increasingly offloading low-importanceand/or high-churn tasks, they have more time to focus on what actually matters. Even if coding itself is not assisted with LLM at all, So now everything became this even higher-througput system, and there's a lot of potential, but every bottleneck sticks out even more (e.g. somone could review more things faster every day, we didn't need to round-trip for some procedural stuff like formatting, we didn't need to rebase so much etc.). On high level I see lots of developers spending more time thinking W.r.t. CIs - it is the same problem as locking contention in SMP, or in databases, and same techniques apply. From the moment of opening a PR, to the moment it is merged it is a critical section / database transaction. To optimize the throughput, you want to make the critical section shorter, chances of conflict lower, employ optimistic locking. We have not starting doing it yet, but in my head a brewing though that complication of manging a pipelined CI is becoming more and more attractive. Basically, you want to frontload as many quick and automated checks (all basic and fast tests, reviews that are easy with people available We didn't really implement anything like that yet, but our Merge Queue handling has been like that for a while. Now some thoughts on more concrete items:
This seems kind of absurd. It seems to me that all developers must be able to run all important (likely to expose problems) tests locally. BTW. I've been working on a local-first CI system for a while now: https://app.radicle.xyz/nodes/radicle.dpc.pw/rad%3Az2tDzYbAXxTQEKTGFVwiJPajkbeDU My point is - when developers submit a PR, they should already have confidence Even if it takes them 4 hours to run it, it's still better than waiting days for Andrew running own CI should be a post-processing step, possibly done even after things are even in the master/staging branch. BTW. At Fedimint we have some tests that runs for many hours, but we run these only before preparing a release. It's relatively OK that master branch has some feature flag, or Cargo minimum version or whatever issue broken for a while. Definitely not worth slowing down the whole dev process to prevent it.
It was of my opinion for a while, that this messing around with formatting
In a high latency IO, thoughput optimization means batching and lowering the number of round-trips.
Possibly easy to avoid with a minimum coordination overhead. Though might not be an easy at all if other issues are addressed. My recommendations:
|
Beta Was this translation helpful? Give feedback.
-
That's great ideal to aim for, but does not survive the crash with pragmatic considerations. Though one could have a cake and eat it to. Merge everything to staging branch, run a full multi-hour CI once a day, and promote it to master. TADA.
True.My point was mostly that the more stuff developers can verify locally upfront, the less times they will need an extra round trip. This one could maybe fly in single organization settings.
The cost and realities of power is a real risk, but there's no escaping it I guess. Hopefully local LLMs will keep catching up. Plus... aren't we using Github already? :D As for data isolation is recommended and practical so I'm not too worried about that part.
👋 |
Beta Was this translation helpful? Give feedback.
-
Three levels of CIWe have, for all intense and purposes, three levels of CI
Currently each of these three has different coverage and slightly different purposes
Major bottle necks in relation to CI:
We have been hitting (1) lately but solutions presented are probably already suitable and Andrew is probably already on top of this. We can probably remove occurrences of (2) simply by running CI on each patch in a PR. We may need to use some observations from reducing CI runtime done as part of fixing (1) in order to do this. (3) is a big topic and is part of reduce-number-of-roundtrips as astutely observed by @dpc above. Moving to separate discussion: #5839 |
Beta Was this translation helpful? Give feedback.
-
|
OMG, there's so much stuff here I don't have time to read right now, but IME the biggest offenders are Also regarding API files - one more reason not to have them committed. I'm willing to spend some LLM tokens to make some kind of web UI for you so you can view API diffs even without it being committed. And speaking of API files: I just noticed one super idiotic thing - they include overridden trait methods but don't include default non-overriden methods, so diffs are artificially bigger. |
Beta Was this translation helpful? Give feedback.
-
|
Just to say this has improved a lot. I think it's coming along nicely, good team effort. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Discussing ways to increase our velocity. Now we have 5 on the team we are generating more PRs than we are merging.
one-acklabel again to PRs that have one ack and have a green CI run.P-highlabel on things that I deem high priority. (I have no special privilige other than I'm likely the only one putting time into this sort of management.)Any other ideas or suggestions please?
Definition of non-source-code PR
This is explicitly limited to PRs that only do any of the following :
So @mpbagot, @jamillambert, and @nyonson if you push these changes up in separate PRs I'll review and merge them for you.
Beta Was this translation helpful? Give feedback.
All reactions