# Multiple systems: Guidelines

> Guidelines for assigning identifiers to multiple Johnny.Decimal systems.

## Usage considerations

[Multiple systems](/documentation/multiple-systems-overview/) are for when you have two distinct systems that do not overlap. For example, a personal system and a work system.

Do not use this if you think you have 'filled up' an existing system and need more room. Correct your design instead.

Imagine having two personal systems. Doubling the number of IDs you manage would add complexity and reduce clarity. I've never encountered a scenario where this would be required.

### Try to extend the end first

Before creating a new system, consider if the simpler [extending the end](/documentation/extend-the-end-overview/) would solve your problem.

Because adding a new system doubles the number of possible IDs under management from 10,000 to 20,000. Each of those IDs is the more complex `SYS.AC.ID`.

Extending the end of a single ID raises the number of IDs from 10,000 to 10,001. The only ID that changes, becoming `AC.ID+`, is the one you extended.

### Truly separate domains don't need this

Consider the problem we are solving: conflicting IDs. If you have two instances of `11.11` within a shared domain, you must disambiguate with a `SYS` identifier.

But if these systems exist in isolated domains, there is no conflict. For example, you have a personal system at home and a work system at work, and you don't use shared tools.

<JDLineDiagram
  text={`
╔══  Domain: work  ══╗        ╔══  Domain: home  ══╗
║                    ║        ║                    ║
║  ┌──────────────┐  ║        ║  ┌──────────────┐  ║
║  │  Filesystem  │  ║        ║  │  Filesystem  │  ║
║  └──────────────┘  ║■──//──■║  └──────────────┘  ║
║  ┌──────────────┐  ║        ║  ┌──────────────┐  ║
║  │     JDex     │  ║        ║  │     JDex     │  ║
║  └──────────────┘  ║        ║  └──────────────┘  ║
║                    ║        ║                    ║
╚════════════════════╝        ╚════════════════════╝
`}
  alt="A line drawing showing two heavily-bordered domains, work and home. They don't overlap in any way."
  figNumber="62.26A"
  figCaption="Two isolated domains. There is no conflict between these systems. SYS.AC.ID is not required."
/>

In this case, there is no need to disambiguate. At work, `11.11` can only refer to one thing. Don't burden yourself (and your colleagues) with `SYS.AC.ID` if it's not necessary.

## Your JDex

If the JDex for each system is in the same tool, every ID should become the full `SYS.AC.ID`.

If you use separate tools this might not be necessary. For example, my personal JDex is in Bear and my work JDex is in Obsidian.

Always prefer simplicity as long as it does not compromise clarity.

## Your filesystem

Each system lives in a folder labelled with its identifier and name. For example `D25 Johnny.Decimal`.

<JDLineDiagram
  text={`
D25 Johnny.Decimal
├── 10-19 Business administration
│   ├─ 11 …
│   ├─ 12 …
│   ├─ 13 …
│   ├─ 14 …
│   └─ 15 …
├── 20-29 …
├── 30-39 …
├── 40-49 …
└── 50-59 …
`}
  alt="A Tree diagram of my filesystem showing a containing folder, D25 Johnny.Decimal, with area folders contained."
  figNumber="62.26B"
  figCaption="The system folder for the Johnny.Decimal business contains an otherwise standard system."
/>

Within here, it is usually not necessary to use the system identifier when naming folders. For example, area `10-19 Business administration` is not named `D25.10-19 …`.

If you use folder shortcuts, you might like to add the full system identifier. For example, when 'pinning' to the left navigation pane.

## Naming considerations

It can be helpful to name some files with the full `SYS.AC.ID`. I find this useful when browsing the 'File > Recent' menu. Here, `SYS` provides guidance.

You should also prefer the full identifier for files that are externally distributed. Encode the full identifier in the name of the file. This will help you when the file is returned.