You do not have to use "src" or "repository" - you can store your packages 
directly in the root if you 
like. You are free to choose. But over time it can "bloat" the topmost level of 
your project with the 
Smalltalk packages folders and it might get confusing the more packages you 
have or the more other 
stuff you add to your project. 

Often it depends on personal style or the complexity of the overall contents of 
the project.

Having the code directly in the root is possible but not a good style or to be 
recommended - because 
often projects include more than just the source code and over time include 
more and more things like docu
or other. 

Thats why usually projects are STRUCTURED with subdirectories and these 
subfolders helping you or a user of your 
project to easily find out about what to expect as contents. Some possible 
subdirectories you might find in one or the 
other projects are:

root (Project root dir)
  !- src - for source code and source packages
  !- bin - for built binaries or executables
  !- doc - for documentation, sometimes also "docs"
  !- www - for web related stuff that is served via HTTP/webserver
  !   !-- css - for stylesheets
  !   !-- js  - for javascript scripts
  !
  !- templates - for templates
  !- include - includes (for instance in C/C++ projects)
  !- lib - for libraries 
  !- test - for tests or test drivers
  !- third_party - for third party stuff (that is required to run the project)
  !- ci - for CI related scripts or other
  !- docker - for docker 
  !- media - for video, pictures or other related project media
  !- benchmark - for speed tests and benchmarks
  !- config - for configurations
  !- etc - for anything else  
  !- ...

This is not a complete list and different people prefer a different project 
layout. There might be other subfolders. 
Often the name varies depending on language or framework. Also some build 
technologies enforce a specific layout.

For example if you work with web applications you often have a layout as 
described in [1], with Java software 
like maven you usually have no "bin" but a "target" folder, see [2]. There 
never was an agreement of a layout that 
fits all the needs - so we can only speak about a "typical folder structure". 

Same for files. As files in the root folder I "typically" would expect only a 
few files: 
 - a README.txt or README.md
 - a license file
 - config files for build systems (like pom.xml for Maven, package.json in 
NodeJs/npm, Gruntfile.js for Grunt, bower.json for bower, ...)
 - a .travis.yml for travis builds
 - ...

A "src" or "source" subdir is very often used to host the code. Thats why the 
Iceberg dialog just allows 
to tell in which subfolder of the project Iceberg will find the code if you 
structure your project with such
a layout. If you leave it blank all packages are expected in the root folder. 

So you can either put the packages directly into the root like in 

 https://github.com/astares/iceberg

or have a "src" subdirectory or other as in 

 https://github.com/pharo-project/pharo

or many of the other Pharo or non-Pharo projects on GitHub.

Hope this explains it.

Bye
T.

[1] https://www.sohamkamani.com/blog/2015/08/21/frontend/ 
[2] 
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html


> Gesendet: Dienstag, 28. November 2017 um 20:25 Uhr
> Von: stephan <step...@stack.nl>
> An: pharo-dev@lists.pharo.org
> Betreff: Re: [Pharo-dev] Iceberg workflow
>
> On 28-11-17 19:40, Torsten Bergmann wrote:
> >        2c) Code subdirectory: enter "src" here !!!
> 
> Do we really need that? Why would I care about that?
> 
> Stephan
> 
> 
> 

Reply via email to