Naming Guideline for the APP group

Organizations

Organizations in Git group repositories that belong to the same larger project, e.g. lsa, zks, bss, etc. There is again one big organization for all control room applications called fcc-applications and one organization for non-UI related common stuff called fcc-commons. Organization names shall be written in lower case letters.

Examples for organizations are:
  • fcc-applications for all operational control room applications and related GUI libraries or and application services
  • fcc-commons for all common projects (non-UI)
  • lsa for all LSA related repositories
  • zks for all ZKS related repositories
  • ...
  • every user has his/her own private "organization" which shall be used for test or playground purposes. (Per repository, one can add other users, so they can also contribute as collaborators)

Organizations shall by default be set to be "public" i.e. be world-wide readable. Rare exception is e.g. zks, which deals with sensitive personnel data and is therefore set to private (only readable by members).

Repositories and Projects

The default case is, that we want to be able to release projects individually, therefore each project resides in its own repository, the relation project : repository is 1:1. Thus the repository typically has the same name as the project name.

Project names consist of two parts: first part is the name of the project, second part the type, concatenated by a hyphen: <name>-<type>, e.g. ionsource-app.

Project types

  • -app-UI_FRAMEWORK Application, e.g. beam-optimizer-app-fx, beam-optimizer-app-swing.
  • -uilib Library with UI code but without UI framework specific code. To be used in other UI libraries or applications only e.g. common-uilib / common-lsa-uilib
  • -uilib-UI_FRAMEWORK Library with UI framework specfic code To be used in other UI libraries or applications only e.g. common-uilib-fx / common-uilib-swing
  • -lib Library without UI dependencies (can be used in all projects), e.g. languagetranslator-lib, common-physics-lib
  • -widget-UI_FRAMEWORK contains widget(s), that can be used in applications or other widgets.
  • -client Client implementation
  • -service Service implementation, e.g. coat-service. Should itself have no UI- dependencies.
  • -common-service Common service implementation. A service that can be used by different applications.
  • -common-client-lib Classes to help implementing clients for common services
  • -common-base-lib Classes shared between the a common service and a client

Postfixes

  • UI framework specific projects must have a postfix e.g. -swing or -fx. Only applies to -widget, -uilib and -app

Optional prefixes

  • common- used for all types of common projects, omitted for applications and application-specific projects, e.g. common-physics-lib
  • expert- used for expert applications, that are not used in daily operations e.g. expert-cs-panic-app
  • <project name> Large projects can be used as prefix in the name of the project, e.g. zks-common-uilib.
  • <accelerator name> Accelerator-specifc applications shall be prefixed with the accelerator name, e.g. frs-overview-app, cryring-coco-app
In the rarer case that a repository comprises several projects, the repository shall be named:
  • projectname-reactor for a repository with several projects inside

Packages

The package naming guideline is:

de.gsi.GIT_ORGANIZATION.PROJECT_NAME.UI_FRAMEWORK
  • A dot is used instead of a dash when name part is derived from GIT organization or project name e.g. fcc-applications --> fcc.applications. For project name parts where it makes sense, omitting the dash, is also okay e.g. schema-widget --> schemawidget.
  • Including the project type from the project name in the package name is optional. It's recommend though for projects which are part of reactor projects or projects (or potentially part of reactor projects like apps).
  • Make sure package names are unique, especially when an app is distributed over multiple projects in a reactor project.
  • UI_FRAMEWORK applies only to projects which contain UI framework dependent code eg. .fx or .swing.

Reactor Project Package Naming

  • base-lib
    • de.gsi.fcc.applications.spectrum.app.base.SpectrumAppService
  • service (Not -lib as it can run stand alone)
    • de.gsi.fcc.applications.spectrum.app.service.SpectrumAppServer
  • client-lib
    • de.gsi.fcc.applications.spectrum.app.client.SpectrumAppServiceInit
  • fx (Not -lib as it can run stand alone)
    • de.gsi.fcc.applications.spectrum.app.fx.SpectrumApp

Class names

  • Class names should never contain a UI framework pre- or postfix. This is part of the package name.
  • If a class name sounds pretty common or is known to have import conflicts, it should be prefixed with Gsi e.g. GsiCommonUtils

-- JuttaFitzek - 25 Jul 2019

This topic: Applications > WebHome > AppGuidelinesMain > AppGuidelinesNamingGuideline
Topic revision: 21 Jul 2022, BenjaminPeter
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback