Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assess usage of Kai to migrate Coolstore to Quarkus #105

Open
jwmatthews opened this issue Mar 25, 2024 · 3 comments
Open

Assess usage of Kai to migrate Coolstore to Quarkus #105

jwmatthews opened this issue Mar 25, 2024 · 3 comments
Labels
priority/nextup Issues we want to address soon
Milestone

Comments

@jwmatthews
Copy link
Member

jwmatthews commented Mar 25, 2024

Overview

This task is intended to help us walk through a full migration of a sample app from JavaEE to Quarkus using Kai. The intent is that the entire development team will walk through the full end to end operations of this and experience each step of the journey.

Goals

  • Ensure we have useful documentation so others, outside of immediate team are able to replicate what we've done
    • When we run into an undocumented hiccup, lets improve the docs
  • Find the problems/gaps/issues in the end to end workflow, write up issues and triage what is a blocker for first demo
  • Ensure knowledge transfer in team so every developer is familiar with every step an end user will walk through
  • Establish greater empathy with problem domain for specifics of Java EE to Quarkus as it applies to this specific application
  • Assess the quality of results from the LLM
    • What is working today?
    • What results are bad/not helpful? Help us to learn where we need to improve to generate better fixes
  • Assess is we can continue with granite13b or if we need to use another model, perhaps mixtral

Assumptions

Assume that our demo application is Coolstore at: https://github.com/konveyor-ecosystem/coolstore/tree/main

  • 'main' branch is the starting code to use, it represents the code for Java EE
  • 'quarkus' branch is a 'golden solution' that can be referred to as an answer key to see what a representative version of the code migrated to Quarkus would look like.

Tasks (emphasis from CLI client)

  1. Follow the steps in https://github.com/konveyor-ecosystem/kai/tree/main/example to fetch the demo app
  2. In the demo app cloned directory, create a new branch for the model you will be using, assume 'granite13b' we will use this later to save the updated files kai created so we can compare to what is missing.
  3. Walk through the documentation to run kai server
  4. Walk through the documentation to run the demo client which started in PR CLI client to run through demo workflow on migrating Coolstore #93
  5. Run the demo client, probably will take < 90 minutes
  6. You should now see ~20+ files updated in the coolstore application
  7. Save the updated coolstore files in a branch so you can go back an refer to what Kai produced versus what you manually fixed so the app would compile
  8. Attempt to compile for Quarkus
    • Note the errors, lets create a running document per model with the impacted files and what errors we saw when trying to compile to quarkus
    • For each error we encounter, manually fix
    • Repeat process until app is compiling for Quarkus
  9. Attempt to deploy the app locally with Quarkus
    • Note any errors encountered and manually fix
  10. Attempt to deploy the app to an OpenShift cluster
  • Note any errors encountered and manually fix
  1. Save the coolstore source code files in another branch that represents the working version from Kai and your manual changes
  2. Clean up the document with errors encountered, grouped per file
  3. Assess the differences from the 'kai' produced files in coolstore branch and what you ultimately arrived at with manual changes.

Tasks (from IDE)

  1. Install the IDE (need documentation)
  2. From the above steps, let's pick ~3-4 files that are interesting and note that these 3-4 files will be migrated with the IDE+kai.
  3. Create a new branch for coolstore application, use the last branch you created above that had kai fixes AND your manual changes which worked for Quarkus.
  4. Reset the state of the 3-4 files you identified to match the file contents from 'main' branch. You want to get a situation where the app is partially migrated to Quarkus, except these ~3-4 files are NOT migrated yet.
  5. Save this branch for coolstore in your fork, it will form the basis for a potential workflow
  6. Use the IDE to migrate with Kai these 3-4 files
  7. Repeat steps of compile to Quarkus and manually update
  8. Note any hiccups that prevent this from being clean, see if we can improve with better analysis hints/prompts/etc
  9. Deploy app locally with Quarkus
  10. Deploy app to OpenShift
@jwmatthews
Copy link
Member Author

@shawn-hurley
Copy link
Contributor

@jwmatthews wondering what you want to do with this issue in regards to the new agent work. I think that we probably still have some prompting work, but wondering if we want to re-use or close and re-create a specific issue with different prompts?

@dymurray dymurray modified the milestones: v0.0.5, v0.1.0 Jan 21, 2025
@fabianvf fabianvf moved this to In Progress in Kai Tech Preview Release Feb 11, 2025
@shawn-hurley shawn-hurley modified the milestones: v0.1.0, v0.2.0 Feb 14, 2025
@fabianvf
Copy link
Contributor

related: #115

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority/nextup Issues we want to address soon
Projects
Status: In Progress
Development

No branches or pull requests

9 participants