pharo-users@lists.pharo.org

Any question about pharo is welcome

View all threads

Artifacts and Smalltalk code

BS
Benoit St-Jean
Sun, Nov 2, 2025 10:40 AM

Hello everyone,

Can anyone point me to any document and/or blog post regarding best
practices (and HOWTO) in handling project artifacts in a Pharo project?

For example, how do you handle Smalltalk code AND other files, SQL code,
documentation, class diagrams, intilization scripts, user data files,
etc? The Smalltalk code itself, in my case, has to go along with all
other files.  Do you handle "everything not Smalltalk" manually with git
or there is another way ?  How do you guys do it in your projects?

tia

Hello everyone, Can anyone point me to any document and/or blog post regarding best practices (and HOWTO) in handling project artifacts in a Pharo project? For example, how do you handle Smalltalk code AND other files, SQL code, documentation, class diagrams, intilization scripts, user data files, etc? The Smalltalk code itself, in my case, has to go along with all other files.  Do you handle "everything not Smalltalk" manually with git or there is another way ?  How do you guys do it in your projects? tia
CF
Cyril FERLICOT-DELBECQUE
Mon, Nov 3, 2025 1:23 PM

--
Cyril Ferlicot-Delbecque
https://ferlicot.fr

On Sunday, November 2nd, 2025 at 11:40 AM, Benoit St-Jean via Pharo-users pharo-users@lists.pharo.org wrote:

Hello everyone,

Can anyone point me to any document and/or blog post regarding best
practices (and HOWTO) in handling project artifacts in a Pharo project?

Hi,

I don't have 1 documentation about that or only one way to do it since it depends on the project.
But I've had to manage such cases in the past.

One of my way of doing that is to store things in the same git as my projects and use my GitBridge project to access it from Pharo:

https://github.com/jecisc/GitBridge

For example, I have a documentation to explain how I implemented the tests of one of my project. For this project I need to have some java projects, parse them and import a model of those projects in a software analysis platform.
Here is the documentation:

https://modularmoose.org/blog/2025-10-08-testing-your-algo-on-a-java-project/

And to manage those files I'm using git in my terminal. I do not manage those from the Pharo side personally because I already had the habit of using git before its Pharo integration.

But this is only one example.
For other project I have some javascript and CSS code in some FileLibrary of Seaside and I added scripts to my project to be able to export all the files on disk, then I can edit them. And I have a watcher that recompile the file library when I update those files.
But this is half based on FileLibrary of Saside. And half some scripts I did by hand and never really factorized between my projects (I never got the time).

For another project that was more personal, I had some JS files next to the Pharo code. And in the readme there was two instructions: one to launch a JS scripts installing a websocket and another one to launch the Pharo application that was using this websocket. If I would have gotten more time I could have improved the launch script to do both with the same script.

For another project I deployed an application using nginx and I added a static file server to deliver my js scirpts that were saved on my git. And during dev I use Zinc to serve the files instead of nginx (ZnStaticFileServerDelegate).

So there are multiple solutions. But as time goes, a folder in the git project and the usage of GitBridge is what I'm using the most.

For example, how do you handle Smalltalk code AND other files, SQL code,
documentation, class diagrams, intilization scripts, user data files,
etc? The Smalltalk code itself, in my case, has to go along with all
other files. Do you handle "everything not Smalltalk" manually with git
or there is another way ? How do you guys do it in your projects?

tia

-- Cyril Ferlicot-Delbecque https://ferlicot.fr On Sunday, November 2nd, 2025 at 11:40 AM, Benoit St-Jean via Pharo-users <pharo-users@lists.pharo.org> wrote: > Hello everyone, > > Can anyone point me to any document and/or blog post regarding best > practices (and HOWTO) in handling project artifacts in a Pharo project? Hi, I don't have 1 documentation about that or only one way to do it since it depends on the project. But I've had to manage such cases in the past. One of my way of doing that is to store things in the same git as my projects and use my GitBridge project to access it from Pharo: https://github.com/jecisc/GitBridge For example, I have a documentation to explain how I implemented the tests of one of my project. For this project I need to have some java projects, parse them and import a model of those projects in a software analysis platform. Here is the documentation: https://modularmoose.org/blog/2025-10-08-testing-your-algo-on-a-java-project/ And to manage those files I'm using git in my terminal. I do not manage those from the Pharo side personally because I already had the habit of using git before its Pharo integration. But this is only one example. For other project I have some javascript and CSS code in some FileLibrary of Seaside and I added scripts to my project to be able to export all the files on disk, then I can edit them. And I have a watcher that recompile the file library when I update those files. But this is half based on FileLibrary of Saside. And half some scripts I did by hand and never really factorized between my projects (I never got the time). For another project that was more personal, I had some JS files next to the Pharo code. And in the readme there was two instructions: one to launch a JS scripts installing a websocket and another one to launch the Pharo application that was using this websocket. If I would have gotten more time I could have improved the launch script to do both with the same script. For another project I deployed an application using nginx and I added a static file server to deliver my js scirpts that were saved on my git. And during dev I use Zinc to serve the files instead of nginx (ZnStaticFileServerDelegate). So there are multiple solutions. But as time goes, a folder in the git project and the usage of GitBridge is what I'm using the most. > > For example, how do you handle Smalltalk code AND other files, SQL code, > documentation, class diagrams, intilization scripts, user data files, > etc? The Smalltalk code itself, in my case, has to go along with all > other files. Do you handle "everything not Smalltalk" manually with git > or there is another way ? How do you guys do it in your projects? > > tia
TM
Tim Mackinnon
Mon, Nov 3, 2025 1:43 PM

Hi - I've just added my extra resources into a folder(s) as part of my project as peers to the normal src folder (where Pharo code lives). As an example: https://gitlab.com/macta/PharoLambda does this (its quite an old project - but it gives an idea for some JS code resources).  From memory, when you deploy you can reference that folder from your image as ./resources for example.

You can just version the extra resources using another tool like VSCode or Intellij (or WebStorm) as you probably want some different tooling to handle those things. You just need to remember to do a pull from your local image when you do this.

Tim

On Sun, 2 Nov 2025, at 10:40 AM, Benoit St-Jean via Pharo-users wrote:

Hello everyone,

Can anyone point me to any document and/or blog post regarding best
practices (and HOWTO) in handling project artifacts in a Pharo project?

For example, how do you handle Smalltalk code AND other files, SQL code,
documentation, class diagrams, intilization scripts, user data files,
etc? The Smalltalk code itself, in my case, has to go along with all
other files.  Do you handle "everything not Smalltalk" manually with git
or there is another way ?  How do you guys do it in your projects?

tia

Hi - I've just added my extra resources into a folder(s) as part of my project as peers to the normal src folder (where Pharo code lives). As an example: https://gitlab.com/macta/PharoLambda does this (its quite an old project - but it gives an idea for some JS code resources). From memory, when you deploy you can reference that folder from your image as ./resources for example. You can just version the extra resources using another tool like VSCode or Intellij (or WebStorm) as you probably want some different tooling to handle those things. You just need to remember to do a pull from your local image when you do this. Tim On Sun, 2 Nov 2025, at 10:40 AM, Benoit St-Jean via Pharo-users wrote: > Hello everyone, > > Can anyone point me to any document and/or blog post regarding best > practices (and HOWTO) in handling project artifacts in a Pharo project? > > For example, how do you handle Smalltalk code AND other files, SQL code, > documentation, class diagrams, intilization scripts, user data files, > etc? The Smalltalk code itself, in my case, has to go along with all > other files.  Do you handle "everything not Smalltalk" manually with git > or there is another way ?  How do you guys do it in your projects? > > tia