API законів
Пам’ятаєте, ми ручками вирізали з газети “Голос України” шматочки тексту зі змінами і дбайливо вклеювали у свої друковані примірники кодексів? Тепер цей ритуал повторюється: ми ручками вносимо нові дані у свої серверні скрипти для підтримки лігалтек-проекту в актуальному стані. Чи можна з цим колесом сансари щось зробити?
Проблема
Ось зробили ми зі Славою Бойко Джастісбота. Він прив’язаний, окрім іншого, до Закону України “Про судовий збір”. Як саме прив’язаний? Коли у статтю 4 цього закону будуть внесені зміни, які зачіпатимуть господарський процес, то мені доведеться про це вчасно дізнатися, відкрити свій код на сервері та внести до нього зміни. Те ж саме, коли в черговий раз зміниться розмір прожиткового мінімуму для працездатних осіб. Переконаний, так не лише в мене.
Розбираємо проблему
- Збільшується залежність лігалтек-проекту від обслуговування людиною.
- Виникає проміжок часу, коли частина алгоритму в лігалтек-проекті суперечить закону. Це проміжок часу між набранням сили законодавчими змінами та впровадженням цих же змін у лігалтек-проект. Якщо розробники не подбали про це заздалегідь, може виникнути ситуація, коли користувачі отримають неактуальну послугу і навіть постраждають через це. Я називаю це “проміжок суперечності” (див. малюнок).
Рішення
Створити офіційне API законодавства України. Розробити прості і зрозумілі правила, за якими воно оновлюватиметься одночасно з набранням чинності законами, які з ним пов’язані. Створити прості інтерфейси для оновлення цього API. Навчити і призначити відповідальних за його ведення/оновлення.
Що таке API? Це можна пояснити простіше, ніж на Вікіпедії. Максимально просто: це шматочок коду, який робить щось корисне для третіх осіб, якщо вони звертаються до нього за правилами.
Реалізація
Як це може виглядати, дивіться тут: https://legalwizard.net/radagovua/laws/show/3674-17/
Тобто до кожного закону, API для якого треба зробити, додається:
- Стаття чи розділ (залежно від того, чи перехідні/прикінцеві положення оформлені статтею чи розділом) про автоматизацію. В цій статті/розділі наводимо перелік змінних з присвоєними їм значеннями. Ці змінні будуть вписані в так званий API-файл закону.
- API-файл закону (або файл автоматизації закону, якщо “API” звучить страшно). Це невеличкий скрипт на серверах ВРУ, який виконуватиме банально просту задачу — повідомлятиме значення запитуваної змінної.
- Окрема картка-довідка “Як працювати з API-файлом цього Закону”. Вона вже не є частиною закону, просто показуємо її на веб-сайті ВРУ під його текстом. В ній будуть приклади того, як зробити запит для отримання потрібних даних. Цю картку можна створювати за єдиним шаблоном для всіх законів. Це буде щось на зразок документації для розробників лігалтек-проектів.
Це все просто, а ефект буде колосальний. Це простий і ефективний крок до того, що називається “електронне законодавство” і “електронна держава”. Скажу вам (по секрету), що це і є перша версія електронного законодавства.
Ось як воно працює:
P.S. Don’t panic, розробники знають, що з цим робити. :)
Текст зайшов як діти в школу? Хочте ще таких? Так ставайте хутчіш нашими патронами: