Mein Linux
На Хабре в последнее время появилась серия холиварных статей:
Семь причин, почему Линукс
Главная причина, почему не Linux (от автора предыдущей статьи)
Главная причина, почему все-таки Linux
В этих статьях и комментариях к ним много говорили о коммунизме, цельности системы, свободе, юзабилити, домохозяйках, глюках… Да о чём угодно, но самое главное для меня если и упоминалось, то только вскользь.
Так что я решил написать свою статью, она будет совсем небольшой не очень большой, не пугайтесь.
1. Прошлое
Я работал «компьютерщиком» в одной загорской фирме. И потребовался на работе интернет. Я пошёл к провайдеру (divo.ru, до сих пор жив, однако), где меня встретил «юноша с горящими глазами». Обсудили тарифы, подключение (модем), он сказал мне, что лучше настраивать раздачу интернета с помощью Linux и вручил RH.
Некоторый опыт работы с интернетом/IP-сетями у меня на тот момент уже был. Консоль меня тоже не пугала, у меня (как и у всех в то время) был опыт работы с DOS, да ещё и опыт администрирования Novell Netware 3.x.
Так что да, я настроил (не без его помощи) роутер на Linux. И он работал.
С тех пор я в мире Linux, чем дальше — тем больше втянут. Не могу не сказать спасибо тому человеку. Увы, не могу сейчас вспомнить ни его лица, ни имени. Просто «сисадмин divo.ru из 98-го года».
Что меня втянуло? То, что операционная система познаваемая. И это не пустые слова. За эти 20 с лишним лет я много раз погружался в исходники ядра, glibc, всевозможных программ.
Я не припоминаю случая, когда всерьёз начал разбираться с какой-то проблемой и сдался, оказавшись неспособным «докопаться до корней». Это даёт ощущение того, что система не «чёрный ящик», что она проста, понятна и предсказуема. Это очень мотивирует.
Познаваемость основана на двух столпах.
Первый, конечно, открытость исходников.
Второй — простота и лаконичность основных концепций, лежащих в основе всего мира Unix.
Простой (я бы даже сказал примитивный, в хорошем смысле) язык C, модульность системы, тяга к текстовым конфигам, текстовым протоколам, …
Мне нравится выражение «гениальность — это способность сложные вещи делать просто», в этом смысле, конечно, «отцы» Unix были гениями.
2. Сравнение с «другим миром»
Скажу честно, столкнувшись с проблемой в Windows я иногда ощущаю беспомощность. Я понимаю, что у меня практически нет шансов разобраться с тем, что происходит. Да, документация есть (и зачастую неплохая), но в нестандартной ситуации её обычно недостаточно. И тут я могу или нагуглить последовательность магических манипуляций, или сдаться.
Так что я очень понимаю тех людей, которые основывают свою нелюбовь к Linux тем, что им не нравится вбивать в консоль некие магические комбинации букв. Но дело в том, что для меня в Linux это не магические комбинации букв, а вполне понятные команды (а если непонятные — я обычно сначала разбираюсь что они означают, а потом применяю).
Прошу понять меня правильно, я не говорю, что Windows непознаваемая система. Все мы читали Руссиновича и знаем, что и тут можно добраться до кишок. Да и на Хабре были статьи, в которых с помощью отладчика и какой-то матери срывали покровы с деталей реализации.
Но будем честными: чтобы хорошо разбираться в Windows нужно быть гораздо более крутым специалистом.
3. Настоящее
Честно скажу, если взять меня двадцатилетнего и посадить за сегодняшний Linux, я бы, скорее всего, присоединился к потоку хейтеров «Linux — это сложно».
Сложность системы за это время выросла на порядки — миллионы LoC (да какие там миллионы, свежеустановленная дестктопная система — порядка сотни миллионов LoС на добром десятке языков программирования), множество сложных подсистем, каждая из которых по сути свой мир со своей историей и идеологией: cups, systemd, … Да, графические конфигураторы и готовые рецепты из гугла позволяют быстро запустить это всё, но они только отдаляют от понимания того как оно всё работает. Если постепенно в течение 20 лет можно как-то было в это погрузиться (и то, многих областей я вообще не касался, тот же офис или браузер для меня чёрный ящик не хуже Windows), то новичка это обилие знаний, которые нужно иметь для того, чтобы «влиться», просто обескураживает. И действительно возникает вопрос «Зачем? Стоит ли овчинка выделки?».
У меня нет ответа на этот вопрос.
Но если вы всё-таки решили начать, то могу посоветовать «есть слона по частям»: взять какую-то небольшую область, досконально разобраться в ней, перейти к следующей.
Ну и читать книги, конечно.
BTW, я сам с интересом поглядываю на более академичные проекты вроде FreeBSD, для новичков же, вполне вероятно, это гораздо более правильный выбор.
4. 1.5%
Хочу остановиться на этом вопросе отдельно. Многие почему-то исходят из тезиса «больше пользователей — лучше».
Да, некоторое количество пользователей просто необходимо для жизни и развития любого ПО.
Если же мы говорим об операционной системе, то оно ещё и нужно и для того, чтобы производители оборудования обратили внимание на систему.
Однако нужно заметить, что в этом плане Linux давно победил: выпуск нового процессора, чипсета, сетевой карты, etc без поддержки Linux — это уже исключение, а не правило. Притом вполне обыденна ситуация, когда мы получаем от производителя не блобы или кривые исходники, прибитые гвоздями к древней версии ядра, а качественную поддержку в ванильном ядре.
Так что с недостатком пользователей сегодня проблем нет. Как заметил уважаемый freecoder_xx, пользователи важны не всякие. Попытки угодить условным домохозяйкам очень часто делают хуже. У него были свои аргументы, у меня свои: попытки сделать систему дружелюбнее добавляют очередные миллионы LoC, то есть делают систему для меня сложнее и непонятнее. И да, зачастую речь идёт о решениях с непродуманной архитектурой, поддержка всего этого превращает систему в очередной «чемодан без ручки» — и бросить жалко, и бежать неудобно.
Стюардесса в салоне нового лайнера объявляет о то, что находится в самолете:
— На первой палубе — багаж, на второй — бар, на третьей — поле для гольфа, на четвертой бассейн.
И добавляет:
— А теперь, господа, пристегнитесь. Сейчас со всей этой хернёй мы попробуем взлететь.
Пришествие же «молодых и зелёных» разработчиков мне тоже не всегда по душе. Они почему-то склонны выбирать «тяжёлые» решения, редко думают о простоте и изящности архитектуры. То есть опять речь идёт об усложнении системы, о новых миллионах LoC. Иногда, как говорил В.И. Ленин, «лучше меньше, да лучше».
Разумеется, я не хочу сказать, что нужно превращать сообщество разработчиков (и вообще linux-сообщество) в закрытую секту, приток «новой крови» необходим для жизни любого проекта.
И да, я рад новым пользователям, и иногда трачу свободное время на ответы новичкам. И вообще opensource-сообщество дружелюбно, я сам много раз получал помощь от авторов кода (и не только).
Просто я не вижу смысла уговаривать кого-то использовать Linux. Вы считаете, что Windows/macOS/etc лучше — так и отлично, пользуйтесь ими на здоровье. Я вам плохого слова не скажу. И не подумаю даже, честное слово. Более того, я сам считаю, что во многих случаях использование closedsource систем/решений вполне оправдано.
5. Будущее
Ясно, что Linux будет актуальным ещё много лет. И Windows тоже. Надеюсь, что в обозримом будущем появится «молодая шпана, что сотрёт нас с лица земли» — новые opensource решения, которые будут отличаться простой и красивой архитектурой. Поживём — увидим.