Всяко ново е добре забравено старо. Така гласят мъдрите книги и донякъде са прави.
Само че ако бяха напълно прави, днес животът ни щеше да е доста по-скучен. Целия технологичен прогрес трябваше да го хвърлим в кофата, той надали е нещо старо и забравено.
Често обаче се водим от тази максима във всякакви посоки и това може да ни излезе скъпо. Най-вече в дигиталния свят. Казваме си, че не е проблем да използваме някаква стара, но изпитана програма. Да не обновяваме версията на операционната си система, нищо, че не се поддържа. Да не сваляме новия вариант на езика за програмиране…
Това рано или късно се оказва много, много лоша идея. Особено ако сте собственици на сайт, или се готвите да станете такива. Ето защо.
Старо и патило
Софтуерният свят еволюира космически бързо през последните десетилетия. Само че, за да се убедим в това, трябва да поспрем и да се замислим. Ежедневието е толкова улисано в скролване, че това почти няма как да се случи.
Не така обаче стоят нещата, ако надникнем под повърхността и най-очевидното. В онзи свят, където се ражда софтуерът, който ползваме ние всеки ден.
А там става дума за истинска центрофуга. Ежедневно всеки един софтуерен продукт, независимо колко е сложен, на каква операционна система и кой език за програмиране използва, разчита на цяла кавалкада от други външни библиотеки, взаимовръзки.
И ако някъде се прояви пукнатина в сигурността… тя може да засегне сигурността на всички по веригата.
Така отминава световната слава
Ето как изглежда обичайният поток в развитието на дадена софтуерна технология днес. Сравнително рядко излизат изцяло нови версии на даден език, програма, сайт, както е например с Windows 10 и 11. Разбира се, нещата в различните технологии много силно варират, нова спецификация на езика JavaScript излиза всяка година, докато например нов WordPress, PHP версия или Windows се появяват доста по-рядко.
Когато това се случи, обикновено екипът, създаващ дадената технология, обновява и пътната си карта, от която става ясно коя от по-старите версии докога ще бъде поддържана. Обикновено се дават поне една-две години толеранс, когато става дума за по-големите стъпки. Понякога се казва датата, на която поддръжката изцяло ще спре, а в други случаи има два момента – докога версията няма да се развива повече и кога ще спрат да се поддържат дори минимални промени, свързани със сигурността.
После естественият цикъл на развитие на софтуера налага създаването на следващи подверсии, които обикновено се означават с цифри след десетичната запетая, например 1.1 или 1.01. Съвсем дребните промени във версията пък се отразяват с още едно допълнително число накрая, например 1.01.01. А в по-големите продукти има и още, и още нататък.
Разбира се, това е най-общата рамка, която има много нюанси за всяко едно отделно технологично решение. И все пак това, което ни интересува в контекста на темата, заради която сме се събрали, е именно датата, на която съответната технология ще спре да бъде поддържана изцяло, дори няма да се правят повече обновявания, свързани със сигурността.
Среща и разлъка
Именно това е критичния момент, преди който напълно задължително трябва да сме преминали на следващата технология. Разбира се, по-добре е да не чакаме последния момент, защото понякога миграцията, особено между силно различаващи се нови версии, може да отнеме време и да мине през сериозни трудности.
Принципите са доста сходни във всички софтуерни проекти, поне погледнато отдалеч.
За да бъдем обаче все пак по-конкретни, нека вземем за пример един проект, създаден с помощта на някоя от най-популярните JavaScript библиотеки – React, Angular или Vue. Разбира се, между тях има немалко нюанси и разлики, но в общия случай всички библиотеки, от които е зависим проектът, са описани във файла с име package.json, така че удобно да бъдат инсталирани на компютъра на всеки разработчик, който ще работи по приложението.
Когато програмистът зададе командата за инсталиране, в папка на име node_modules се инсталират всички тези необходими библиотеки. Тази папка понякога става наистина огромна по обем и тема на много мемове, начинът, по който се работи в npm света, не винаги е съобразен с разумните обеми.
Версия „Пеликан“
Така или иначе, цикълът с версиите „се извървява“ всеки ден от някоя от библиотеките, използвани в проекта (а когато проектите са по-обемни, те могат да бъдат и стотици). Всичко това доста затруднява живота на програмистите, защото много често следваща версия на дадена библиотека не е съобразена и създава проблеми, работейки заедно с друга библиотека. И трябва да изминат няколко подверсии, преди проблемът да бъде решен.
А над всичко идва версията на съответната основна библиотека – React, Angular или Vue, която в крайна сметка координира всичко.
Никой няма възможността всеки божи ден да проверява и обновява ръчно библиотека по библиотека, затова се ползват други библиотеки, които го правят за нас. Не следят не просто за нови версии, а за такива, които са вече обозначени като стабилни, тоест, предполага се, че не би трябвало да донесат неочаквани проблеми… поне много.
Така общо взето всеки екип трябва поне веднъж на месец или два да обновява версиите в проекта, защото изпусне ли веднъж драстично събитията, миграцията става все по-трудна и по-трудна.
Новите версии на генералните библиотеки обикновено излизат около веднъж годишно, те също трябва да бъдат следени и обновявани, но най-често отделно. И най-често не в деня на излизането им, ами след като мине определен период и те доказано работят, без да създават много проблеми.
Внимание, внимание
И това е всичко. Нужно, но важно усилие. Защото новите версии на даден софтуер не просто ни осигуряват различно изживяване като негови потребители по един или друг начин. Всяка следваща версия често е съобразена с решаването на пробиви в сигурността, които са открити в предходната. Или пък взема предвид новите възможности на хардуера, които са се развили междувременно.
Понякога просто прави работата по-бърза, оптимизирайки нещо в кода си. Или пък отстранява важни бъгове. Разбира се, в софтуерния свят това винаги си има определена цена и междувременно със сигурност създава нови. Но в сегашните свръхсложни приложения това е на практика неизбежно.
Така или иначе, основната, критично важна причина е сигурността. Неподдържаните вече версии на софтуера крият толкова много рискове, че ще ни е трудно да ги изброим, ако започнем сега.
В случая със софтуера всичко ново може да има общо с добре забравеното старо, но си е ново и важно. И дори да ни създава известни трудности, трябва да го поддържаме такова.
А докато сме на темата за новото и старото, ако решите, че ви е време за нов сайт, ние сме тук, за да ви помогнем с хостинга. Можете да го опитате напълно безплатно тук.