Кеңістіктер мен жобалар
Notarium ұйымдастырудың екі бірлігін ажыратады: кеңістік (space) — оқшауланған қор әрі қауіпсіздік шекарасы, және жоба — кеңістіктің ішіндегі белгіленген қалта. Бұл — әртүрлі міндеті бар түрлі нысандар: кеңістік оқшаулайды, жоба жұмысты ұйымдастырады.
Кеңістік — оқшаулау бірлігі
Кеңістік — өзіне-өзі жеткілікті білім қоры: өз индексі, графы, іздеуі, ағашы, тарих журналы және өз қатысушылар құрамы бар. Кеңістіктер қиылыспайды: біреуінің жазбалары, іздеуі мен байланыстары екіншісінен көрінбейді. Кеңістік бірден екі рөл атқарады — ұйымдастыру («жеке» / «жұмыс» / «мұрағат») және қауіпсіздік шекарасы: кім нені көретіні дәл кеңістік деңгейінде шешіледі.
- Әр кеңістікке нақ бір қозғалтқыш данасы қызмет етеді — оқшаулауды сәулеттің өзі қамтамасыз етеді.
- Кеңістіктің бірегейлігі — тұрақты ішкі
space_id; slug (URL-safe: кіші латын әріптері, цифрлар, дефистер мен астын сызулар —[a-z0-9_-]) — қайта аталатын мекенжай әрі URL-хэндл, алdisplayName— адам оқитын белгі. Slug-ты қайта атау қауіпсіз: ескі атау alias-тарихқа өтіп, әрі қарай резолвтеле береді (/s/<ескі>ағымдағыға редиректтейді). - Мекенжайлау: интерфейсте
/s/<slug>және REST-те/api/s/<slug>/….
Рөлдер мен құпиялылық туралы толығырақ — Қатынау моделі бөлімінде.
Жеке кеңістік
Әр пайдаланушыда жеке кеңістік — оның әдепкі үйі — кепілдікпен болады:
- ол есептік жазба берілгенде құрылады және жойылмайды;
- әдепкі лендинг ретінде қызмет етеді әрі агенттердің сіз туралы жеке жадын мен профиліңізді сақтайды;
- бұл — толыққанды жұмыс кеңістігі: бөлек ештеңе ашпай-ақ, онда бірден жазба жүргізіп, жобаларды белгілеуге болады.
Бұл — жеке кеңістіктің әдеттегіден жалғыз айырмашылығы. Оқуға қатынауы бар басқа қатысушы сіздің жеке жадыңыз бен жеке жазбаларыңызды көрер еді — сондықтан жеке кеңістікке шақырулар интерфейсте жасырылып қана қоймай, серверде тыйым салынған.
Жоба — белгіленген қалта
Жоба — жеңіл, міндетті емес нысан: кеңістіктің ішіндегі жоба деп белгіленген қарапайым қалта-ішкіағаш. Контент міндетті түрде жобаларда тұрмауы да мүмкін — белгіленбеген қалта жай ғана қалта болып қала береді.
Белгі — қалтаның түбіріндегі .notariummeta dot-файлы (тұрақты id бар JSON). Ол кез келген жылжытуда, оның ішінде сыртқы (git, файл менеджері) жылжытуда да қалтамен бірге саяхаттайды — жобаның бірегейлігі тек дерекқорда емес, қалтаның өзінде зәкірленеді.
myspace/
├─ research/
│ └─ .notariummeta ← белгіленген қалта = жоба
├─ inbox/ ← қарапайым қалта (жоба емес)
└─ ...
- Мекенжайлау —
(space, slug)хэндлі GitLab-тыңgroup/projectмоделі бойынша. Жобаның slug-ы кеңістік ішінде бірегей; кеңістіктер арасындағы аттас жобалардыspaceөрісі ажыратады. Түбірлік жоба жай ғана<space>-ке жиырылады (мысалы,main,main/mainемес). - Жобаның slug-ы —
displayName-нен немесе жолдың соңғы сегментінен (бүкіл жолдан емес) транслитерацияланған kebab-тұлға. - Қалтаны белгілеу, белгіні алып тастау немесе «New project» құру — адамның әрекеттері (
space:writeрұқсаты). Агент контейнерлер құрмайды: ол мазмұнның иесі, ал адам — құрылымның иесі. - Кеңістік құру оның түбірін жоба ретінде автоматты белгілейді — агент қолмен белгілемей-ақ,
<space>-ке бірден жаза алуы үшін.
Жоба — ауқым әрі мекенжай, бірақ қауіпсіздік шекарасы емес: қатынау туралы шешім әрдайым кеңістіктегі мүшелікте қалады. Агент жобаларды қалай мекенжайлайтыны — Ниет құралдары бөлімінде.
Жобалар қызметтік дерекқор мен жергілікті белгілер қоймасына сүйенеді — оларсыз жобаны ашу мүмкін емес.