Почему я решил писать снова desktop software, а не web
В начала ясно - Винда умрёт
я 19 лет пишу программы, а может быть считать школьные симуляции вертолетов с (7-го класса я веду эти попытки), то уже более 27 лет наверное связан с программированием.
я застал dos\win95\win98\win2000\winxp\win7\
и параллельно все возможные linux с его самого начала, где надо было всё ставить вручную из командной строки без подсказок из интернета, которого тогда “не было”.
Примерно с эпохи win7 я отказался от winwows и не пользуюсь им совсем. я давно работаю в linux. однако я писал для win программы, для корпоративных, например, заказчиков…
Уже во времена win98 мне было ясно что винда умрет. я писал например драйвера для винды и если вы вы погружались в это и хотябы немного знакомы с vdx драйверами и sys драйверами и как они отличаются, то вас должен сегодня охватывать ужас от кол-ва уязвимостей такой системы. это барахло сделанное на коленке.
Спокойствия не добавляли и задумки майкрософта в системе COM, а потом OLE, а потом ActiveX , итд. а потом все проблемы , которые множились различиями в winAPI в разных версиях, усугублялись режимом совместимости и им даже пришлось маскировать это с .NET прослойках, потому что пользоваться нормально и нативно было уже совсем нереально и очень дорого по сопровождению. Это был ад, и все в него шли с позитивным настроем. Было ясно, что либо будет .net без вариантов, либо на с++ например или pascal или еще как - то все это загнется и покроется магабайтами библиотек оберток (магабайты тогда уже казались перебором для программ, а сейчас если их десятки а не сотни то прога “легкая”)
Мы Верили - “за веб (облаками) будущее”
Был в жизни моей этап, когда я переводил десктоп ПО на веб, это были не простые 2000е. тогда веб еще содержал Flash swf как , но шли разговоры о будущем html5 стандарте. А по факту мы имели браузеры, которые нихрена не могут и IE5-IE* который мог еще меньше , но был тем не менее распространен, и иногда шли разговоры, что проще написать свой браузер, чем писать для существующих. и некоторые десктоп программы так и делали, чтобы отобразить в себе html страничку хотябы с предсказуемым результатом.
Но мы не унывали. Мы писали фреймворки, новые и новые, постоянно переписывали приложения на новые фреймворки, изобретали свои и позже оказывалось, что другие большие команды делали то же самое и так же как мы, и мы переписывали приложения снова, отказываясь от своих поделок.
Мы очень многому научились, сегодня веб программисты лучше всех понимают как делать интерфейсы с “идейной точки зрения”. Этак идейная точка зрения имеет смысл если есть фронтенд и бекенд, а они есть если архитектура ПО строится именно так. И вот тут и есть сама мина, которую все не замечали.
Я её заметил, ещё когда мне не понравилось решать схожие проблемы и на бекенде и на фронтенде - двойная работа, валидация, сборка моделей, обновление состояний, шины сообщений… все это есть и там и там в не малых приложениях.
(кстати, эта работа меньше дублируется м многостраничных веб приложениях, но там нет всей красоты и опыта которые фронтендеры достигли за последние годы)
Времена интернет цензуры
Потом эта мина совсем стала не устраивать когда пришли новые времена цензуры.
Интернет построен как иерархия доменов и как “плоская система технических адресов”, доменом можно владеть и домены можно блокировать по имени, адресу, протоколу итд. методы развиваются.
Или сами владельцы сервисов могут отказать в обслуживании странам, группам лиц итд. Это уже не та свобода , за которую мы боролись. В этой части очевидно, что мы хотим другой интернет, устроенный иначе.
Писать для Десктоп платформы
Откуда взялась идея вообще писать не простые приложения , а веб приложения? откуда это проистекает?
Отличия веб и десктоп
Отличия веб метода по сравнению с десктоп:
в веб все под контролем РАЗРАБОТЧИКА, вендора решения (десктоп контролируется покупателем сильнее чем поставщиком ПО)
веб удобнее обновлять, НЕ СПРАШИВАЯ покупателя хочет он этого или нет.
веб проще защитить от неуплаты , фактически приложение арендуется, а не покупается. для некоторых рынков это принципиальная разница.
- некоторые покупатели на это просто не идут - они хотят приватное решение…. тогда, если договориться не выходит, то придется поставлять “приватное облако” -
- это ничем не отличается от десктоп решений. и другие плюсы веб решения сразу пропадают
очень важные на мой взгляд пункты
- владения веб приложением не происходит
- гос-во может заблокировать доступ “по любым” причинам
- сам поставщик ПО может отключить клиентов “по любым” причинам.
- поставщик ПО по закону становится иногда “СМИ” а иногда “популярной медиа точкой” (если клиентов много и\или есть публикуемые открыто данные) и обязан осуществлять контроль контента на домене приложения и отвечает за это, значит он даже обязан следить за клиентами… а даже если они согласны - то это происходит за их счёт и это лишняя копеечка в цене + доп работа для поставщика решения, которую он скорее всего не хочет т.к. он хочет фокусироваться на самом решении.
Выбор между веб и декстоп, аргументы
Отсюда можно подытожить причину которая определяет выбор “web\desktop”
- поставщик хочет контролировать своих клиентов - web
- поставщик просто решает проблемы клиентов - desktop
Идея контроля клиентов иногда имеет “не злые” корни - например, клиент не опытный и не компетентный, ему часто нужна помощь и он не знает как пользоваться системой… Тогда ему нужна даже “удаленная помощь”… - такое в десктоп по организовать даже проще, чем в веб, о чем убедился на своем опыте.
Или у вас B2C форма продукта и клиентов очень очень много и вы ищете как улучшить продукт, вам нужно прямо онлайн видеть как они пользуются продуктом, куда они жмут чаще и почему… часто слово “онлайн” сбивает толку и склоняет к выбору web варианта, но в десктоп приложении тоже можно собирать аналитику использования и тоже можно ее отсылать на свой сервер… часто так и делают и уведомляют пользователя об этом, вежливо спрашивая его “хочет ли он делится такой информацией, чтобы улучшить продукт”… а вот в веб приложении пользователь о таком сборе информации о поведении чаще всего даже не уведомляется - эта информация отчуждается без его ведома.
Если продукт дорогой и ценный и надо его защитить от незаконного копирования, то защитить desktop версии ПО сложно, а для web приложений доступен вариант “не продлил аренду - заблокирован”. Это кнут, не пряник.
Защитить десктоп ПО можно, например кол-во рабочих мест - ведением шифрованного журнала подключений и периодическими инспекциями ПО, или маркировкой каждой сборки ПО , чтобы если какая то сборка была найдена бесплатно на торрентах - понять от какого покупателя произошла утечка.
Можно поднять цену и клиент сам не захочет раздавать эти копии т.к. они ему дорого достались.
важно , что методы защиты существуют в принципе…
Важный фактор для перехода на веб - когда ооочень много клиентов, а ПО надо часто и своевременно обновлять. например сдача отчетности в налоговую. Миллион установок, постоянные внесения изменений в формы и законы требуют обновлять ПО, даже 5МБ патч изменений, а в таких системах он будет более 50 МБ или даже 100МБ нужно передать 1 млн клиентов, это много терабайт. и передать их надо в “последний день” т.к. клиенты почему то тянут с отчетностью до последнего момента и если что то пойдет не так и ПО не заработает , то будет негатив в сторону ПО и проблема клиента не будет решена. в таких случаях очень правильно переходить на web вариант, т.к. его обновить для всех можно своевременно.
Россия.
Кто в россии покупает ПО? спросите обывателя, за какие сервисы он платит регулярно?
На западе принято оплачивать свои сервисы, их часто несколько, чаще 2-5 и платят по 5-8 долларов за каждый. В россии оплатить 1000 р/мес за сервис люди могут, но будут это делать только если это надо для работы, web B2C в россии малодоходная история.
Я пришел к выводу, что “наш человек” не хочет платить за аренду ПО, он хочет владеть ПО на всегда.
Лучше он заплатит 50т.р. один раз, чтобы купить, чем будет платить 1тр в мес, зная, что это лишь аренда. (субъективно. бизнес гипотеза)
Важный момент:
Многие люди, включая меня, вообще не хотят платить за ПО. У меня например такая мысль в голове : “клиент прав; я клиент. Поставщик должен быть клиент-ориентированным.
Я хочу бесплатно. Клиент-ориентированный поставщик ПО - даст мне ПО бесплатно, или он не ориентирован на клиента и должен с рынка уйти, а я не хочу ПО от такого поставщика”. Звучит странно, но многие клиенты, и даже я, часто так думают.
Организации покупают ПО тоже. В России именно они по заинтересованы в ПО , чтобы повысить какие-то показатели работы.
Организации не хотят публичное веб облако - они считают это утечкой их данных, это не безопасно. Организации хотят “приватный сервер”, “приватное облако”, лучше если ты привезешь им в их стойку сервер и скажешь - вот Etherner разъём, втыкайте его в ваш свитч и подключайтесь к вешему серверу и пользуйтесь - Тут всё ваше и никто не видит это, кроме вас.
Даже не надо клиентов ставить - просто из браузера люди заходят во внутренней сети на внутренний сервер и пользуются. Админы пробрасывают что-то наружу, а может и нет.
Но это не веб решение, вообще говоря. Это такой вид десктопного ПО, где вместо клентов - браузер. Это не аренда, не проще обновлять, не проще защищать… никаких плюсов и отличий от десктоп ПО. На самом деле часть проблем даже решается сложнее, “удаленная помощь” , например, или сбор аналитики… да всё тут сложнее т.к. связность системы ниже, централизованность ниже (часто “ноль”).
Если суть системы “своевременно обновить ПО” то от веб решения больше толку, иначе - смысла нет, не это ценят люди.
Ещё аргумент. Сейчас очень много “web программистов”, а число десктоп программистов падает. Но десктоп программист это бивень, а веб программисты часто очень низкого качества и очень не постоянные, часто меняют место работы.
С позиции клиента, меня, как физ лица:
Сейчас я напишу какой ПО я хочу покупать.
Мне не нравится, когда мои данные видны еще кому то, но если я работаю в команде - то у нас должно быть общее информационное поле.
Мне не нравится когда кто угодно может заблокировать то, что я делаю. Поэтому веб решения тут самый уязвимый способ.
Я не хочу арендовать, я хочу своё. Может быть я буду это выкупать много лет “как квартиру”… Но если мне нравится это Программное Обеспечение (ПО) , то я хочу владеть своей копией.
Мне не надо чтобы ПО работало только с какого-то одного адреса, от которого все зависит, я хочу ПО, которое я смогу настроить так, как мне надо и использовать с той группой лиц, с которой считаю нужным.
Я хочу бесплатное ПО. Если есть выбор, то я предпочту не платить.
Если ПО мне нравится и я часто им пользуюсь, то готов заплатить за него, чтобы оно развивалось.
Если кто-то решил реальную проблему - он как минимум придумал решение и снял сливки… Но дальше решение должно стать бесплатным. Если оно бесплатным не стало - я хочу, чтобы кто-то всё равно создал для этой проблемы бесплатное решение, вместо того, кто его придумал, и не сделал его бесплатным.
Если решение платное и нет альтернатив и без него никак - только в этом случае можно за него платить.
Отсюда можно сделать вывод, какая форма ПО меня устроит и я сам сейчас, как клиент-ориентированный разработчик перехожу к написанию такого ПО.
Устраивает бесплатная программа с закрытым исходным кодом, у которой можно запросить для себя платно какие-то изменения - дать донат на разработку фичи. Можно купить себе копию с исходным кодом себе навсегда, чтобы моя проблема, для которой ПО, всегда рашалась.
ПО работает по принципу P2P, но не любому p2p, а такому, чтобы никто не мог это заблокировать его работу.
ПО может работать и онлайн и оффлайн в зависимости от того подключен я к сети или нет.
Я сам определяю как её использовать и с кем, и Если в ней есть какие-то ограничения, которые я при этом не могу обойти (до 5-и пользователей например) - то я могу заплатить и получить полнофункциональную копию себе навсегда и без ограничений.
ПО может содержать какой-то рекламный банер, который что-то показывает и я не могу этому воспротивится, но согласен на это т.к. программа бесплатная и полнофункциональная, или купить её.
Я могу заплатить один раз не слишком малую для меня сумму, чтобы убрать этот банер навсегда. Я решу такое сделать если программа нужна мне часто и в использовании нравится мне (=решает мою проблему).
Скорее всего это desktop программа т.к. нет причин такой программе быть исключительно web решением.
Такую платформу и технолоия я и делаю. Это технология Korni3
.