-
Notifications
You must be signed in to change notification settings - Fork 9
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
Handling dependencies across different tools for the different gz software and versions #190
Comments
Example of places to update when bumping a major release in ignition:
|
I don't think anyone would disagree that we should have a standard way of defining the dependencies for each version of each package. I believe there are a couple of axes to be discussed:
Existing approaches
declarative vs imperativeI believe we should get rid of any imperative approaches. Proposal: declarative distributed vs centralizedI believe we've had different degrees of success with our existing distributed and centralized approaches. I'll speak to the advantages of a distributed approach because that's what I've personally seen the best results with. Development perspectiveI believe the experience with In that situation, the centralized approach only holds back developers who are working on source code changes and don't care about how the infrastructure works. The distributed approach empowers them to iterate more quickly. Maintenance perspectiveChanging the dependencies of Ignition libraries, especially Ignition dependencies, currently involves a lot of work. The specific tasks are listed on ISSUE_TEMPLATE/bump_libraries.md, and one can look at issues like #574 to see the large number of pull requests that are necessary to update dependencies. That process has various problems, such as:
I'd love to simplify that, and I believe that a distributed approach would help here, because our source code is distributed. We can't get rid of a PR to the source code. Then why not leverage that PR to also update as much infrastructure as possible? Imagine if we could configure colcon dependencies, macOS dependencies, release dependencies, enable nightlies... All with a single PR? That can be iterated faster, is less error-prone, it's easier for a newcomer to perform, it's easier to be kept in sync... To me, that's the dream. Proposal: distribute all the things! |
I don't have a problem with some centralization if the data is simple enough. I think A caveat: if we stored all our dependency information in package.xml and then auto-generated the content of So I would take it on a case-by-case basis and not throw out any of our tools just because they are centralized. But I definitely prefer |
We now have |
The software dependencies for our packages are mainly coded for building in
CMakeList.txt
. When creating building and CI environments the code is hosted in different places:First feeling shared with @mjcarroll is that rosdep would be a bit too much and to get full support of it we would probably need to implement part of ROS specific stuff like package.xml.
The text was updated successfully, but these errors were encountered: