Exploring AI-Powered Codebase Migration: A Developer's Journey
Tags: ai, programming, machinelearning, chatgpt
Published: 2024-01-09 15:26:29

## Introduction:

In a world where modern frameworks and tools are rapidly evolving, many projects find themselves tied to legacy technologies. Migrating a codebase is not only tedious but also a financially daunting task.The effort required for seemingly simple platform upgrades scales drastically with project size. 


## AI as a Migration Ally:

Code migration typically doesn't entail adding new functionalities but rather shifting existing ones to a more contemporary platform. This task, repetitive and systematic, seems apt for AI intervention. Could Large Language Models (LLMs) like ChatGPT 4 be the answer to simplifying codebase migration? Let's investigate.


## Experimenting with ChatGPT 4:
Ask ChatGPT:

> Can you port a PHP (Yii2) application to Nestjs. I need ChatGPT to do all this work.

Surely it returns some general advice, for example: Understand the existing app, set up new environment, move Business Logic, etc
Okay, let's dive in.

> I have a project on PHP(Yii2), I need more info about it, like framework, version, give me a command to run in terminal ….

A couple of clarifications and ChatGPT suggest this command: 

`(php -v; echo "Composer.json content:"; cat composer.json; echo "Project Structure:"; find . -type d -name vendor -prune -o -print) | pbcopy
`
Next, let's gather the output and put ChatGPT to the test: Can it handle the entire job for us?"

![output example 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mnc9qwlj0mh1oywx96i2.png)

With this, the AI's responses became more and more accurate, but full automation still seemed far away. 

Embracing the challenge, I decided to take the experiment a step further. Instead of basic inquiries, I provided the AI with detailed data from the project's source files, including configurations, routes, and more. It was time to see if the AI could handle more complex, real-world tasks. 
But are there ready-made solutions?


## Exploring AI Tools:

I found the joshpxyne/gpt-migrate project, which offers a promising solution: 'Easily migrate your codebase from one framework or language to another.' It appeared to follow a similar approach, so I decided to give it a try.

Just a heads-up, don't forget to double-check the AI ​​API usage limits if you want to try it ;)

After several attempts and adjustments, it became evident that migration isn’t just about going through files one by one and adding libraries; it involves a more nuanced and comprehensive approach.

## Conclusions:

- **Feasibility**: Direct conversion from any framework to any other is not always possible. The goal is to maintain functionality, like moving from CodeIgniter to Laravel, Vue to React, or React Native to SwiftUI.
- **AI's Role**: AI is an assistant, not a replacement for developers.
- **Human Insight**: Understanding both the source and target projects is essential for successful migration.

Clearly, the role of developers remains vital...
Where is the previous instruction from AI? 😂

👨🏻‍💻 Setting up a project, familiarising yourself with the entire structure of source and target projects, etc … 

Create a project and use AI for generating new files based the old ones


![output example 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cbp2s1e8tq5ew8sa1y3c.png)

![output example 3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d0gb83bqcpftfj2692rq.png)

The outcome was promising. The AI managed to effectively convert components like business logic, routers, configurations, ORM, and controllers. This showcased a potential for AI in streamlining the migration process.

## What’s next? 
There's a lot more we can explore, and  I'm planning to dive deeper into some key AI areas in future articles. Which of these topics would you be most interested in reading about?

**Unlocking the Power of Automation**: Exploring how batch file migration using APIs. How can we streamline the process on a larger scale?
**Mastering Error Correction**: Exploring AI's capability in syntax checking and fixing files. And what about using pseudocode as an approach to ensure functional integrity?
**Ensuring Testing Integrity**: Verifying that the AI-generated code not only works but also performs the intended functions correctly.
**Prompting for Perfection**: Crafting effective prompts to guide your AI towards desired outcomes.
(Feel free to add your own topics in the comments!)


## Framework Usage Disclaimer:

Please note, the frameworks mentioned throughout this article serve solely as examples. The selection of any specific framework as a source or target is intended only for demonstration purposes. :)