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

Epic: Simplify the structure of the core repo and factor out Epoch in its own repo #1276

Closed
15 of 17 tasks
cmnrd opened this issue Jul 6, 2022 · 6 comments
Closed
15 of 17 tasks
Labels
Milestone

Comments

@cmnrd
Copy link
Collaborator

cmnrd commented Jul 6, 2022

This epic specifies the new envisioned and simplified project structure as well as concrete incremental steps we can take towards this goal.

Overview

Our current is very bloated and it is hard for newcomers to find their way through the forest of packages and directories. This structure has been been mostly dictated by Xtext and Eclipse. However, since we are moving away from Eclipse as our primary development IDE and Epoch is only one of our supported LF IDEs, we should aim at freeing our core repository from the constraints and overhead that Eclipse imposes. The best way to do this, is to separate our "core" repository from Epoch. Ideally, we strip the lingua-franca repository from all unnecessary Eclipse dependencies and Eclipse related code. This should instead be hosted in a separte Epoch repository where lingua-franca is a submodule.

The Goal

  • The lingua-franca repository should look something like this:
    lingua-franca/
    ├── bin/
    ├── lib/
    ├── src/
    ├── test/
    
    Of course we will need some additional files and directories for gradle and other meta files, but the idea is to have a single point of entry for the source code. All code that is needed for our command line tools and the language server, should be located within src/. This includes the contents of org.lflang, org.lflang.lfc, org.lflang.diagrams and org.lflang.lds. The primary build tool for this repository would be gradle and any IDE could be used for development
  • The Epoch repository would look similar to the current lingua franca repository. Most notably, org.lflang would become a submodule and point to the lingua-franca repository. The primary build tool for this repository would be maven and Eclipse the main IDE for development.
  • Since the restructuring will be a breaking change, we also want to use the opportunity to fix Eliminate large files from git history #1078 and Rename master to main #423. The goal is to clean our git history and push the cleaned history to a new main branch. This way we can keep the old master branch for legacy, but start developing on main in our freshly cleaned up repo.

Action Items

Optional:

@oowekyala
Copy link
Collaborator

I don't see this mentioned here, but I think it would be nice to move the runtime submodules out of src/lib. It's unconventional, the src directory should only contain sources that Gradle will compile. AFAIU they were placed there to be packed in the Jar archive, but that doesn't need to be. We can just tell gradle to use these directories as resource directories.

A more conventional structure would be to have this lib directory at the root of the repo.

@cmnrd
Copy link
Collaborator Author

cmnrd commented Nov 22, 2022

Thanks for the remark. I made this now an explicit part of the action items.

@cmnrd cmnrd modified the milestone: 0.5.0 Dec 8, 2022
@cmnrd cmnrd modified the milestones: 0.5.0, 0.6.0 May 4, 2023
@cmnrd cmnrd modified the milestones: 0.6.0, 0.5.0 Jun 2, 2023
@lhstrh lhstrh modified the milestones: 0.5.0, 0.6.0 Jul 25, 2023
@cmnrd
Copy link
Collaborator Author

cmnrd commented Sep 11, 2023

Closing this as the major part of the work is complete and the remaining issues are kind of open-ended

@lhstrh
Copy link
Member

lhstrh commented Sep 11, 2023

Should we still rename master to main? It will break a lot of things...

@cmnrd
Copy link
Collaborator Author

cmnrd commented Sep 12, 2023

I think we should. Mostly because half of our repos use main and it would be nice to get some consistency...

The issue currently has the 0.6.0 milestone assigned, but I wouldn't mind pushing it a bit further down the road.

@lhstrh
Copy link
Member

lhstrh commented Sep 12, 2023

OK, makes sense. I'd rather just bite the bullet honestly...so I'm OK with doing it as part of 0.6.0...

@cmnrd cmnrd closed this as completed Sep 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants