<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/feed.css?v=208f42b55cff" type="text/css"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:site="https://lalitm.com/feed/ns#"><channel><title>Lalit Maganti (Tag: Devtools)</title><link>https://lalitm.com/tags/devtools/</link><description>Recent content tagged Devtools on Lalit Maganti</description><site:notice>This is a feed.
Feeds let you subscribe to updates from this site using a feed reader. Copy this page's URL from your address bar and paste it into your reader.
New to feeds? Read: https://aboutfeeds.com</site:notice><docs>https://aboutfeeds.com</docs><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 09 Aug 2026 14:53:00 +0100</lastBuildDate><atom:link href="https://lalitm.com/tags/devtools/index.xml" rel="self" type="application/rss+xml"/><item><title>Changing Devtools Is Cheap. Owning Them Isn’t.</title><link>https://lalitm.com/post/changing-devtools-is-cheap-owning-them-isnt/</link><pubDate>Sun, 09 Aug 2026 14:53:00 +0100</pubDate><guid>https://lalitm.com/post/changing-devtools-is-cheap-owning-them-isnt/</guid><description>In Devtools must be open source1 (via), David Crawshaw makes the case that, because of coding agents, we’re now in an era where devtools will be personalized by individual users. Specifically, agents’ ability to jump into new codebases and build whatever we want means we’ll be hacking on the source of the devtools we use day to day (even those without extension APIs) adding features and automatically rebasing our patches across releases.
The argument is seductive, especially to a reader who thinks of themselves as a maker or tinkerer: after all, the idea that you can hyper-tune everything you use sounds like a utopia; it means things can work exactly how you want them to.
But I’d argue that Crawshaw underappreciates the ongoing cost when he writes
“Both the upfront fixed costs and the ongoing costs of personalizing software have disappeared.”
While AI has made the upfront cost of changing software a lot lower, properly personalizing software still requires your attention. And attention in the AI age is scarcer than ever.</description><content:encoded>&lt;p&gt;In
&lt;a href="https://blog.exe.dev/devtools-must-be-open-source"&gt;Devtools must be open source&lt;/a&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;
(&lt;a href="https://news.ycombinator.com/item?id=49156111"&gt;via&lt;/a&gt;), David Crawshaw makes the
case that, because of coding agents, we&amp;rsquo;re now in an era where devtools will be
personalized by individual users. Specifically, agents&amp;rsquo; ability to jump into new
codebases and build whatever we want means we&amp;rsquo;ll be hacking on the source of the
devtools we use day to day (even those without extension APIs) adding features
and automatically rebasing our patches across releases.&lt;/p&gt;
&lt;p&gt;The argument is seductive, especially to a reader who thinks of themselves as a
maker or tinkerer: after all, the idea that you can hyper-tune everything you
use sounds like a utopia; it means things can work &lt;em&gt;exactly&lt;/em&gt; how you want them
to.&lt;/p&gt;
&lt;p&gt;But I&amp;rsquo;d argue that Crawshaw underappreciates the ongoing cost when he writes&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Both the upfront fixed costs and the ongoing costs of personalizing software
have disappeared.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While AI has made the upfront cost of &lt;em&gt;changing&lt;/em&gt; software a lot lower, properly
personalizing software still requires your attention. And attention in the AI
age is scarcer than ever.&lt;/p&gt;
&lt;p&gt;Having maintained an open-source devtool designed to be modified and forked for
nine years now&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;, I can say that most users don&amp;rsquo;t &lt;em&gt;want&lt;/em&gt; to customize their
devtools. They want someone else to make the tool reliable and coherent, so they
can focus on the problems they opened it to solve. They reach for source
modification only as a last resort, when a change is critical to their workflow
and no other route works.&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;This is not to say that this sort of personalization won&amp;rsquo;t become more common: I
absolutely think it will. I just think it will take the form of strong core
systems with well-defined boundaries and extension points.&lt;/p&gt;
&lt;h3 id="personalization-still-needs-a-person"&gt;Personalization still needs a person&lt;a class="heading-anchor" href="#personalization-still-needs-a-person" aria-label="Permalink to Personalization still needs a person"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;As a thought experiment, imagine an open-source diff viewer with no extension
API. You find most diffs noisy, so you ask an agent to add a &amp;ldquo;focus mode&amp;rdquo; that
collapses imports, generated files, and other changes you consider mechanical.
It works well and becomes part of your normal workflow.&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;At first, life is good: everything works, and you&amp;rsquo;ve solved your problem. Then
upstream releases a new version that refactors the code you changed. As Crawshaw
suggests, you&amp;rsquo;re clever, so you&amp;rsquo;ve set up a bot to automatically rebase your
changes onto each update. It resolves any merge conflicts and moves your code to
the right place.&lt;/p&gt;
&lt;p&gt;But now suppose a few months pass and upstream makes a more substantial change:
it adds syntax-aware move detection. If a function moves between files, the
viewer now shows it as a move instead of one large deletion and addition. The
agent muddles through, rebases your focus-mode patch, and gets everything
compiling without any merge conflicts.&lt;/p&gt;
&lt;p&gt;But now what should focus mode do if the function has mostly moved but also
contains a few meaningful edits? Does it hide the whole block as a mechanical
move? Does it show only the edited lines without any surrounding context? Or
does it show the whole function?&lt;/p&gt;
&lt;p&gt;There isn&amp;rsquo;t an obviously correct answer; it depends on what &lt;em&gt;you&lt;/em&gt; want to see in
the diff. So what, are you going to interrupt your day to make this decision?&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a central paradox here: if you&amp;rsquo;re okay with &amp;ldquo;let the agent decide&amp;rdquo;, then
you&amp;rsquo;ve delegated your authority to the agent. For small choices, that may be
perfectly adequate. But if you want the tool to work exactly how you want, you
need to inspect and direct those choices. Do you really want to have opinions
about the design of a devtool you use forever?&lt;/p&gt;
&lt;p&gt;The key is &lt;em&gt;attention&lt;/em&gt;. Any one personalized tool might be unlikely to fail on a
given day, but if you do this to every devtool you use, you multiply the number
of tools that can unexpectedly demand your attention.&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt; Worse, those failures
are unpredictable: a tool might work for months and then break at the exact
moment you urgently need it. Most engineers want to use devtools to accomplish a
task; they don&amp;rsquo;t want their attention diverted to designing and repairing them.&lt;/p&gt;
&lt;h3 id="shared-tools-need-a-shared-reality"&gt;Shared tools need a shared reality&lt;a class="heading-anchor" href="#shared-tools-need-a-shared-reality" aria-label="Permalink to Shared tools need a shared reality"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;All of the above applies to small teams as well. You can share the attention
cost, but at the end of the day, the team still has to ask, &amp;ldquo;How much time do we
want to spend on tools versus doing the actual work we&amp;rsquo;re meant to be doing?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I also want to look beyond Crawshaw&amp;rsquo;s post and consider how this would work in
larger companies: what happens when many teams independently personalize the
same shared devtool?&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve seen this firsthand: another big tech company makes extensive use of
Perfetto, and has hit this exact problem. Different teams in that company
decided to fork Perfetto and add ad hoc changes for their local needs. Now one
of the engineers there is fighting to consolidate them because of how painful it
is when every team means something different by &amp;ldquo;Perfetto&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Imagine the same pattern with a company-wide bug tracker. Do you want every team
to use a version with subtly different meanings for status, priority,
assignment, and resolution? What happens when a bug moves between teams?
Different layouts and personal filters are harmless; the problem begins when
personalization changes the shared semantics or workflow.&lt;/p&gt;
&lt;p&gt;When a devtool mediates work between people, it also forms part of their common
language. Teaching, auditing, reproducing investigations, and verifying that
people are talking about the same thing all depend on a shared baseline.&lt;/p&gt;
&lt;h3 id="upstream-gets-more-malleable-too"&gt;Upstream gets more malleable too&lt;a class="heading-anchor" href="#upstream-gets-more-malleable-too" aria-label="Permalink to Upstream gets more malleable too"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;We should also not compare pre-AI upstream development with post-AI forks.
Maintainers can use the same agents to investigate reports, brainstorm ideas,
and prototype new features. I can certainly attest to how useful AI has been for
both implementing small feature requests from users and prototyping larger ones
to determine feasibility.&lt;/p&gt;
&lt;p&gt;In my opinion, upstream maintainers can, and should, spend the time saved on
implementation making their tools more adaptable: implementing broadly useful
features, adding configuration knobs where they make sense, and creating
extension points for recurring needs. AI lowers the cost of doing all of this,
including deciding where customization makes sense, adding more elaborate tests
on creative uses of your tools and verifying backwards compatibility as these
interfaces evolve.&lt;/p&gt;
&lt;p&gt;Upstream has a natural advantage here: any work done there benefits &lt;em&gt;everyone&lt;/em&gt;,
while a change to your personal fork benefits only you. By relying on upstream,
the attention required to build good software shifts from people who &lt;em&gt;don&amp;rsquo;t&lt;/em&gt;
want to spend it to maintainers who have chosen to care.&lt;/p&gt;
&lt;h3 id="the-building-block-economy"&gt;The building-block economy&lt;a class="heading-anchor" href="#the-building-block-economy" aria-label="Permalink to The building-block economy"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;In my opinion, there&amp;rsquo;s an alternative view that is much more likely to come
true, one described well in Mitchell Hashimoto&amp;rsquo;s article on the
&lt;a href="https://mitchellh.com/writing/building-block-economy"&gt;building-block economy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Concretely, it accepts the same premise: agents can write lots of code and build
niche applications, tools, integrations, forks, and so on. But instead of
assuming that forks will become the norm, Hashimoto argues that high-quality,
well-documented building blocks will power this world.&lt;/p&gt;
&lt;p&gt;I tend to agree: agents are very good at composing high-quality components. If
maintainers provide those components alongside a focused application, makers can
build specialized artifacts on top while accepting the costs. This model also
creates an easy feedback loop for ideas to flow upstream because the product was
designed to be extended.&lt;/p&gt;
&lt;p&gt;I see signs that the world is already heading in this direction. For example,
&lt;a href="https://www.sawyerhood.com/blog/an-agentic-ide-that-builds-itself"&gt;&lt;code&gt;bb&lt;/code&gt;&lt;/a&gt; is a
very interesting agentic IDE that I&amp;rsquo;ve been playing around with recently. It has
a very nice experience that lets users add substantial new product surfaces
through self-modification. But the key is that those features are plugins built
around a maintained core and extension system, not changes made by forking the
project directly.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;bb&lt;/code&gt; is also only a few weeks old at the time of writing, so we cannot draw any
firm conclusions from it, but it&amp;rsquo;s an interesting sign of the future, IMO.&lt;/p&gt;
&lt;h3 id="wrapping-up"&gt;Wrapping up&lt;a class="heading-anchor" href="#wrapping-up" aria-label="Permalink to Wrapping up"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;I care deeply about both the world of devtools and open source, so this is
something I feel very passionate about. Having been immersed in this world for
almost a decade now, I think the future of well-built tools with thoughtful
design and well-designed extension points is bright.&lt;/p&gt;
&lt;p&gt;Sure, there will always be folks who want to fork and make ad hoc changes. These
are the same people who already maintain custom builds of their window manager
or terminal emulator, carrying a stack of patches to get everything exactly how
they want it.&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt; For them, the tinkering is part of the enjoyment and craft.&lt;/p&gt;
&lt;p&gt;But I think most users just want to get their work done with devtools, and we
owe it to them to give them a strong, dependable experience instead of asking
them to take on the burden of maintaining the product themselves.&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;While the title reflects the conclusion, IMO it&amp;rsquo;s not very reflective of
&lt;em&gt;most&lt;/em&gt; of the post, which is actually about personalization at the source
level. If you&amp;rsquo;ve read my other posts (e.g.,
&lt;a href="https://lalitm.com/perfetto-oss-company-prio/"&gt;On Perfetto, Open Source, and Company Priorities&lt;/a&gt;),
you&amp;rsquo;ll know I&amp;rsquo;m a &lt;em&gt;staunch&lt;/em&gt; believer in open source so I&amp;rsquo;m of course in full
agreement with the title and conclusion.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;I&amp;rsquo;m a co-founding engineer on
&lt;a href="https://github.com/google/perfetto"&gt;Perfetto&lt;/a&gt;.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;For example, the upstream project might reject a feature request because the
change conflicts with its product direction, or the tool might not expose an
extension point capable of supporting it. In those cases, modifying the
source may be the only practical option.&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;Observant readers may note that this is not so dissimilar to Crawshaw&amp;rsquo;s own
example with &lt;a href="https://meat.dev"&gt;Meat&lt;/a&gt; :).&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;This is a very informal application of
&lt;a href="https://en.wikipedia.org/wiki/Lusser%27s_law"&gt;Lusser&amp;rsquo;s law&lt;/a&gt;, which says
that the reliability of a system composed of independent components in
series is the product of the reliability of those components.&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;The &lt;a href="https://suckless.org/"&gt;suckless&lt;/a&gt; ecosystem is an existing example of
this approach. &lt;a href="https://dwm.suckless.org/"&gt;&lt;code&gt;dwm&lt;/code&gt;&lt;/a&gt; and
&lt;a href="https://st.suckless.org/"&gt;&lt;code&gt;st&lt;/code&gt;&lt;/a&gt; are commonly customized by arbitrary
patches to their sources.&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content:encoded></item></channel></rss>