Лицензи на отворен код
Този превод е информативен. Обвързващата версия на този документ е английската. При несъответствие между двете езикови версии предимство има английският текст.
Настоящият документ представлява обобщеният файл NOTICE за софтуера с отворен код на трети лица („OSS“), който Vezoft EOOD („Vezoft“, „TimerOS“, „ние“, „нас“) — еднолично дружество с ограничена отговорност, регистрирано в България — разпространява в настолното приложение TimerOS, публичния уебсайт на TimerOS, клиентския Портал и поддържащите бекенд услуги. Публикуваме го, за да изпълним изискванията за посочване на авторството и за уведомяване, които MIT, BSD, Apache-2.0, MPL-2.0, ISC и сходните разрешителни лицензи налагат на преразпространителите, и за да бъдем прозрачни относно кода на трети лица, който работи на Вашия компютър или обработва данни от Ваше име. Тъй като цялата правна цел на този файл е да идентифицира пакетите източници, чиито носители на авторски права имат право на посочване, изброените по-долу идентификатори на фреймуърци, библиотеки и crate-ове са поставени умишлено и са изключени от правилото „без жаргон“, което се прилага на останалите места в policies-public/.
Ако търсите нашите собствени условия относно поверителността и обработването на данни, вижте Политиката за поверителност, списъка с Подизпълнители и Споразумението за обработване на данни.
1. Как се генерира това уведомление
Не съставяме този списък на ръка. Файловете с уведомления за отделните пакети се създават от генераторите, записани в legal/scripts/, изпълняват се преди всяко издание, а изходът им се записва в дървото на изходния код в legal/notices/, редом с артефактите от компилацията.
| Продуктова част (surface) | Инструмент | Входен манифест | Изходът се записва в |
|---|---|---|---|
| Настолно приложение TimerOS (компилирани компоненти) | cargo about generate (конфигурация: legal/scripts/about.toml) |
timeros-desktop/src-tauri/Cargo.lock |
legal/notices/desktop-rust-notices.md |
| Настолно приложение TimerOS (уеб слой) | pnpm licenses list --prod --json |
timeros-desktop/pnpm-lock.yaml |
legal/notices/desktop-web-notices.md |
| Публичен уебсайт | license-checker-rseidelsohn --production --json |
timeros-website/package-lock.json |
legal/notices/website-notices.md |
| Клиентски портал | license-checker-rseidelsohn --production --json |
timeros-portal/package-lock.json |
legal/notices/portal-notices.md |
| API бекенд | license-checker-rseidelsohn --production --json |
timeros-api/package-lock.json |
legal/notices/api-notices.md |
Четирите JavaScript продуктови части се преобразуват в Markdown от legal/scripts/generate-oss-notices.mjs; слоят на Rust — от cargo about, който използва legal/scripts/about.toml и legal/scripts/about-md.hbs. Файловият сървър не участва в този конвейер, защото нито се разпространява до крайни потребители, нито е част от продукционното внедряване (вижте §8).
Генерираните файлове съдържат за всеки компонент: име на пакета, версията, която действително се доставя, носителя(ите) на авторските права, SPDX идентификатора на лиценза и дословния текст на лиценза. Настоящото обобщение се публикува на timeros.ai/legal/open-source (връзка към него има в долния колонтитул на уебсайта и на Портала, както и в правния раздел на настолното приложение). Пълните файлове с уведомления за отделните пакети се публикуват на timeros.ai/legal/notices/ за четирите преразпространявани продуктови части — двата слоя на настолното приложение, уебсайта и Портала — а настолното приложение освен това съдържа офлайн уведомленията за собствените си компоненти, достъпни в Настройки → Правни (Legal) → Уведомления за отворен код (Open-source notices). Уведомленията за зависимостите на API бекенда се записват в дървото на изходния код в legal/notices/ и се предоставят при поискване (API работи на нашите сървъри и не се преразпространява — вижте §7).
Ако сте получили компилирано копие на настолното приложение TimerOS и желаете съответния изходен код за компонент под LGPL или MPL-2.0, изпратете имейл на [email protected], като посочите номера на версията, изписан на екрана Относно (About); ще отговорим в срок от 30 дни с директен адрес за изтегляне или с писмени указания, без такса извън разходите за разпространение.
2. Категории използвани лицензи и какво означава това за Вас
Почти целият OSS, който доставяме, е под някой от разрешителните лицензи от посоченото по-долу семейство. Не включваме copyleft код (GPL, AGPL, SSPL) нито в инсталатора на настолното приложение, нито в който и да е артефакт, достигащ до клиента. Малък брой компоненти под LGPL и MPL-2.0 може да присъстват транзитивно в средата за изпълнение на настолното приложение; за тях изпълняваме условията чрез динамично свързване и чрез предлагане на съответния обектен/изходен код при поискване.
| SPDX идентификатор | Типично задължение, което изпълняваме с това уведомление |
|---|---|
MIT, BSD-2-Clause, BSD-3-Clause, ISC, 0BSD |
Възпроизвеждане на съобщението за авторски права и на текста на лиценза в този файл NOTICE. Без ограничение относно рекламата. |
Apache-2.0 |
Възпроизвеждане на съобщението за авторски права, на текста на лиценза и на файла NOTICE на проекта източник, когато проектът предоставя такъв. Запазване на посочването на извършените изменения. |
MPL-2.0 |
Предоставяне на изходния код на неизменените MPL файлове при поискване; ясно обозначаване на всички изменения, които правим. Ние не изменяме MPL файлове. |
LGPL-2.1, LGPL-3.0 |
Само динамично свързване; предлагане на обектен код / съответен изходен код за LGPL компонента при поискване. |
Unicode-DFS-2016, CC-BY-4.0, OFL-1.1 |
Възпроизвеждане на посочването на авторството; за шрифтовете под OFL — запазване на клаузата за запазено име. |
BlueOak-1.0.0, Zlib, WTFPL, Unlicense |
Разрешителни; посочването на авторството се запазва като добра практика. |
Ако впоследствие се установи, че компонент, който доставяме, е под лиценз, който не можем законно да включим в продукт със затворен код (например транзитивна зависимост, която преминава към AGPL в бъдещо издание), ще го премахнем или заменим в следващото поддържащо издание и ще отбележим промяната в дневника на промените към Подизпълнители, когато зависимостта е от значение за експлоатацията.
3. Настолно приложение TimerOS — компилирани компоненти
Настолното приложение се изгражда от дърво от приблизително 350 компилирани компонента, определени от Cargo.lock. Изчерпателният списък с дословния текст на лицензите е в legal/notices/desktop-rust-notices.md, генериран от cargo about. Най-съществените компоненти и лицензите на техните проекти източници са обобщени по-долу.
| Компонент | Проект източник | Лиценз | Предназначение в TimerOS Desktop |
|---|---|---|---|
Tauri (tauri, tauri-build, tauri-runtime, tauri-runtime-wry, wry) |
tauri-apps/tauri | MIT OR Apache-2.0 |
Обвивка на настолното приложение; нативен прозорец, IPC, пакетиране |
Приставки за Tauri (tauri-plugin-http, -opener, -dialog, -fs, -process, -store, -updater) |
tauri-apps | MIT OR Apache-2.0 |
Собствени приставки на Tauri за HTTP, отваряне на връзки/файлове, диалогови прозорци, файлова система, процеси, съхранение и актуализации |
| WRY | tauri-apps/wry | MIT OR Apache-2.0 |
Междуплатформена обвивка за webview |
| WebKitGTK (само за Linux; предоставя се от системата, динамично свързан) | webkit.org | LGPL-2.1-only OR BSD-2-Clause |
Webview под Linux. Не включваме WebKitGTK под Windows или macOS — използва се системният webview (WebView2 / WKWebView). |
| Microsoft Edge WebView2 Loader (само за Windows) | Microsoft | Distributable Code Terms | Инициализира WebView2; преразпространението е разрешено съгласно Microsoft Distributable Code Terms |
serde, serde_json, serde_derive |
serde-rs | MIT OR Apache-2.0 |
Сериализация за IPC и за трайно съхраняваното състояние |
tokio, tokio-util |
tokio-rs | MIT |
Асинхронна среда за изпълнение, използвана от приставката за HTTP и от фоновите задачи |
reqwest, hyper, hyper-rustls, rustls, webpki-roots |
seanmonstar, rustls | MIT OR Apache-2.0, ISC, CDLA-Permissive-2.0 |
HTTPS клиент за API, с TLS чрез rustls (без OpenSSL) |
windows-sys, windows-targets, windows-result |
Microsoft | MIT OR Apache-2.0 |
Обвързвания към Windows API |
objc2, objc2-foundation, objc2-app-kit, block2 |
madsmtm | MIT |
Обвързвания към macOS API |
gtk, gdk, glib, gio, cairo-rs, pango (чрез gtk-rs) |
gtk-rs | MIT |
Обвързвания към GTK под Linux |
png |
image-rs | MIT OR Apache-2.0 |
Декодиране на иконата в системната област и на миниатюрите на екранни снимки |
chrono, time |
chronotope | MIT OR Apache-2.0 |
Изчисления с дати и часове |
regex, regex-syntax, aho-corasick, memchr |
rust-lang/regex | MIT OR Apache-2.0 |
Търсене на подниз в механизма с точкуване по правила |
unicode-segmentation |
unicode-rs | MIT OR Apache-2.0 |
Токенизация на заглавията за класификатора на устройството |
sha2, digest |
RustCrypto | MIT OR Apache-2.0 |
Хеширане за вградения в процеса верификатор на актуализации |
rand, rand_core, rand_chacha, getrandom |
rust-random | MIT OR Apache-2.0 |
Детерминистично начално число, така че класификаторът на устройството да е възпроизводим при различните инсталации |
log, tracing |
rust-lang/log, tokio-rs | MIT OR Apache-2.0 |
Диагностично журналиране |
anyhow, thiserror |
dtolnay | MIT OR Apache-2.0 |
Типове грешки |
dirs, dirs-sys |
soc | MIT OR Apache-2.0 |
Определя пътищата за локално съхранение, използвани от класификатора на устройството |
Самият класификатор на устройството не е на трето лице. Механизмът с точкуване по правила и малкият статистически класификатор на устройството са разработени от Vezoft, представляват собственост на дружеството и се доставят без какъвто и да е файл с модел на трето лице. Малък набор от тегла се обучава при първото стартиране от вграден начален набор от данни и се съхранява само локално на Вашия компютър; Вашите корекции на изхода на класификатора също се съхраняват само локално на Вашия компютър и никога не се предават. Тъй като не преразпространяваме модел за машинно самообучение на трето лице, за класификатора не се прилага нито карта на модела (model card), нито лиценз на Hugging Face, нито Llama Community Licence, нито посочване на авторство по Apache-2.0. Изброените по-горе crate-ове на трети лица са единствените пътища на код на трети лица, които класификаторът използва, и те са обхванати от таблицата по-горе. За класификатора поддържаме карта на модела и оценка на приложимостта на Регламента на ЕС за изкуствения интелект (обхващащи обучителните данни, архитектурата на модела и метриките за оценка), които се предоставят на компетентните органи при поискване.
4. Настолно приложение TimerOS — уеб слой
Уеб слоят е едностранично приложение, пакетирано в инсталатора на настолното приложение. Зависимостите се определят от timeros-desktop/pnpm-lock.yaml. Основни компоненти:
| Компонент | Проект източник | Лиценз | Предназначение |
|---|---|---|---|
react, react-dom |
facebook/react | MIT |
Рамка за потребителския интерфейс |
vite, @vitejs/plugin-react |
vitejs | MIT |
Инструмент за компилация и сървър за разработка |
@tauri-apps/api, @tauri-apps/plugin-http, @tauri-apps/plugin-opener, @tauri-apps/plugin-dialog, @tauri-apps/plugin-fs, @tauri-apps/plugin-process, @tauri-apps/plugin-store, @tauri-apps/plugin-updater |
tauri-apps | MIT OR Apache-2.0 |
JavaScript обвързвания към приставките на Tauri, писани на Rust |
@tanstack/react-query |
TanStack | MIT |
Кеш за състоянието от сървъра; hook-ове за отделните ресурси |
zustand |
pmndrs | MIT |
Хранилища за клиентското състояние (удостоверяване, тема); запазват се локално на Вашия компютър |
react-router-dom |
remix-run | MIT |
Маршрутизиране в прозореца на таблото |
react-hook-form |
react-hook-form | MIT |
Формуляри |
zod, @hookform/resolvers |
colinhacks, react-hook-form | MIT |
Валидация на схеми |
lucide-react |
lucide-icons/lucide | ISC |
Икони |
tailwindcss |
tailwindlabs | MIT |
Стилизиране |
recharts, d3-shape, d3-scale, d3-array, d3-time |
recharts, d3 | MIT, ISC |
Диаграми в прозореца на таблото |
date-fns |
date-fns | MIT |
Помощни функции за дати |
clsx, tailwind-merge |
lukeed, dcastil | MIT |
Съставяне на имена на CSS класове |
5. Публичен уебсайт (timeros-website)
| Компонент | Проект източник | Лиценз |
|---|---|---|
next, next/font |
vercel/next.js | MIT |
react, react-dom |
facebook/react | MIT |
tailwindcss, autoprefixer, postcss |
tailwindlabs | MIT |
lucide-react |
lucide-icons | ISC |
axios |
axios/axios | MIT |
react-hook-form, zod, @hookform/resolvers |
react-hook-form, colinhacks | MIT |
| Уеб шрифтове, хоствани от нас (Inter, JetBrains Mono) | rsms, JetBrains | OFL-1.1 |
Към датата на посочената по-горе версия уебсайтът не включва Google Analytics, Meta Pixel, HubSpot, Mixpanel, Segment, нито каквито и да е други скриптове за анализ или за маркетинг на трети лица. Ако добавим такъв, той ще бъде посочен тук и в Политиката за бисквитките.
6. Клиентски портал (timeros-portal)
| Компонент | Проект източник | Лиценз |
|---|---|---|
react, react-dom |
facebook/react | MIT |
vite, @vitejs/plugin-react |
vitejs | MIT |
react-router-dom |
remix-run | MIT |
axios |
axios/axios | MIT |
lucide-react |
lucide-icons | ISC |
Порталът не включва скриптове за анализ. Брандирането за всеки наемател (цветова палитра, лого, favicon) се зарежда от API на TimerOS по време на изпълнение — не се включва CSS рамка на трето лице извън помощните класове на Tailwind.
7. API бекенд (timeros-api)
API работи на нашите сървъри и не се преразпространява до крайни потребители, поради което строгите задължения за посочване на авторството по семействата MIT/BSD/Apache формално не възникват за неговите зависимости. Изброяваме основните компоненти тук с цел прозрачност и за нуждите на SBOM, която предоставяме на екипите по сигурността на Клиентите при поискване.
| Компонент | Проект източник | Лиценз |
|---|---|---|
@nestjs/core, @nestjs/common, @nestjs/platform-express, @nestjs/config, @nestjs/jwt, @nestjs/passport, @nestjs/swagger, @nestjs/throttler, @nestjs/mongoose, @nestjs/bullmq |
nestjs/nest | MIT |
mongoose |
Automattic/mongoose | MIT |
passport, passport-jwt |
jaredhanson | MIT |
bcrypt |
kelektiv | MIT |
class-validator, class-transformer |
typestack | MIT |
bullmq, ioredis |
taskforcesh, luin | MIT |
stripe (Node SDK) |
stripe/stripe-node | MIT |
helmet, cors |
express | MIT |
Маршрутизаторът на бази данни за отделните наематели и слоят за обединяване на връзките са разработени от Vezoft и не са на трети лица.
8. Файлов сървър (timeros-file-server)
| Компонент | Проект източник | Лиценз |
|---|---|---|
express |
expressjs | MIT |
multer |
expressjs/multer | MIT |
cors |
expressjs/cors | MIT |
mime-types, mime-db |
jshttp | MIT |
Качените файлове по проекти се съхраняват в обектното хранилище Cloudflare R2 (bucket-ът е фиксиран към ЕС чрез jurisdiction=eu), а не на локалния диск на хоста; вижте списъка с Подизпълнители за ролята на Cloudflare и за механизма за трансфер. Изброеният по-горе компонент timeros-file-server е наследена локална услуга за качване и не е част от продукционното внедряване; качванията се обработват от API и се съхраняват в Cloudflare R2. Тъй като той нито се разпространява до крайни потребители, нито се внедрява, за него не се генерира отделен файл NOTICE; изброените по-горе компоненти са посочени единствено с цел прозрачност.
9. Шрифтове и набори от икони
| Ресурс | Проект източник | Лиценз | Къде се използва |
|---|---|---|---|
| Inter | rsms (Rasmus Andersson) | OFL-1.1 |
Уебсайт, табло на настолното приложение, Портал |
| JetBrains Mono | JetBrains s.r.o. | OFL-1.1 |
Примери с код на маркетинговия сайт |
| Lucide Icons | lucide-icons | ISC (форк на Feather Icons, също MIT) |
Всички фронтенд приложения — всяка икона в приложенията |
Клаузата „Reserved Font Name“ (запазено име на шрифт) от OFL изисква да не разпространяваме изменени версии на Inter или JetBrains Mono под оригиналното име на семейството. Доставяме файловете на проектите източници без изменения.
10. Хоствани услуги, които не са OSS компоненти, но присъстват в двоичния файл
За пълнота: механизмът за автоматично обновяване в инсталатора на настолното приложение изтегля манифести за актуализация от HTTPS крайна точка, контролирана от Vezoft. Връзката използва TLS библиотеката rustls с вградено хранилище на доверени сертификати webpki-roots (CDLA-Permissive-2.0). В инсталатора на настолното приложение не е вграден SDK на трето лице за докладване на сривове или за наблюдение на грешки (например Bugsnag или Crashlytics). Ако добавим такъв, това уведомление и раздел 2.3 от Политиката за поверителност („Когато използвате настолното приложение като служител на Клиент на TimerOS“) ще бъдат актуализирани, преди изданието да бъде доставено.
11. Как поддържаме този файл точен
Преди всяко издание генерираме наново уведомленията за отделните пакети към този файл и преглеждаме разликите:
cargo about generate --config legal/scripts/about.toml legal/scripts/about-md.hbs— прекъсва с грешка, ако някой crate носи лиценз извън списъка с разрешени лицензи вabout.toml(MIT,Apache-2.0, включителноWITH LLVM-exception,BSD-2-Clause,BSD-3-Clause,ISC,0BSD,MPL-2.0,Zlib,CC0-1.0,Unicode-DFS-2016,Unicode-3.0,CDLA-Permissive-2.0). Това е контролната точка, която държи copyleft лицензите (GPL/AGPL/SSPL) извън инсталатора на настолното приложение.node legal/scripts/generate-oss-notices.mjsгенерира наново уведомленията за JavaScript продуктовите части чрезpnpm licenses list --prod --json(уеб слоя на настолното приложение) иlicense-checker-rseidelsohn --production --json(уебсайт, Портал, API).- Диференциален преглед спрямо предходно записаните файлове с уведомления: всеки добавен, премахнат или сменил лиценза си пакет се преглежда, преди промяната да бъде слята, а появата на copyleft или нетърговски лиценз в продукционно дърво блокира изданието.
- Генерираните наново файлове NOTICE се записват в
legal/notices/; двата файла за слоевете на настолното приложение се вграждат и в самото настолно приложение (четими офлайн), а четирите преразпространявани продуктови части се публикуват наtimeros.ai/legal/notices/.
Ако забележите липсващо посочване на авторство или погрешно класифициран лиценз, моля, изпратете имейл на [email protected] с името и версията на пакета, и ние ще публикуваме поправка в срок от 30 дни.
12. Контакт
- Съответствие с лицензите за отворен код и заявки за изходен код:
[email protected] - Уязвимости в сигурността на вграден OSS компонент:
[email protected](координираме се с поддържащия проекта източник по нашия процес за координирано разкриване) - Пощенски адрес: Vezoft, със седалище в Кърджали, България (вижте Данни за дружеството за пълния адрес на регистрация)
Пълният, машинно генериран текст на лицензите за всеки отделен пакет се публикува на timeros.ai/legal/notices/ (и е вграден офлайн в настолното приложение в Настройки → Правни (Legal) → Уведомления за отворен код (Open-source notices)); уведомленията за API бекенда се записват в дървото на нашия изходен код в legal/notices/ и се предоставят при писмено искане до [email protected]. Настоящият обобщителен документ е информативен; при противоречие между това обобщение и дословния текст на лиценза на проекта източник в генерираните уведомления предимство има текстът на лиценза на проекта източник.