ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A

Github "Used by" feature for ROS packages?

For some time now, Github displays a Used by button/badge at the top of the page for repositories containing packages/libraries/projects in Ruby, Javascript, Python, Java and some other languages (from here):

For languages with project/package management features (such as Python, Javascript (NPM) and PHP), Github parses the relevant files (pom.xml, package.json, requirements.txt, etc) to derive and display this information (docs). This is currently only supported for a specific set of packaging and project infrastructures (docs).

Long ago, when this feature was first introduced, I’ve contacted Github support about this, but only got the standard “thanks for reaching out, will look into it sometime” reply. Now that it’s been around a bit longer, it may make sense to try again.

As quite a few ROS packages are hosted by/on Github (or actually: quite a lot), I was wondering what it would take to get Github to add support for ROS package manifests.

It would offer a tremendously convenient way to discover new ROS packages, show dependencies between packages (and repositories) and even allow API access to this data.

Technically, I’m thinking this could be achieved similar to how the current rosdep / rosinstall_generator / Bloom / status_pages / wiki-metadata infrastructure works. The data is all there: Github “just” needs to grab it, match it (or the cached inverse) and display it.

We could of course all start filling in the Github support contact form, but perhaps there is a better way.

Does anyone here have an idea?

PS: the ROS wiki offers similar data, but “only” for packages which have actually been released (or at least: for which the author has made the effort to register doc or devel jobs). The Used by feature would not need to be limited to this. It would make implementing it somewhat more diffult of course, as it cannot rely on the rosdistro database any more in this case.

PPS: of course, also has this information. I’m not advocating for replacing it.


Maybe a dumb question, but we have a package.xml why not just parse that? If you have key1 in the package.xml, and GitHub can be told where the rosdistro.yaml is to look up key1, that should close the loop on github URLs.

1 Like

That’s not a dumb question, and essentially what I suggested.

Why I believe it may be beneficial to use the the rosdistro cache is that it makes reverse lookups easier. Saves some parsing.

Oh, and:

In my experience, questions/comments with just In them typically either underestimate something or contain quite a few hidden hard-to-solve challenges :wink:

This however then only works for packages that have been released if we look at that cache for the info. Either way, dependencies will need to be looked up from some released list, but teaching GitHub to look at the package.xml files in a repo lets the “used by” feature work in all ROS GitHub packages, regardless of their release state.

Its also Microsoft’s server time, I’m not too concerned with caching :wink:

Yes, all of which I also considered in my OP. :slight_smile:

:coffee: @smac? :smiley:

They might be, though. :stuck_out_tongue: Every new feature has a cost and if we can help them reduce the potential cost it reduces the barriers to them providing a feature we want.

Although in the case of ROS I really think the extra server time may end up a rounding error…

Github is an independent entity. However, we’re (Edge Robotics at Microsoft) are going to see what we can find.


With tons of azure cloud backing added since the acquisition to support all the Actions runners they’ve added, etc