Revitalize your old codebase with AI-Powered Refactoring

Remodel is an AI-driven developer tool designed to help software engineers migrate their old web applications to a new tech stack while preserving all original functionality.

With support for JavaScript/TypeScript and React as the output, Remodel can refactor web apps from any language and framework.

Brought to you by @miklosme

Moore's Law for Developer Productivity

Like most things in tech, software developer productivity is also constantly improving. In web development, it's a common source of comedy to joke about the struggle of keeping up with all the new advancements. It is estimated that

every three years, writing the same software becomes 50% easier.

This enables developers to create more complex and feature-rich user experiences exponentially cheaper.

However, this remarkable productivity growth primarily benefits new projects. Older software often becomes buried under layers of technical debt, as rewriting code is time-consuming and laborious.

Unlocking Value in Established Projects

  • Revitalizing older software is a powerful way to unlock hidden value
  • Mature projects have proven product-market fit, making investments in them low-risk and high-return
  • Refining older projects can be viewed as starting a new one but from a solid foundation

AI-Assisted Code Refactoring: A Game Changer

Traditional code refactoring has been a challenging aspect of software development, especially for developers working under tight deadlines and budget constraints. AI-assisted code refactoring promises to enable more comprehensive code changes while minimizing errors, fostering faster adoption of new technologies, and enhancing software quality.

By automating the refactoring process and efficiently managing technical debt, AI tools could empower developers to focus on high-impact tasks, maintain clean and efficient code, and contribute to a more agile software ecosystem. This fundamental shift to AI-assisted code refactoring promises to substantially impact the industry, addressing long-standing limitations that have never been resolved before.

The Importance of Better Software Testing

As we look toward the future of AI-generated code, we need to understand the limitations of purely depending on a Large Language Model. A zero-shot approach would probably not produce an output that satisfies all criteria. Features could be lost, and functionalities could mutate as the language model creates imperfect results.

With Remodel, I propose a Domain Specific Language (DSL) that would define the original software's requirements and act as a specification that the AI solution could consult. This SDL would be similar to an automated software testing language, but it would only focus on the program requirements (as opposed to testing languages that also focus on implementation details). This approach lets us build a companion solution that would enable human engineers to quickly map out all the functionality a given software has.

This DSL could be...

  • ...generated through session recording. A manual tester performs the expected tasks, and the underlying software behavior is recorded as the DSL.
  • ...acting as an intermediary between multiple developer tools, functioning as a protocol to compose various AI tools.
  • ...being human-readable, which helps technical teams review and reason about existing functionalities and communicate expected behavior after the refactor.

Why I Started Remodel

Throughout my career, I have seen first-hand the immense value that exists in legacy software, as well as the challenges that come with upgrading components in older applications. Sometimes, I refer to myself as a Software Archaeologist because I have always been that person in my various teams who undertakes to dig up old libraries and to figure out the optimal way to upgrade. I'm biased toward improving software and fixing long-standing issues.

That's why I'm incredibly excited about using AI to fix software—all software. This is a historic moment for the software industry, with numerous problems waiting to be solved, developer tools with immense impact emerging, and end-users ultimately benefiting from vastly superior experiences compared to what we have today.

Questions I'm Eager to Explore

  • How can we leverage LLMs to rapidly convert existing systems to adopt new technologies?
  • What does an AI-native developer tool look like?
  • What kind of consumer software will we have when productivity increases 100-fold?