aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/solutions/README.md
blob: ab4cc9727d35319e46a337c7ff20993db08eae64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Solutions project

The Solutions project is designed to contain a collection of
object libraries, independent on any Creator's specific code,
ready to be a part of Qt. Kind of a staging area for possible
inclusions into Qt.

## Motivation and benefits

- Such a separation will ensure no future back dependencies to the Creator
  specific code are introduced by mistake during maintenance.
- Easy to compile outside of Creator code.
- General hub of ideas to be considered by foundation team to be integrated
  into Qt.
- The more stuff of a general purpose goes into Qt, the less maintenance work
  for Creator.

## Conformity of solutions

Each solution:
- Is a separate object lib.
- Is placed in a separate subdirectory.
- Is enclosed within a namespace (namespace name = solution name).
- Should compile independently, i.e. there are no cross-includes
  between solutions.

## Dependencies of solution libraries

**Do not add dependencies to non-Qt libraries.**
The only allowed dependencies are to Qt libraries.
Especially, don't add dependencies to any Creator's library
nor to any 3rd party library.

If you can't avoid a dependency to the other Creator's library
in your solution, place it somewhere else (e.g. inside Utils library).

The Utils lib depends on the solution libraries.

## Predictions on possible integration into Qt

The solutions in this project may have a bigger / faster chance to be
integrated into Qt when they:
- Conform to Qt API style.
- Integrate easily with existing classes / types in Qt
  (instead of providing own structures / data types).
- Have full docs.
- Have auto tests.
- Have at least one example (however, autotests often play this role, too).