LINUX.ORG.RU

Интервью с Райаном Гордоном

 , ,


1

2

На игровом сайте cheerfulghost.com опубликовано интервью с известным в сообществе GNU/Linux программистом, прежде работавшим в Loki Software и портировавшим множество игр и некоторые приложения на GNU/Linux, Райаном Гордоном, известного также как Icculus.
В последнее время Райан также работает с командой Humble Bundle.

Выдержки из интервью:

О нынешнем состоянии игр под Linux:
Есть прогресс. Это значимый год. Unity3D, Valve готовит релиз Steam, всё это хороший фундамент на будущий 2013 год.

Кто в итоге возглавит производство игр под Linux:
Спросите меня опять через три месяца. :) Вопрос будет состоять в том — заразит ли распространяющийся энтузиазм такие компании как Electronic Arts, Activision, Ubisoft? Вернётся ли Epic и Id? Время покажет.

Об Windows 8:
Я много не знаю, хотя видел больше рекламы о ней за этот месяц чем рекламы прошедших выборов президента США.
Думаю Valve обратила внимание на Linux именно из-за открытия Windows Store. Если у вас есть магазин торгующий ПО, сможете ли вы остаться на плаву с приложениями для ОС в контроле закупок которых заинтересован сам производитель этой ОС? Между Apple и Microsoft Valve борется за менее сдерживающую её платформу.
Если будет какой-то успех, то это уже здорово для linux-геймеров, а если выйдет намного лучше, то это огромный выигрыш для всех. Кто-то же должен дать пинка этим огороженным магазинам, которые растут как грибы после дождя на каждой платформе.

Интерес к Linux в качестве игровой платформы растет потому что:
Steam готовит релиз для Linux, серии Humble Bundle стали толчком для портирования игр, Unity сделала порт своего движка, Kickstarter завален заказами от линуксоидов.
Просто много всего (в частности, что касается денег) произошло в этом году и это мотивирует многих разработчиков попробовать что-то новое.

Про Humble Bundle:
С командой Humble Bundle действительно приятно работать. Никто из них не выгораживает Linux как какую-то особенную платформу, ну и около 25% их дохода поступает от linux-геймеров, так что это им выгодно.

Любимый проект:
Google Earth. Это была не игра, а месяц жизни под столом в Googleplex (штаб-квартира компании Google) — удивительное впечатление. Скучаю иногда.
На втором месте Unreal Tournament 2003. Я работал в офисах Epic в течение нескольких недель пытаясь сделать версию игры под Linux на Retail CD, что мы и сделали! Это был первый раз, когда я почувствовал себя настоящим разработчиком игры.

В настоящее время работает над:
Запуском Steam, я уже запутался. Killing Floor и Red Orchestra были анонсированы на днях. В процессе разработки есть и другие, но меня уже постигла неудача за преждевременные заявления. :)

Предпочитаемый дистрибутив:
Сейчас Ubuntu. Он просто работает, да и я про это много не думаю. Раньше, в начале 90-х, я был фанатом Slackware, хотя какая сейчас разница?

Про попытку включения в Linux FatELF. Про недавнее предложение по улучшению поддержки полноэкранного режима в играх под Linux:
На счёт FatELF — я был совершенно ошеломлён ответной реакцией. Во-первых это небольшое изменение не нарушит существующую систему, но добавит функциональности при почти нулевых затратах. Я был хорошо осведомлён по этой теме, подготовился заранее и даже имел готовую виртуальную машину для доказательств чтобы не выглядеть нубом, раз пошёл на такой шаг, т.к. это ядро ​​Linux — Премьер-Лига. Но постойте, я столкнулся с какой-то враждебностью. Это было странно, как-будто тебя как младшеклассника снова унижают крутые ребята в столовой. Возможно тогда я слишком близко принял это к сердцу — люди могут сами по себе судить просмотрев архив списка рассылки.
У меня есть целый ряд таких вещей как FatELF которые я хотел бы когда-нибудь собрать вместе и сделать Linux лучше во всех аспектах. FatELF лишь показался хорошим началом. Но я выбросил эти дурные мысли из головы — «почему мне хочется сотрудничать с этими людьми?» — я решил полностью переключиться на Mac OS X. Но в конце концов я остыл и расставил приоритеты вещам в которых не нуждаются другие проекты.

Сэм Лантинга (один из создателей SDL) работает в Valve и использует SDL для игр Valve. Это здорово. Одна из вещей, которые они хотят чтобы она работала лучше — полноэкранные игры. Сейчас с этим бардак. Приложение захватывает весь экран, изменяет разрешение, а может упасть, после чего рабочий стол исказится или может все окна пропадут. Проблема в том, что не та штука отвечает за изменение разрешения. Сэм и я и так и сяк миллион раз пробовали найти «правильный» способ и решили, что единственным верным решением для этого является захват экрана оконным менеджером. Я написал и отправил им патч и затаив дыхание жду ответа, может снова придётся решать эту проблему.

Конечно были разногласия, но в подавляющем большинстве случаев приходили к консенсусу — «есть проблема, а вот неплохое решение». Оказывается, что сообщество с которым вы взаимодействуете является важным фактором. Я был гораздо менее осведомлён в этой области, чем когда это было с FatELF, но члены сообщества были более радушными. Все их мнения обобщены и вышло лучше моих первоначальных планов. Мы почти готовы начать исправления ПО.
Не думаю, пытался бы я если б Сэм и Valve не поощряли меня это сделать. Возможно я опять начну слать патчи.

Что нужно чтобы разработка и портирование игр стало проще:
Нам очень нужен более совершенный отладчик OpenGL. ApiTrace хорошее начало, но это только начало.

Про проект iodoom3:
iodoom3 на данный момент застопорился, каждый занят другими вещами. Рано или поздно мы начнём над ним работать, но я думаю, что все были гораздо более увлечены Quake 3, чем сейчас Doom 3, это видно по прошедшим событиям.

>>> Подробности

★★★★★

Проверено: JB ()

Ответ на: комментарий от anonymous

Да здравствуют x10 толще апдейты!

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

cruxish ★★★★
()
Ответ на: комментарий от BlackNight

Первые и так не требуют прав, там внутри sh-файл и архив. sh-файл не требует прав для запуска и распаковывает файлы в /tmp.

Формат файлов с описанием репозиториев пакетов тоже бывает. Ты имел в виду «Пусть программа прописывается в RPM/DEB базу пакетов»? Было бы неплохо. Так делает Adobe AIR, а ещё, кажется, hplip (с помощью PackageKit), но я не знаю точно. Первая перестала разрабатываться, официальная причина «0,5% загрузок ото всех», однако инсталлятор последней версии крутой. Использует gnome-keyring или kwallet. Прописывает себя в пакетную систему. Возможно, использует какие-то другие Linux-специфичные вещи.

Существуют крутые закрытые программы, которые для того, чтобы работать в вообще любом дистрибутиве Linux, скомпилированы с кучей условий. Достаточно только компилировать с указанными выше версиями библиотек (из стандарта LSB), а все не входящие в список положить в архив с программой, чтобы она везде запустилась. Кроме того можно компилировать с минимумом зависимостей. Можно компилировать в GCC 4.1, и тогда любой дистрибутив Linux 2005 года и старше сможет запускать её. Можно добавлять в код dlOpen, чтобы не прибивать гвоздями медиаплеер к маленькой и никому не нужной библиотеке. Так например сделано в Skype, в коором зависимость от PulseAudio опциональна. А Crossover Wine в своём красивом GUI говорит какой системной библиотеки нет и какого функционала я лишаюсь без неё. А для открытого ПО этого просто не надо: ни старого компилятора, ни компилирования с библиотеками из стандарта LSB, ни остального. Мне так кажется.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 2)
Ответ на: комментарий от daemonpnz

А левомобранные бинари ты не будешь апдейтить, надеешься на сесурити бай обсурити?!

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

cruxish ★★★★
()
Ответ на: комментарий от cruxish

>> Да здравствуют x10 толще апдейты!

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

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

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от cruxish

Ибо не решает проблему как таковую. Нормальный пакетник/магазин приложений (аля гугл плей) - вот истинное решение.

daemonpnz ★★★★★
()
Ответ на: комментарий от ZenitharChampion

В моём дистрибутиве Linux апдейты больших программ занимают килобайты

Ты ж только что написал, что на генте сидишь. Апдейт можт и мелкий, а качать/компилить прилично. Или 9999-git/svn-камикадзе?

Интервью с Райаном Гордоном (комментарий)

Сейчас тоже из Gentoo

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от cruxish

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

daemonpnz ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Мне так кажется.

Да так и есть. Мы, как поставщики проприетарщины, собираем свой софт в CentOS 5. Этим гарантируется его работа практически во всех актуальных дистрибутивах. Но для открытого софта я всегда предпочитаю latest & greatest.

cruxish ★★★★
()
Ответ на: комментарий от upcFrost

Бинарники большинства игр весят на порядки меньше ресурсов, сомнительный аргумент.

Tweaker ★★★★☆
()
Ответ на: комментарий от AVL2

Два раза же уже подчеркнул, что интересуют проблемы. То что вы перечисляете не проблемы, а решения, способы применения. Очень похоже, что FatELF из проектов, которые просто доставляют разработчикам своей идеей, и они пытаются найти ей применение.

Попробую всё же выудить какие-то реальные проблемы из того, что вы перечислили:

Распостранение одного бинаря под все поддерживаемые архитектуры.

Зачем? Ну ладно, допустим мы хотим упростить жизнь «простым пользователям». Под все поддерживаемые архитектуры бинари прекрасно располагаются в репозиториях. Нужно создать формат файла для описания репозиториев. ну, если уж очень нужно запихнуть всё в один файл, чтобы была возможность оффлайн установки, используем привычные для проприентарщиков *.run.

Игра в тарболе, которая идет и под x86 и под x86_64 без необходимости доставлять всю линию x86 библиотек.

Про тарболы уже писали выше. Решение старо как мир. Скрипт запускает нужный бинарник.

Или даже дистрибутив, который можно поставить и использовать в родном режиме и на x86 и на x86_64 .

Про одну установку под несколько архитектур уже интереснее. Допустим у нас есть зоопарк серверов, и мы хотим иметь возможность достать диск с системой из одного и засунуть его в другой, ага. Задача редкая, но вероятная. Наверное, нужно решать её всё же с помощью multiarch, нет?

Я это всё к тому, что при разработке ПО заход со стороны жопы не желателен. Нужно мыслить последовательно - от проблемы к её решению.

BlackNight
()
Ответ на: комментарий от Nanodesu

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

Quasar ★★★★★
()
Ответ на: комментарий от cruxish

Подавляющее количество игр обновляется не больше одного раза.

Помню я выход скайрима. До сих пор патчится, и я не про DLC сейчас говорю. Fifa13 - тоже самое. Half-life 2. Это так, что бегло вспомнил. Даже, если зайти на какой-нибудь торрент-трекер с играми, там каждая таблетка/трейнер пишутся под определенную версию бинарника. Так что ты не прав.

cipher ★★★★★
()
Последнее исправление: cipher (всего исправлений: 1)
Ответ на: комментарий от AVL2

Нет - Steam не огорожен на данный момент:

1. Разработчиков там не принуждают огораживать игры

2. Нет навязывания издательства

Хотя, перспективы есть. По этой причине игры брать лучше на GOG.com (они сейчас поддержку OS X добавили, но это также значит,то и линукс не за горами).

Quasar ★★★★★
()
Ответ на: комментарий от ZenitharChampion

В общем-то если следовать таким рассуждениям, убунта или не убунта - неважно, что за дистрибутив.

Quasar ★★★★★
()

Сейчас Ubuntu. Он просто работает..

Наш человек! 5+ Сижу на Ubuntu год - горя не знаю. Никогда раньше не думал, что Linux сможет заменить венду для моих потребностей, пока не попробовал Ubuntu. Единственный мотив, заставляющий меня всё же не удалять венду с жёсткого диска, - это игры. Единственный из немногих «поплавков», который позволяет пока что держаться венде на плаву, используя неоправданно высокую цену.

Manul4eg
()
Ответ на: комментарий от daemonpnz

Да здавствуют вирусы, трояны и линлокеры.

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

BlackNight
()
Ответ на: комментарий от BlackNight

Это не повод втыкать дополнительные дыры для дураков и сочувствующих.

anonymous
()
Ответ на: комментарий от kravich

kravich> Вариант в виде .run или .configure/make/checkinstall вообще непроходимый квест для неопытного пользователя.

Про .run - 4.2 в чистом виде. В .run спокойно инсталляторы вкладывают.

Quasar ★★★★★
()
Ответ на: комментарий от BlackNight

Так я и почитал. И не понял. Ещё раз: какую проблему эта штука пытается решить? Какие конкретно есть неудобства, которые FatELF должен устранить?

Мне кажется это сильно упростит распространение игр(софта) посредством компакт дисков. Хотя в 2012м году это уже и не особо актуально, но все таки еще актуально.

Loki13 ★★★★★
()
Ответ на: комментарий от BlackNight

Зачем?

Затем, что есть бинарь, например abootimg. И есть целый ряд устройств, например, как у меня, ноут x86 и нетбук arm hf. И есть желание запускать его с флешки на обоих этих платформах .

Ну ладно, допустим мы хотим упростить жизнь «простым пользователям». Под все поддерживаемые архитектуры бинари прекрасно располагаются в репозиториях.

Че, правда? Ну тогда проблем, конечно, никаких.

Нужно создать формат файла для описания репозиториев.

Он давно уже есть. Создается утилитой createrepo.

ну, если уж очень нужно запихнуть всё в один файл, чтобы была возможность оффлайн установки, используем привычные для проприентарщиков *.run.

Речь не про установку, а про запуск самого приложения.

Про тарболы уже писали выше. Решение старо как мир. Скрипт запускает нужный бинарник.

то есть вместо одного бинаря мы видим скрипт (не факт, что интерпретатор в системе есть) и n*бинарей под все архитектуры.

Если программа состоит из одного бинаря, то оверхед получаем *N+1, где N-количество поддерживаемых архитектур. И таки надо отметить, что корректного определения архитектуры из скрипта нет. Парсинг uname -a не всегда дает 100% результат.

Про одну установку под несколько архитектур уже интереснее. Допустим у нас есть зоопарк серверов, и мы хотим иметь возможность достать диск с системой из одного и засунуть его в другой, ага. Задача редкая, но вероятная. Наверное, нужно решать её всё же с помощью multiarch, нет?

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

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

линуксойд

просторечивое

К Розенталю, быдло!

хехехе

Oleaster ★★★
()
Ответ на: комментарий от kravich

.run — прямой аналог setup.exe, с которым тащемта все справляются.

Oleaster ★★★
()
Ответ на: комментарий от AVL2

Так что логично было бы перевести «Kickstarter завален заказами для линуксоидов.»

По-еврейски получается. Перевод правилен, твой вариант - коряв.

Boba_Fett
()
Ответ на: комментарий от upcFrost

куча места уйдет

$ du -csh /usr/bin/
216M	/usr/bin/
216M	total

отож

leave ★★★★★
()
Ответ на: комментарий от AVL2

Так что логично было бы перевести «Kickstarter завален заказами для линуксоидов.»

а от кого?

leave ★★★★★
()
Ответ на: комментарий от Quasar

Вкладывать то вкладывают. Но неопытный пользователь клацает по этому .run и получает окошко «Выберите программу для открытия этого типа файлов». Да, всего то что нужно так это выполнить в консоли chmod +x setup.run && ./setup.run однако для этого нужно знать как вызвать консоль и что значат эти команды. Совершенно неприемлемо для обычного пользователя.

kravich ★★★★
()
Ответ на: комментарий от upcFrost

Поддержу идею kravich по поводу фичастого пакетного менеджера. Это кстати улучшит взаимодействие дистростроя и разрабов

Каким образом улучшит? В линуксах практически никто ни с кем не может договориться, все тянут одеяла (их тоже много штук) на себя и клепают все новые и новые велосипеды. Пакетный менеджер? Под каждый дистриб будет клепается свой собственный, с преферансом и пионерками, никакой универсальности и единства нет, и не будет. Линукс - дохлый номер, разве что для мобилок годится, в качестве прослойки между железом и гуем, да и то только потому, что Гугл правит балом, пресекая любой разброд и шатание. На десктопе этого нет, к сожалению.

Boba_Fett
()
Ответ на: комментарий от kravich

Чтобы скачать setup.run, юзеру надо было как минимум запустить браузер. Если у него хватает ума запустить браузер, то должно также хватать ума запустить терминал. Это какбэ процессы одного уровня сложности. Что значат команды, юзеру вообще знать необязательно, достаточно вписать ему эти команды в файл Read.Me.

Oleaster ★★★
()
Ответ на: комментарий от Oleaster

Чтобы скачать setup.run, юзеру надо было как минимум запустить браузер. Если у него хватает ума запустить браузер, то должно также хватать ума запустить терминал. Это какбэ процессы одного уровня сложности.

Не факт. Для многих технически не подкованных пользователей браузер - это «интернет». А про терминал и команды вообще страшно подумать. Если все пихать в readme и оставить все как есть, то Линукс так никогда и не станет дружелюбной платформой для обычных пользователей.

Boba_Fett
()
Ответ на: комментарий от Oleaster

Ну, с тем, что это процессы одного уровня сложности не согласен. По меньшей мере, юзеру нужно сделать cd до той директории, где валяется setup.run, а это уже не настолько тривиально, как вбить в адресную строку vk.com

kravich ★★★★
()
Ответ на: комментарий от AVL2

(не факт, что интерпретатор в системе есть)

Не факт, что /bin/sh есть???

оверхед получаем *N+1

Увеличение количества файлов вы считаете оверхедом? Ну, засуньте их в тот же скрипт.

И таки надо отметить, что корректного определения архитектуры из скрипта нет.

Может тогда в этом и заключается проблема и её нужно решать?

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

Простите, я multiarch не пользовался, не понимаю о чём идёт речь. Если не лень, поясните на примерах. Но вопрос остаётся тот же: может этим и стоит заняться?

В общем, по-прежнему не вижу реальной задачи, которую FatELF бы решал, и нельзя было бы придумать решения лучше.

BlackNight
()
Ответ на: комментарий от kravich

Мне кажется что нужно не права к run-файлам присваивать, а GNOME улучшать. Только у него есть такой диалог при открытии файла, в KDE например идёт запуск.

Вот только запуск файла из Nautilus в GNOME делает так, что рабочий каталог - тот, где расположен файл, а в KDE - /. Странно. И многие программы не хотят работать из-за этого. Во всяком случае в KDE3 так. Это не распространяется на скрипты запуска, потому что почти всегда там есть что-то вроде этого, и это исправляет проблему:

export UFASOFT_MINER_DIR=`readlink -f "$(dirname "$0")"`
export LD_LIBRARY_PATH=`readlink -f "$(dirname "$0")"`/lib:$LD_LIBRARY_PATH

P.S. И ещё мне это сильно помогает с Wine и старыми играми на нескольких CD. Не знаю ругается ли операционная система на GNOME, который запускает программы так, как он запускает, а на bash идёт ругань при попытке вытащить CD. «Точка монтирования занята!». Закрыть bash нельзя, там запущен Wine, поэтому прекращение установки и cd .., wine disk/setup.exe . Ну так вот, с KDE такой ошибки нет, с консолью есть, с GNOME не знаю.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от AVL2

не факт, что интерпретатор в системе есть

В какой это линукс-системе шелл скрипт не заработает?

anonymous
()
Ответ на: комментарий от kravich

Они просто вызовут свойства файла и поставят флаг x. Легко и доступно.

anonymous
()

Вот бы CryEngine 3 под Linux, в Star Citizen погамаем!

anonymous
()

Сейчас Ubuntu. Он просто работает, да и я про это много не думаю.

Вот именно, вставил USB, поставил за 2 минуты и начал работать. Не красноглазишь в консоли, не компилируешь ядра и не правишь конфиги, а РАБОТАЕШЬ. За это и люблю Ubuntu.

anonymous
()

Одна из вещей, которые они хотят чтобы она работала лучше — полноэкранные игры. Сейчас с этим бардак. Приложение захватывает весь экран, изменяет разрешение, а может упасть, после чего рабочий стол исказится или может все окна пропадут. Проблема в том, что не та штука отвечает за изменение разрешения. Сэм и я и так и сяк миллион раз пробовали найти «правильный» способ и решили, что единственным верным решением для этого является захват экрана оконным менеджером. Я написал и отправил им патч и затаив дыхание жду ответа, может снова придётся решать эту проблему.

Абсолютно верное направление! Сейчас 20% игр в полноэкранном режиме после выхода из игры выдает либо кривой рабочий стол и съехавшие значки в трее, либо изменяет размер окон, вобщем дебилизм и надо с этим что-то делать, не позволять никаким приложениям изменять размеры окон или разрешение экрана рабочего стола.

anonymous
()
Ответ на: комментарий от BlackNight

Не факт, что /bin/sh есть???

ну да. в соляре, если не ошибаюсь, ksh.

По крайней мере nastran и marc все скрипты писал именно для ksh и мне приходилось его ставит.

Увеличение количества файлов вы считаете оверхедом?

ну да, их же надо качать. А если архивом, то распаковывать. Это же удобно, когда качнул утилиту или программу одним файлом и запустил.

Ну, засуньте их в тот же скрипт.

Это уже установка. Распаковка в темповую директорию и запуск файла. А чистить это все кто будет за собой, особенно учитывая, что никто не обещал, что оное вообще запустится? Все это убивает процесс.

Может тогда в этом и заключается проблема и её нужно решать?

Зачем? Сама программа прекрасно все может узнать.

Простите, я multiarch не пользовался, не понимаю о чём идёт речь. Если не лень, поясните на примерах. Но вопрос остаётся тот же: может этим и стоит заняться?

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

А жирный ельф, это способ упаковки нескольких бинарей в один файл. Ничего, кроме поддержки в ядре для него не требуется. Да и поддержка-то нужна детская, так что в дистры она попадет вместе с новым ядром сама собой. Это решения для third party, для пользователя и мало кому интересное в дистре.

На самом деле смешно, что для wine соответствующий загрузчик есть, а для жирного эльфа его нет. Стукнув по .exe, я спокойно выполню программу, а стукнув по жирному эльфу, в котором есть нативная версия моего бинарника - нет. Прям как с поддержкой кодировок в файловых системах. Во всяких никчемных vfat32 и ntfs все из коробки, а для родных ext* прыщ...

AVL2 ★★★★★
()

Отличное интервью, спасибо! Ubuntu впереди!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.