Software Project File System Standards

This is the aggregation of common file and folder structures in software projects.

## Files and Folders at ./*

Files and folders at the top level should represent an entry point to the project. The number of files and folders at the top level should be minimized, in order to have an easy overview at the entry level.

A readme describing the project and linking to other documents is such file. Files specifying the project type are another type of these files (i.e. Makefile, pom.xml etc.). These are used to import the project and to do tasks related to the project like compiling the software.

## Files ./CHANGELOG.*

Keep a Changelog is a site describing a standard how changes to the project based on versioning can be documented. Its source code can be found on Github. If the project uses Semantic Versioning, it may make sense to use the chapters Major Changes, Minor Changes and Patches for each release.

## Files at ./LICENSE.* and .src/license/**

Contains licensing information. For the most part it contains copies of licenses.

## Files at ./README.*

Contains the initial description of the project.

## Files at ./.*

Contains meta data like IDE configuration files or version control data.

## Files at ./bin/*

The files are located at ./bin/*. Contains executable programs regarding tasks of the project. It is preferred, if the scripts are written in such a way, that the current folder is located at the project's root folder. Such commands are called project commands.

## Files at .src/doc/*

Contains projects documentation.

### Files at src/doc/task and src/doc/task/*

Contains task of the projects that are relevant.

## Files at ./lib/*

Contains dependencies of the project.

## Files at ./projects/*

Contains folders with subproject. Prefer to not use recursive projects.

## Files at ./src/*

Contains the source code of the project.

## Files at ./target/*

Contain results of the build and test system. Also contains the results of executing other project tasks.

wide screen
1. dem
2. external-documentation.html
3. guidelines
4. history.html
5. index.html
6. jacoco-report
1. index.html
2. jacoco-resources
3. jacoco-sessions.html
4. jacoco.csv
5. jacoco.xml
6. net.splitcells.dem
7. net.splitcells.dem.data.atom
8. net.splitcells.dem.data.order
9. net.splitcells.dem.data.set
10. net.splitcells.dem.data.set.map
11. net.splitcells.dem.environment
12. net.splitcells.dem.environment.config
13. net.splitcells.dem.environment.config.framework
14. net.splitcells.dem.environment.resource
15. net.splitcells.dem.execution
16. net.splitcells.dem.lang
17. net.splitcells.dem.lang.dom
18. net.splitcells.dem.lang.namespace
19. net.splitcells.dem.lang.perspective
20. net.splitcells.dem.object
21. net.splitcells.dem.resource
22. net.splitcells.dem.resource.communication
23. net.splitcells.dem.resource.communication.interaction
24. net.splitcells.dem.resource.communication.log
25. net.splitcells.dem.resource.host
26. net.splitcells.dem.source.code
27. net.splitcells.dem.source.code.antlr
28. net.splitcells.dem.testing
29. net.splitcells.dem.utils
30. net.splitcells.dem.utils.authentication
31. net.splitcells.dem.utils.lambdas
32. net.splitcells.dem.utils.random
33. net.splitcells.dem.utils.reflection
7. lang
1. perspective
1. guidelines
2. index.html
8. project