Neos project mono repositories

Hey all,

based on:


I would like to discuss our best practice suggestion for the folder containing the packages delivered with the distribution.

I originally used Source in my first experiment, Karsten suggested Sources but we talked about something with Packages in it, so now splash uses DistributionPackages and the example uses LocalPackages. Additionally ProjectPackages or BundledPackages could work as well. To have this written down a short poll to take a decision:

There was a poll here that unfortunately didn’t show voters and so was not good to use, but that original poll ended in src, we redid the poll to make sure we can separate team member votes, therefore the original poll has been removed now.


Seems we have a preference for DistributionPackages finally so that will be the officially documented way.

Since this is a composer concept (of directory package repository) I don’t see why it’s necessary to come up with a best practice other than a description of the concept, and where to use the name you might choose.

It’s more of a documentation task of the concept “Mono repository” and how you (in general) organize a Flow project in terms of version control etc.

1 Like

That is true of course and I obviously only meant to have a unified best practice name for documentation and tools like splash. Also I would find it nice to find most systems with the same name :slight_smile:


As long as the voting result is not reflected in the Core but serve as a good example in the documentation I’m up for whatever :slight_smile:

I’m strongly in favor of “DistributionPackages” since it is the most “correct” name - it’s the directory for the packages that come with the distribution itself. LocalPackages sounds like they could be only for local development or something along these lines.

I’m voting for Source: everytime I see a repository out there in the wild with a reasonable number of files in the root and I’m interested in the code I scan this directory for a src directory to look into.
This is (naming it src) the most common way in software development I would say.

1 Like

Sounds as if the direction is DistributionPackages so far. I will keep it on for another day or so, but I am super fine with that. I just voted LocalPackages because less work for me :smiley:

I would claim that Distribution is a internal used word for what you deploy, and Source/Sources/src is more in-sync with “how everyone else is doing” :slight_smile:

1 Like

I had another think about this, and decided that - for me - what @sorenmalling and @mstruebing said overrules the “correctness” of DistributionPackages. “Source” will be better understood by the majority, so changing my vote.
ED: Ironically, that makes “LocalPackages” come out ahead, which I like the least of the three :sweat_smile:

1 Like

If we take this up a notch and look at the repository structure (inspired by , wouldn’t it end up with something like

- composer.json
- composer.lock
- [PackageFolderName]
  - Vendor.Package1
    - Classes
    - Configuration
    - ...
  - Vendor.Package2
    - Classes
    - Configuration
    - ...

And then you run a composer install and then you are good to go? So, to keep “in sync” with other structures I would say that src is the correct usage, instead of coming up with a new convention. Then your repository will basically look like

- composer.json
- composer.lock
- src/

at thats it. I like that simplicity a lot.

And I created a example repository to show the concept and allow you to test it

Sure, that works as well!

Would be fine with src as well, that is also how Java packages look.


src is also fine for me

Need to restart the poll to do so.

src would be perfect. I changed my poll to something else

I changed “something else” with “src”.

Looks like we have a majority for “src” :slight_smile:

Yep, apparently…

As this is only to become a documented best practice, we could still change it at a late date, but for now seems “src” is the preferred path name. @mficzel would you change splash at some point? I will change my example repository.