Пролог

"Опыт - это когда на смену вопросам "Что, Где, Когда и Почему?" приходит один: "Зачем?".

Все ниже сказанное является личным мнением Автора, основанном на многолетнем опыте разработки и программирования, и не ставит своей целью учить кого-то, нанести кому-либо обиду или вызвать у кого-то недоброжелательность. Все противоположные мнения также имеют право на существование, и только при этом условии Истина может восторжествовать, несмотря на то, что "Истина где-то там".


После того, как "Пингвин разбил Яблоком Окно", индустрия программирования претерпела глобальные изменения. То, что много лет назад казалось невозможным, сегодня является полноценной составляющей нашей жизни.

Появление PC стало революционным и дало возможность более ускоренного развития, впрочем как и появление смартфонов в наше время. Но тогда в среде программистов-разработчиков действовал закон "Клиент всегда прав", хотя и существовали отдельные отступления от него (достаточно вспомнить причины появления режимов ideal и masm в Turbo Assembler'е фирмы Borland).

Сегодня у разработчиков существует другой закон: "Все вокруг ..., а я белый и пушистый". Наверняка многие из Вас при обращении к ним получали подобные ответы: "Вам это не нужно.", "Это задача не первой необходимости." и тому подобное.

ПОЧЕМУ?

И вот в период этой, с точки зрения Автора, вакханалии, Автор и задался вопросом: "Почему?". Ведь должна же быть какая-то причина. И причина нашлась довольно быстро.

Когда Автор прочитал в первый раз Манифест Ричарда Столлмана, а читал он его в переводе, то сначала решил, что переводчик что-то очень сильно перепутал; такого не может быть, потому что не может быть никогда. Но обратившись к оригиналу стало понятно, что переводчик очень большая умница и знает свое дело на "все 100". И если Вы найдёте в себе силы и время и прочитаете этот довольно интересный документ, то поймёте, что его основной лейтмотив это "Дайте нам денег, дайте нам компьютеры и мы сделаем так, что Вы будете зарабатывать меньше, но постоянно".

Какой из этого следует вывод? Единственный. Разработчик не заинтересован в результате своего труда. Чем больше к нему будут обращаться, тем больше ему будет "капать". Вот причина постоянства заработка. А тогда зачем исправлять свои ошибки на этапе разработки, тестировать и прочее? Герой одного советского фильма рекомендовал тренироваться на кошечках. Вы - кошечка?

Оппоненты Автора скажут, что "программного кода без ошибок не бывает", и с этим невозможно не согласиться. Ведь не ошибается только тот, кто ничего не делает. Это сущая правда. Но тогда почему между обнаружением ошибки и её исправлением, если оно вообще происходит, проходят годы? Например, к вопросу о работе горячих клавиш в Linux при переключении на другие раскладки клавиатуры. Ведь сделать же это можно (Google Chrome, LibreOffice), однако, почему-то не делают.

Оппоненты Автора скажут, что "код в свободном доступе". И это тоже сущая правда. Но сразу же возникает вопрос: а кому он нужен? Большие сомнения в том, что Вы, решив использовать чей-то программный продукт, будете глобально изучать его тысячи и миллионы строк кода. Наверное, лучше все таки заниматься своими делами? Единственный вариант использования этого кода, это использование его только в качестве примеров программирования. Но для этого есть раздел "Примеры" в любом уважающем себя SDK, либо продукты типа когда-то существовавшего локального MSDN фирмы Microsoft ( к сожалению, к сегодняшнему online MSDN это не относится ).

Оппоненты Автора скажут, что "при обнаружении какой-либо ошибки можно найти причину по исходному коду". И это тоже правда. Но разве Ваша задача искать чужие ошибки, если, конечно, Вы не тестировщик, которому за это платят? Вам ведь платят за выполнение Вашей работы. И потом, даже, если Вы найдёте ошибку, узнаете, что "это задача не первостепенной важности", сами исправите, откомпилируете, то как вы будете поддерживать следующие версии такого продукта? Формировать новый департамент в своей фирме?

Но, к счастью, минусов без плюсов не бывает. С точки зрения Автора у подобного программирования все же есть один положительный момент: это быстро начать какой-либо стартап. Т.е. попробовал, что-то заработало и запустилось, но потом, если Вы хотите, чтобы Ваши клиенты Вас не вспоминали нехорошими словами, необходимо все брать в свои руки. Не следует курить трубку, сидя на пороховой бочке.

КОМУ ЭТО ВЫГОДНО?

В юриспруденции существует древнейший постулат: "ищи кому выгодно". К сожалению, Автор не в силах пока ответить на этот вопрос, несмотря на то, что столкнулся с подобным программированием ещё в далёком мае 1993 года.

Тогда Автору довелось присутствовать на собрании сторонников СПО с участием Ричарда Столлмана. Сказать, что Автор и его коллеги были в шоке - ничего не сказать. Ожидая приезд Ричарда Столлмана ( он задерживался ) , зал, а это примерно 200-250 человек, в ответ на постоянно задаваемый вопрос ведущего "Кто наш враг?" в течении нескольких минут стоя скандировал, в упоении повторяя, "Билл Гейтс!!!". После такого, ответ на вопрос откуда взялся слоган "Windows - MustDie", думается долго искать не надо.

В течении всего собрания Ричард Столлман рассказывал как прекрасны свободы и свободное бесплатное ПО. А по окончании собрания в фойе распространялось это самое ПО. Да, оно было бесплатно, но для того чтобы его унести, надо было у сторонников купить стримерные кассеты по цене $3.0, в то время как Автор всегда их покупал в обычном магазине по розничной цене $0.6. Не странно ли?

С учётом сегодняшних реалий всё происходившее в том далёком 1993 году рассматривается уже совершенно с другой стороны, и эта сторона далеко не светлая.

ЧТО ЖЕ ДЕЛАТЬ?

Глядя на сегодняшнее ПО, у Автора возникает ощущение, что он снова оказался в конце 80-х годов, когда каждый разработчик считал своим долгом что-то привнести свое, когда в одном приложении по клавише F1 открывался редактор, в другом - помощь, а в третьем -дополнительная панель. И зачем фирма IBM стандартизировала оконный интерфейс в 1987 году?

Несмотря на это, мы имеем то, что имеем. Поэтому необходимо подстраиваться под сегодняшний день. Необходимо понимать слабые места, для того, чтобы знать "что ждет впереди". Разговоры в курилках ни к чему не приведут, потому что Свобода - это еще и Свобода Словоблудия и Болтологии (ССБ). Поэтому необходимы факты! Вот потому и возникла идея данного Проекта.

Используя смартфон, со множеством програмного кода со всего мира, Вы имеете уникальную возможность анализировать этот код, знакомиться со способами разработки, которые используют программисты, ведь любая среда разработки всегда оставляет свои следы, надо только уметь их разглядеть, а также со стилями разработки, стилями поддержки и прочее, и делать выводы, выводы, выводы...

К слову сказать, раньше было хорошим тоном сообщать Пользователю о добавленном функционале и исправлениях. Но сегодня только в некоторых приложениях встретишь Историю версий. Максимум что предлагается, это ограниченный раздел в Магазине "Что нового". Но если вы по каким-либо причинам пропустили обновление, то вы уже можете никогда не узнать о добавленном/удаленном функционале. А такие фразы как "Мы исправили некоторые неполадки и добавили новые функции", которые можно встретить в разделе "Что нового", вряд ли можно назвать информативными.

Также, периодичность обновлений приложения может рассказать Вам о многом. Например, если приложение обновляется через пару часов после предидущего обновления, то это может навести на некоторые вопросы, а если это случается регулярно, то вопросов должно стать еще больше. Или ваше любимое приложение периодически обновлялось каждую неделю, и вдруг перестало и не обновляется уже несколько месяцев, значит, кто-то где-то уволился и Вам вряд ли стоит ждать чего-то нового.

На этом фоне наглядно выглядит поведение фирмы Microsoft, бывшей когда-то столпом проприетарного ПО, ревностно следившей за стилизацией своих продуктов. Например, на заре появления на рынке Windows Phone специалисты Microsoft давали рекомендации, что обновлять свои продукты, следует не чаще чем раз в полтора-два месяца, а сейчас посмотрите как часто обновляются их продукты на Андроиде: Skype - каждую неделю. Хотя, справедливости ради, все же следует отметить, что офисные продукты (Word, Excel и прочее) все же обновляются раз в месяц, хотя в июле 2016 - каждую неделю (вообще-то лето у них всегда было странным, достаточно вспомнить лето 2014, когда массово отзывались десктопные обновления Windows).

Сколько существует Windows столько и существует вопрос "следует ли разработчику использовать венгерскую запись имен?". Например, разработчики платформы Symbian отвечали на него очень просто: "Нет, потому что функции очень короткие." Да, в Symbian старались действительно делать короткие функции, но за счет постоянно используемого двухфазового конструирования объектов классы разрастались и было несколько тяжело понять, что и где. Хорошо что на помощь приходила подсветка кода среды разработки, иначе было бы совсем тяжко. Однако даже в Android SDK вы можете встретить как использование венгерской записи имен, так и ее отсутствие. То же самое Вы можете увидеть, проанализировав классы установленных на вашем смартфоне приложений. Конечно же каждый сам для себя решает - использовать или нет, но вы сможете легче ответить на этот вопрос если, посмотрите как его решают другие.

Для отладки приложений программисты часто используют отдельный код, который им необходим только на период отладки. И если этот код остается в "релизном" приложении, то он лежит там мертвым грузом, увеличивая размер приложения, а следовательно и объем трафика для пользователя при обновлении (хорошо, если трафик бесплатен). Но убедиться, что такой код не попал в релиз в большом проекте, несколько затруднительно. Проще посмотреть на сформированный DEX файл, и убедиться, что его там нет.

В приложениях, основанных на языке Java, основополагающим является имя пакета. В действительности это преобразованное доменное имя. Но и оно может вам сказать о многом. Например, если Вы встречаете на своем смартфоне пакет с именем "com.google.android.apps", то вероятнее всего беспокоиться не надо, но если Вы обнаружили пакет с именем "zxc.eagxdss", то, наверное, стоит призадуматься.

Многие могут сказать, что "я же знаю, какие я приложения ставил!". Да, но в системе есть масса других мест, о которых Вы можете и не знать. А знать бы следовало.

Вот для решения всех этих и других подобных вопросов и предназначен данный Проект. Поможет ли он или нет, конечно же, покажет время, но все же надо надеяться на лучшее.