Replies: 2 comments
-
Good suggestion but just checking, have you considered using gradle.properties file to externalize those settings? |
Beta Was this translation helpful? Give feedback.
0 replies
-
Yes but it's insufficient and can't address the breadth of issues that could be solved if the information was in a single place and everything else was managed around that concept. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
openCAESAR projects are very difficult to manage. There is not a single location where a developer can go to determine what the project is comprised of. This makes it difficult for new developers to understand how the tooling works and the minimum requirements to get their project up and running. Once a project is alive, refactoring the project is incredibly difficult because information is not in a single location.
openCAESAR needs to consider using a single source of truth for project configuration. This is akin to CMakeLists.txt, Visual Studio project files, or generally any config file that most modern frameworks define and utilize. The current openCAESAR methodology has the following major issues:
build.gradle is effectively overused and abused. The gradle file has most but not all of the information that determines what is used or not. More importantly, though, it does not explicitly list what the project contains. Further, the chaining of what is effectively duplicate information from task to task makes it really easy to break the chain, project restructuring difficult, and very easy to stomp on other unused features.
There is an awkward dependency on catalog.xml in the root folder as well. The information in the catalog.xml file can force the openCAESAR tasks to ingest data for processing even though the files that are picked are never used within the project. This behavior absolutely wreaks havoc when restructuring a project. There are also documented catalog.xml issues when projects use other openCAESAR projects as submodules.
I would like to suggest the following idea:
There needs to be a configuration file where all
Build.gradle needs to reference the configuration file. This allows rapid change of locations, namespaces, etc. The build.gradle should never change because the contents of the project have changed.
openCAESAR tasks needs to be updated to work with this new style of project management
In build.gradle (and wherever appropriate), a clear set of interface methods needs to be defined for integration with the Rosetta functionality.
The ultimate goal is to have a build.gradle that never changes, unless you are power user trying to adjust the build process. Otherwise, my build.gradle file looks like yours.
Why is this important and useful?
Here's a sample configuration file to help illustrate the ideas presented in this discussion. I am using a yaml format to keep things simple (this is not a recommendation for actual implementation).
Beta Was this translation helpful? Give feedback.
All reactions