pharo-users@lists.pharo.org

Any question about pharo is welcome

View all threads

Project and package structure recommendations

SM
Steffen Märcker
Wed, Apr 19, 2023 3:54 PM

Hi,

I'd like to ask for your advice or best practices regarding the package
structure of a project. So far I have understood:

  • Iceberg can store multiple packages (project?) in a git repository
  • A package (or multiple?) and its dependencies is loaded via a baseline
  • A package can have flags (= categories?)

Suppose, a project has

  • A core part
  • One or multipel optional parts, that a user may or may not want to load,
    too
  • Tests for the core
  • Tests for each optional part

What's the recommended way to structure this in Pharo? For example, I've
seen that some code in Pharo has its tests in the same package but
flagged/categorized, other code has a separate package for tests. Also, can
a (git) repository have multiple baselines?

Sorry, if I am asking the obvious but I did not manage to find guidlines in
the documentation yet. It might very well an oversight be myself.

Kind regards,
Steffen

Hi, I'd like to ask for your advice or best practices regarding the package structure of a project. So far I have understood: - Iceberg can store multiple packages (project?) in a git repository - A package (or multiple?) and its dependencies is loaded via a baseline - A package can have flags (= categories?) Suppose, a project has - A core part - One or multipel optional parts, that a user may or may not want to load, too - Tests for the core - Tests for each optional part What's the recommended way to structure this in Pharo? For example, I've seen that some code in Pharo has its tests in the same package but flagged/categorized, other code has a separate package for tests. Also, can a (git) repository have multiple baselines? Sorry, if I am asking the obvious but I did not manage to find guidlines in the documentation yet. It might very well an oversight be myself. Kind regards, Steffen
GC
Gabriel Cotelli
Wed, Apr 19, 2023 5:06 PM

Most projects that I'm aware of, follow something like this:

  • 1 project per git repository
  • One or more packages for the functional part, separate packages for the
    tests (because if you only use categories you can't load only the runtime
    required code and exclude the tests)
  • If your project has optional parts, and this code is in different
    packages you can provide in the Baseline "groups" for loading sub-sets of
    the packages

Usually, we use https://github.com/ba-st/GitHub-setup for generating the
initial boilerplate of new projects.

Regards,
Gabriel

On Wed, Apr 19, 2023 at 12:55 PM Steffen Märcker merkste@web.de wrote:

Hi,

I'd like to ask for your advice or best practices regarding the package
structure of a project. So far I have understood:

  • Iceberg can store multiple packages (project?) in a git repository
  • A package (or multiple?) and its dependencies is loaded via a baseline
  • A package can have flags (= categories?)

Suppose, a project has

  • A core part
  • One or multipel optional parts, that a user may or may not want to load,
    too
  • Tests for the core
  • Tests for each optional part

What's the recommended way to structure this in Pharo? For example, I've
seen that some code in Pharo has its tests in the same package but
flagged/categorized, other code has a separate package for tests. Also, can
a (git) repository have multiple baselines?

Sorry, if I am asking the obvious but I did not manage to find guidlines in
the documentation yet. It might very well an oversight be myself.

Kind regards,
Steffen

Most projects that I'm aware of, follow something like this: - 1 project per git repository - One or more packages for the functional part, separate packages for the tests (because if you only use categories you can't load only the runtime required code and exclude the tests) - If your project has optional parts, and this code is in different packages you can provide in the Baseline "groups" for loading sub-sets of the packages Usually, we use https://github.com/ba-st/GitHub-setup for generating the initial boilerplate of new projects. Regards, Gabriel On Wed, Apr 19, 2023 at 12:55 PM Steffen Märcker <merkste@web.de> wrote: > Hi, > > I'd like to ask for your advice or best practices regarding the package > structure of a project. So far I have understood: > - Iceberg can store multiple packages (project?) in a git repository > - A package (or multiple?) and its dependencies is loaded via a baseline > - A package can have flags (= categories?) > > Suppose, a project has > - A core part > - One or multipel optional parts, that a user may or may not want to load, > too > - Tests for the core > - Tests for each optional part > > What's the recommended way to structure this in Pharo? For example, I've > seen that some code in Pharo has its tests in the same package but > flagged/categorized, other code has a separate package for tests. Also, can > a (git) repository have multiple baselines? > > Sorry, if I am asking the obvious but I did not manage to find guidlines in > the documentation yet. It might very well an oversight be myself. > > Kind regards, > Steffen >
NB
Noury Bouraqadi
Wed, Apr 19, 2023 5:10 PM

BTW, Beside this mailing list, there is the Pharo Discord for discussions.

Noury
On Apr 19 2023, at 7:06 pm, Gabriel Cotelli g.cotelli@gmail.com wrote:

Most projects that I'm aware of, follow something like this:

  • 1 project per git repository

  • One or more packages for the functional part, separate packages for the tests (because if you only use categories you can't load only the runtime required code and exclude the tests)

  • If your project has optional parts, and this code is in different packages you can provide in the Baseline "groups" for loading sub-sets of the packages

Usually, we use https://github.com/ba-st/GitHub-setup for generating the initial boilerplate of new projects.

Regards,
Gabriel

On Wed, Apr 19, 2023 at 12:55 PM Steffen Märcker <merkste@web.de (mailto:merkste@web.de)> wrote:

Hi,

I'd like to ask for your advice or best practices regarding the package
structure of a project. So far I have understood:

  • Iceberg can store multiple packages (project?) in a git repository
  • A package (or multiple?) and its dependencies is loaded via a baseline
  • A package can have flags (= categories?)

Suppose, a project has

  • A core part
  • One or multipel optional parts, that a user may or may not want to load,
    too
  • Tests for the core
  • Tests for each optional part

What's the recommended way to structure this in Pharo? For example, I've
seen that some code in Pharo has its tests in the same package but
flagged/categorized, other code has a separate package for tests. Also, can
a (git) repository have multiple baselines?

Sorry, if I am asking the obvious but I did not manage to find guidlines in
the documentation yet. It might very well an oversight be myself.

Kind regards,
Steffen

BTW, Beside this mailing list, there is the Pharo Discord for discussions. Noury On Apr 19 2023, at 7:06 pm, Gabriel Cotelli <g.cotelli@gmail.com> wrote: > Most projects that I'm aware of, follow something like this: > > - 1 project per git repository > > - One or more packages for the functional part, separate packages for the tests (because if you only use categories you can't load only the runtime required code and exclude the tests) > - If your project has optional parts, and this code is in different packages you can provide in the Baseline "groups" for loading sub-sets of the packages > > Usually, we use https://github.com/ba-st/GitHub-setup for generating the initial boilerplate of new projects. > > Regards, > Gabriel > > > > On Wed, Apr 19, 2023 at 12:55 PM Steffen Märcker <merkste@web.de (mailto:merkste@web.de)> wrote: > > Hi, > > > > I'd like to ask for your advice or best practices regarding the package > > structure of a project. So far I have understood: > > - Iceberg can store multiple packages (project?) in a git repository > > - A package (or multiple?) and its dependencies is loaded via a baseline > > - A package can have flags (= categories?) > > > > Suppose, a project has > > - A core part > > - One or multipel optional parts, that a user may or may not want to load, > > too > > - Tests for the core > > - Tests for each optional part > > > > What's the recommended way to structure this in Pharo? For example, I've > > seen that some code in Pharo has its tests in the same package but > > flagged/categorized, other code has a separate package for tests. Also, can > > a (git) repository have multiple baselines? > > > > Sorry, if I am asking the obvious but I did not manage to find guidlines in > > the documentation yet. It might very well an oversight be myself. > > > > Kind regards, > > Steffen > >
SM
Steffen Märcker
Thu, Apr 20, 2023 7:30 AM

Thank you both for your answers. That is certainly helpful.

  • I just noticed that most (all?) package names in the Pharo image do not contain spaces although it is possible to create such names. Is this discouraged or are there issues to watch out for?
  • Is there a reference how the name mangling of packages, categories and such works? For instance, it seems if a class def states "MyPackage-Tests" it appears in MyPackage under the category tests.

Kind regards,
Steffen

Noury Bouraqadi schrieb am Mittwoch, 19. April 2023 19:10:13 (+02:00):

BTW, Beside this mailing list, there is the Pharo Discord for discussions.

Noury
On Apr 19 2023, at 7:06 pm, Gabriel Cotelli g.cotelli@gmail.com wrote:
Most projects that I'm aware of, follow something like this:

  • 1 project per git repository
  • One or more packages for the functional part, separate packages for the tests (because if you only use categories you can't load only the runtime required code and exclude the tests)
  • If your project has optional parts, and this code is in different packages you can provide in the Baseline "groups" for loading sub-sets of the packages

Usually, we use https://github.com/ba-st/GitHub-setup for generating the initial boilerplate of new projects.

Regards,
Gabriel

On Wed, Apr 19, 2023 at 12:55 PM Steffen Märcker merkste@web.de wrote:
Hi,

I'd like to ask for your advice or best practices regarding the package
structure of a project. So far I have understood:

  • Iceberg can store multiple packages (project?) in a git repository
  • A package (or multiple?) and its dependencies is loaded via a baseline
  • A package can have flags (= categories?)

Suppose, a project has

  • A core part
  • One or multipel optional parts, that a user may or may not want to load,
    too
  • Tests for the core
  • Tests for each optional part

What's the recommended way to structure this in Pharo? For example, I've
seen that some code in Pharo has its tests in the same package but
flagged/categorized, other code has a separate package for tests. Also, can
a (git) repository have multiple baselines?

Sorry, if I am asking the obvious but I did not manage to find guidlines in
the documentation yet. It might very well an oversight be myself.

Kind regards,
Steffen

--
Gesendet mit Vivaldi Mail. Laden Sie Vivaldi kostenlos unter vivaldi.com herunter

Thank you both for your answers. That is certainly helpful. - I just noticed that most (all?) package names in the Pharo image do not contain spaces although it is possible to create such names. Is this discouraged or are there issues to watch out for? - Is there a reference how the name mangling of packages, categories and such works? For instance, it seems if a class def states "MyPackage-Tests" it appears in MyPackage under the category tests. Kind regards, Steffen Noury Bouraqadi schrieb am Mittwoch, 19. April 2023 19:10:13 (+02:00): BTW, Beside this mailing list, there is the Pharo Discord for discussions. Noury On Apr 19 2023, at 7:06 pm, Gabriel Cotelli <g.cotelli@gmail.com> wrote: Most projects that I'm aware of, follow something like this: - 1 project per git repository - One or more packages for the functional part, separate packages for the tests (because if you only use categories you can't load only the runtime required code and exclude the tests) - If your project has optional parts, and this code is in different packages you can provide in the Baseline "groups" for loading sub-sets of the packages Usually, we use https://github.com/ba-st/GitHub-setup for generating the initial boilerplate of new projects. Regards, Gabriel On Wed, Apr 19, 2023 at 12:55 PM Steffen Märcker <merkste@web.de> wrote: Hi, I'd like to ask for your advice or best practices regarding the package structure of a project. So far I have understood: - Iceberg can store multiple packages (project?) in a git repository - A package (or multiple?) and its dependencies is loaded via a baseline - A package can have flags (= categories?) Suppose, a project has - A core part - One or multipel optional parts, that a user may or may not want to load, too - Tests for the core - Tests for each optional part What's the recommended way to structure this in Pharo? For example, I've seen that some code in Pharo has its tests in the same package but flagged/categorized, other code has a separate package for tests. Also, can a (git) repository have multiple baselines? Sorry, if I am asking the obvious but I did not manage to find guidlines in the documentation yet. It might very well an oversight be myself. Kind regards, Steffen -- Gesendet mit Vivaldi Mail. Laden Sie Vivaldi kostenlos unter vivaldi.com herunter