3 ms·
The Slack engineering blog[0] is more pragmatic, and shows more about how the approaches were actually combined. This is basically our whole business at grit.i
by morgante 2y ago
The Slack engineering blog[0] is more pragmatic, and shows more about how the approaches were actually combined.
This is basically our whole business at grit.io and we also take a hybrid approach. We've learned a fair amount from building our own tooling and delivering thousands of customer migrations.
1. Pure AI is likely to be inconsistent in surprising ways, and it's hard to iterate quickly. Especially on a large codebase, you can't interactively re-apply the full transform a bunch.
2. A significant reason syntactic tools (like jscodeshift) fall down is just that most codemod scripts are pretty verbose and hard to iterate on. We ended up open sourcing our own codemod engine[1] which has its own warts, but the declarative model makes handling exceptions cases much faster.
3. No matter what you do, you need to have an interactive feedback loop. We do two levels of iteration/feedback: (a) automatically run tests and verify/edit transformations based on their output, (b) present candidate files for approval / feedback and actually integrate feedback provided back into your transformation engine.
[0] https://slack.engineering/balancing-old-tricks-with-new-feats-ai-powered-conversion-from-enzyme-to-react-testing-library-at-slack/ https://slack.engineering/balancing-old-tricks-with-new-feat...
[1] https://github.com/getgrit/gritql https://github.com/getgrit/gritql
- ayewo 2y agoI think you copy-pasted the wrong URL in your first link. Should be https://slack.engineering/balancing-old-tricks-with-new-feats-ai-powered-conversion-from-enzyme-to-react-testing-library-at-slack/ https://slack.engineering/balancing-old-tricks-with-new-feat...
- dang 2y agoWe changed the URL to that from https://www.infoq.com/news/2024/06/slack-automatic-test-conversion/ https://www.infoq.com/news/2024/06/slack-automatic-test-conv... . Thanks!