[ros-users] [Discourse.ros.org] [Autoware] Splitting the Autoware.AI repository and changing the organisation

Geoffrey Biggs via Discourse.ros.org ros.discourse at gmail.com
Tue Mar 5 08:09:51 UTC 2019

The current approach of using a single repository for all of Autoware has become increasingly
untenable as the size of the code has grown. There are several problems with maintaining this

- The source code is buried several layers down a deep directory hierarchy.
- New contributors are confronted with a huge amount of code, which discourages them from diving
  in to make a bug fix. Not knowing where to put a package or algorithm they want to contribute is
  also a symptom.
- Doing CI for a single change in a single file, no matter how small, requires that the CI pipeline
  build all of Autoware. This currently takes anywhere from an hour and a half up.
- It is essentially impossible to version different parts of Autoware independently.

To fix this, one of the major items on the roadmap for 1.12 is to split the repositories and
reorganise the package layout. This will be done as early in the 1.12 iteration as possible, so I'd like to
start discussing it now and come to an agreement on what repositories we will create and what they
will contain.

Based on discussions with @esteve regarding how to layout the repositories for Autoware.Auto, here
is a starting-point proposal for the new repositories.

- **autoware**
  Root repository. Contains a README file, the `.repos` file for checking out/installing Autoware
  using `vcs` (which will be the preferred method from 1.12), and nothing else.
- **core_perception**
  Core packages related to understanding the world around the car.
- **core_planning**
  Core packages related to planning where the vehicle should go.
- **core_control**
  Core packages related to controlling the vehicle so that it goes where it should.
- **drivers**
  Hardware drivers for interacting with hardware, such as the Velodyne driver. Ideally, all
  packages in here will be candidates for eventually being pushed upstream somewhere.
- **utilities**
  Packages that we develop that are not core to Autoware, i.e. you do not need them to drive a
- **visualisation**
  Packages dealing with visualising sensor data, the state of the car, etc.

In addition to the above, we *may* create additional library-specific repositories for libraries we
create that do not depend on ROS or any functionality from a ROS package. A good example would be
an algorithm for a point cloud processing function. Thanks to the magic of `vcs` and `colcon`, such
non-ROS repositories are relatively easy to integrate into a workspace.

Each repository will follow a fairly flat directory structure. Although it is not a rule, as a
guideline I think each repository should be a collection of packages at the same directory level.

This work will be done fairly early in the work for 1.12, because we don't want to do it while we
have lots of pull requests in flight. I will start another thread soon to discuss the timeline for
the first couple of weeks of the 1.12 work.

Related to splitting the repositories, we are trying to get our hands on the "Autoware"
organisation name. It has been registered by someone else (Shinpei claims it is not him) since
2017, but has not been used since creation. We think that we have a case for getting the name based
on GitHub's strict anti-name-squatting policy and the activity level in our project. If we are able
to get the name, then we will perform the following actions.

1. [Rename](https://help.github.com/en/articles/renaming-an-organization) the CPFL organisation to Autoware.
1. Create a new CPFL organisation.
1. Move all non-Autoware related repositories to the new CPFL organisation.

We will wait a week or two between the first two steps to give people time to update the URLs in
their local checkouts.

If you are wondering why we are renaming organisations rather than creating a new one for Autoware,
there are two reasons.

1. It won't mess with people's subscriptions (we think).
1. Our fearless leader likes his stars.

Also related to splitting the repositories is reorganising the package structure. I will start another
thread to discuss that, including how much we need to do before splitting the repositories and how
much can be done after. Please save discussion on this topic for that thread.

[Visit Topic](https://discourse.ros.org/t/splitting-the-autoware-ai-repository-and-changing-the-organisation/8139/1) or reply to this email to respond.

More information about the ros-users mailing list