Только что зашел на sourceforge. На сейчас доступно 374834! open source проекта.
Если вы думаете привлечь к разработке своего продукта «халявную» рабочую силу путем делания его open source — подумайте еще три раза. Что собственного говоря в вашем продукте такое, что должно зинтересовать больше чем скажем 350000 других проектов?
При этом, когда смотришь на то, какие проекты живут, а какие умирают, понимаешь, что вообще ничего не понимаешь 😉
Понимаешь, что нужен маркетинг. Возможно, деньги. Вообщем одним программированием уже не обойтись.
Я, например, давно хочу создать несколько полезных проектов, но, к сожалению, понимаю, что они будут мертвенькие без всего этого.
Деньги, точно могут оживить любой проект, насколько бы он глупый и бездарный не был.
А вот те в которых денег нету.. действительно понимаешь, что ничего не понимаешь.
Хотя подозреваю, тут дело еще случая. У одного проекта главный программист оказался любитель попедалить вечером и охотно это делает и плюс еще пару друзей в этом ему постоянно помогают.
А другой проект, вспыхнул, погорел, а потом у главного программиста скажем родился ребенок и теперь у него уже проект явно приоритет номер два.
Это само собой. Вот мой и полумертвенький — живет на деньги спонсоров, а случайные девелоперы приходят по полчеловека в год, что-то делают, а потом устраиваются на фултаймовую работу и им делается не до него 😉
А что за проект?
https://sourceforge.net/projects/openfwtk/
сейчас умеет гораздо более интересные вещи — инспекцию контента для https с довольно-таки вдумчивым управлением сертификатами, отдавать увиденное в icap и т д — надо бы очередной релиз выпустить.
Интересно.
Кстати, с удовольствием прочел твою лекцию 😉
http://milliways.chance.ru/~ark/openfwtk-lecture.pdf
вот тут я про него рассказываю
Как бы откоментить 🙂 Короче мне больше интересен вопрос о том, что может остановить от делания проекта opensource ? кроме жадности и привычке к халяве.
Остановить кого? Компанию выкладывающую свой продукт или программистов участвующих в разработку.
Компанию останавливает то, что если их модель основана на продажах продукта (а не предоставление услуг), то любая другая компания может тоже начать продовать тот же самый продукт причем абсолютно легально.
С точки зрения программистов — я бы сказал наоборот. А с какой это белой горячки они должны участвовать в чьем-то продукте? Единственной причиной может быть то, если им очень интересно покопаться в этой области. Честно говоря, что я вижу, что не так много программистов >30 лет которые сильно копаются вне рабочего времени с кодом (даже интересным).
..а вот десктопная оболочка — Openlook — просто так и умерла. Мне ей заниматься совсем некогда, а никто не хочет. Жаль.
Ну где-то чуть выше я писал. Большинство продуктов живут ровно столько, сколько главный программист ими занимается. В этом беда небольших opensource проектов.
поначалу меня фрустрировал тот факт, что люди с огромным энтузиазмом бегут вкладывать свои силы в проекты, которые лучше всего описываются фразой, начинающейся со слов «еще один..», и гораздо более скептически относятся к действительно необычным разработкам. Потом привык 😉
Тут проблема в том, что есть вещи среднестатистически более интересные.
Например стандартные вещи — искусственный интеллект, операционка, язык программирования и т.п. Мне кажется так сложилась культура, что самые инвестные лица в IT как раз участвовали в написании операционок, языков программирования, баз данных.
А вот проекты которые сейчас гораздо более полезные и актуальные, не вызывают такой бури эмоций, так как за ними стоят обычные толковые программисты, а не «полу-боги».
Ну однако в случае с firewall’ами людям почему-то интереснее писать «еще один web-интерфейс к iptables». Я их не обвиняю, но и не то, чтобы понимаю.
Ну, это действительно странно. Хотя опять, же, мне например не нравиться работать над интерфейсами, так как дизайнер из меня очень слабый. Я с удовольствием скорее был сам iptables реализовал бы, покопался бы с драйверами и т.п.
Ну вот и мне тоже. Поэтому интерфейса у меня вообще никакого нет, т к спонсор проекта его не оплачивает — ему нужен только стабильный бэкенд. А без интерфейса это мало кому интересно. Как найти человека, который будет его рисовать за спасибо — не знаю, они все уже с энтузиазмом делают одно и то же 🙁
Может найти еще одного спонсора, которому уже нужен будет и то и другое. Тогда вопрос отпадет вопрос «Как найти человека, который будет его рисовать за спасибо».
Даже в opensource деньги решают практически все.
Это понятно, но я совершенно не представляю, где его взять. Хотел сунуться к тем, кто делает firewall-ориентированные дистрибутивы линукса — они все отвечают «мужик, нам не до того, у нас роадмап разрисован и все и так жопу рвут».
Можно попытаться пообщаться с
а) Free software foundation (я правда не помню, как я тебя license и подойдет ли им)
б) Просто поискать заказчиков, которые заинтересованы в установке у себя
в) Как это не странно звучит — пообщаться с конкуретнами. Вполне возможно, что они решал, что лучше они возьмут это дело под свое крыло, чем оно им когда-нибудь на любимую мазоль наступит.
Безусловно, это дело не простое, найти тех кто хочет деньги вложить.
Угу, я ищу потихоньку.
Казалось бы, типовой «firewall на основе открытого ПО» представляет из себя страх и ужос — кучка совершенно разнородного софта сомнительного качества, абы как собранная под веб-интерфейсом. У меня хоть фреймворк есть нормальный и унифицированный. Ан нет, не очень-то кому интересно.
Мне кажется в этой постановке вопроса и заключается проблема.
«кучка совершенно разнородного софта сомнительного качества» vs «фреймворк есть нормальный и унифицированный». Обе эти вещи в целом ценны только внутри мира программистов.
Для остального мира (особенно мира денег) важен результат, а не внутренности.
Я думаю, если бы ты показал проблему, которая решается дорого или не решается другими firewall’ами и решается твоим, то соотвественно тот у кого эта проблема остро стоит задумался бы о том, чтобы дать денег.
Надо подумать. killer feature у меня сейчас — защита от новых атак на SSL, о которых рассказывали на блэкхэте.
Но ведь это софт, критичный по безопасности — значит, качество кода должно быть важно и потребителю тоже?
В ответ приведу пример.
Если человек, который всю жизнь проработал разрабатывая моторы для авто, начнет рассказывать что он сделал супер технологию которая увеличивает прочность метала, на 7.25% и для этого нужно добавлять закись азота в метал. И будет говорить, что остальные этого не делают и поэтому моторы у них не прочные, то думаю это не сильно заденет за струны души.
А вот, если показать, что у авто оставленное на морозе, а потом буквально чуть стукнутое в бок обычный мотор разлетается вдребезги, а мотор на новом метале нет — то тогда заинтересуются.
Так, что качество кода, для конечного потребителя вещь абстрактная. Более того, потенциальная уязвимость, тоже вещь абстрактная.
Вот если показать программу, которая сможешь взломать их SSL и вынять пароли (при работе их firewall’а), а твой так не взламывается, вот тут-та сразу интерес из абстрактного станет реальным.
Да легко , sslsniff, собственно 😉
Ну так отлично, вот с этой утилиткой и нужно общаться с заказчиком. При нем запускаешь ее, просишь его зайти на SSL сайт, показываешь ему логи. Дальше общение о спонсорстве firewall пойдет гораздо легче.
А как качество кода спасет меня, как пользователя, от всех возможных атак?
Могу предположить, что фаервол с «ужастным качеством кода» спасет меня лучше. Ибо вероятность, что упадет именно он, а не мой браузер выше.
Отнюдь, если что-то падает, то с 50% вероятностью через тот же баг можно получить удаленное несанкционированное исполнение кода 😉
От всех атак ничто не спасет.
От большего количества атак вероятнее всего спасет код, который был рассчитан на защиту от большего количество атак минус количество добавленных уязвимостей из-за плохого качества кода.
А теперь обыграем ситуацию:
Разработана новая атака. Хороший фаервол её пропускает, а плохой спотыкается и падает. Что лучше?
И тот и другой работают от nobody в песочнице. К тому же работает deamontools (или аналог).
С вероятностью 99% упавший встанет, а поломанный ничего недаст.
Это я все к тому, что отражать 100 атак, хуже чем 100 и возможно 1 (плохой код == везение?).
PS: если по каким-то причинам фаервол нельзя запустить в песочнице извиняюсь.
Мне кажется вы приняли допущение, что
а) Хороший код пропускает атаку
б) Плохой код падает на атаке
Первое допущение вполне нормальное, действительно на то новая атака и новая атака, что ее не предполагали.
А вот второе допущение не совсем верно.
Вероятность того, что код будет пропускать атаку очень велика, вероятность того что firewall упадет именно на этом месте мала.
Если же, пользоваться логикой, что от атаки может защитить падение, то нужно специально добавлять в security продукты кучу багов в надежде, что это защитит от будущих неизвестных атак.
Я бы добавил, что для firewall’а, в отличие от сервера, компрометация песочницы — это уже полный доступ ко всем защищаемым сетям. И для некоторых протоколов это невозможно исправить даже при наличии в устройстве специализированной защищенной операционной системы (из современных и популярных это только Cyberguard/Sidewinder)
Главное, что вероятность упасть и спасти чью-то жизнь случайно есть.
А вот идея с преднамеренным добавлением багов это класс. Главное чтобы:
а) баги хранились в отдельном месте;
б) срабатывание какого-либо бага отлавливалось системой;
в) новые баги было легко добавлять.
arkanoid, пример можно?
Пример чего? Опасности компрометации песочницы? Так это из архитектуры следует. Если ты можешь выполнить на firewall’е произвольный код, этим произвольным кодом может быть, например, прокси-сервер, открывающий доступ во внутреннюю сеть.
Кстати, если для моего творения написать, например, SELinux policy, то можно уровень потенциальной компрометации ограничить очень значительно.
Насчет «багов» — не надо изобретать велосипед. Это, собственно, принцип работы моего продукта — ограничивать каждый протокол неким минимально необходимым с точки зрения функциональности по возможности безопасным подмножеством. Если бы я это делал, повышая «падучесть» продукта с помощью «багов», настала бы пора вызывать санитаров, извините.
>Главное, что вероятность упасть и спасти >чью-то жизнь случайно есть.
Согласен. И она составляет скажем 0.001%
Причем, скажем с вероятностью в десять раз больше этот баг/плохой код добавляет новую уязвимость.
При отсутствии плохого кода или меньшем его количестве вероятность упасть на атаке в десять раз меньше, но и вероятность добавить уязвимость в десять раз меньше.
На, что я хочу акцентировать внимание, что вероятность упасть при атаке меньше чем вероятность добавить уязвимость.
И как раз из этого следует, что имеет таки смысл иметь хороший, а не плохой код.
arkanoid, получается чтобы попасть в сеть мне нужно знать (а) что там есть вполне определенный фаервол и (б) версию ПО.
Наверное я — злой и уволенный сисадмин, являющийся по совместительству офицером безопасности FreeBSD. После всего этого я смогу написать эксплоит?
> Вероятность упасть при атаке меньше, чем вероятность добавить уязвимость.
Это смотря как подойти.
1) Персональная уязвимость в фаерволе;
2) Уязвимость в конечном ПО
1) Чтобы эксплуатировать уязвимость нужно знать, что она есть и что ее еще не залатали. Какова вероятность фаерволу с плохим кодом быть исследованным?
2) Что лучше для фаервола самому подохнуть или замочить конечное ПО?
PS: в «колекции багов» речь о [управляемой] эмуляции потенциального кода ПО. А не о том, чтобы просто добавлять ошибки или делать проверки.
Не совсем понял при чем тут уязвимость в конечном ПО. Если уязвим фаервол, то дальше есть доступ к внутренней сети, что собственно является целью.
>Какова вероятность фаерволу с плохим >кодом быть исследованным?
Итого, то что вы утверждаете, что плохой код сложнее исследовать поэтому меньше шансов, что кто-то воспользуется уязвимостью.
Это называется Security through obscrutity
http://en.wikipedia.org/wiki/Security_through_obscurity
Во первых это не слишком хороший метод для написания security. Во вторых (цитата из wikipedia)
Software which is deliberately released as open source can not be said to be relying on security through obscurity (the design being publicly available)
Кстати, существует множество методов автоматического поиска уязвимостей, когда шлются направильные TCP-IP пакеты и т.п. Поэтому даже исследовать не нужно будет, просто запустить такую сканировалку и она прекрасно найдет, что firewall нормально не обрабатывает скажем пакеты размером больше 32kb. А дальше уже конечно вручную придется копаться, как это использовать.
Что я утверждаю:
а) Вероятность обнаружения бага третьими лицами в плохом коде равно онной в хорошем. Плохой код лень смотреть ~ в хорошем нет багов.
б) Распространенность программы ~ найденому числу уязвимостей ~ исправленным уязвимостям ~ безопасности кода.
в) Безопасность кода != качество кода.
В итоге плохой код лучше первого в случае если он создан раньше и более распространен.
Следствие: какой бы ни был код, главное увеличить число пользователей (но «хороший код» не причина, возраст и популярность — да).
> Кстати, существует множество методов автоматического поиска уязвимостей, когда шлются направильные TCP-IP пакеты и т.п.
Не знал. А siege тогда для DoS-атак, а не для проверки нагрузочной способности. Дистрибутивы эти есть. На них так и написано «для проверки безопасности». У меня где-то даже же был диск.
Согласен хороший код еще не безопасный код.
Согласен, единственный метод повышения безопасности кода — это длительное пользование большим количеством пользователей + активный поиск и проверка и исправление разных дыр в безопасности.
С чем не согласен это с тем, что плохой код, который долго пользовался будет становиться более безопасным.
Проблема плохого кода состоит в том, что исправления в нем крайне сложны и ведут чаще всего к появлению дополнительных проблем. Поэтому любой проект, который становится популярным и активно обновляется, либо постепенно переводит код от плохого к хорошему, либо через некоторое время становится обратно не популярным из-за большого количества глюков.
долгое время (пока не слез на линух) с удовольствием пользовался wipfw, да автор не постыдился написать файрвол, а не фронтенд
Linux — еще один дистрибутив UNIX? С++ — еще один объектно-ориентированный язык? Emacs — еще одна «не кофеварка»? Nginx — еще один web-сервер? Люди делавшие их стали известными до или после старта проекта?
Человек вкладывает не в «еще один проект», а в идею и то если они могут на этом погреть руки или если им кажется, что могут лучше.
Опять же типичной причиной «еще одного проекта» становится… соглашение об оформлении кода и структуре проекта. Автор «еще одного проекта» почему-то считает, что его структура и соглашения лучше. А если взять первого встречного человека и дать ему оба кода вся «хорошесть» пропадет.
PS: тут явно что-то не так с опенайди.
openid глючил и я перестал им здесь пользоваться — иначе коммент просто не добавлялся 🙁
проблема в том, что популярны проекты, которые не сравнимы с вышеперечисленным по уровню инноваций ни разу.
например?
Нешто я их запоминал — помню только чувство глубокого недоумения 😉
Да, лучше openid наверное не пользовать. Я так и не смог до ума его довести.
Насчет еще один.
Я писал о среднестатистической ситуации. И как раз в среднем таки работают над «еще одним».
Да, есть/были предположим 100 проектов, которые не вписываются в это понятие «еще один» и некоторые из них стали известными, но это не значит что они являются правилом, а остальные исключение.
Еще раз повторю данные из стать 375000 проектов. Ну не могут они все быть с хорошей, умной и доброй идеей.
Те проекты что не вписываются, сидят по своим репозиториям и на sourceforge не ходят (даже ctpp и тот со своим репозиторием хоть на sourceforge есть).
Пока всего 374939. Появилось 100 новых проектов.
Ок. Раз так… Моя плохая, злая [, малоизвестная] и глупая идея живет на гугл коде всего с 1,5 разработчиками и несколькими тестерами к этому всему включает код двух других программ, не считая родительской. Одна из двух программ мертва уже несколько лет.
При этом (а) все проекты разрабатываются своими разработчиками и (б) каждый имеет как минимум по одному форку (если в проекте от 0 до n разработчиков, то новый участник его форкнет — наверное это суровая правда), кроме мертвого конечно.
Рассуждая как выше все они тоже плохие и злые. А может «к нам придет халявная рабочая сила» не есть метрика? Ибо чхала бесплатная рабочая сила к нам приходить. А если и приходила то приносила с собой такие патчи, что лучше бы не приходила вовсе.
Владимир, честно говоря я не совсем понял вашу мысль.
То, что я говорил, что уникальных (не «еще один») проектов достаточно немного. Уникальных и полезных еще меньше. В
>Ибо чхала бесплатная рабочая сила к нам приходить.
Собственно это я в статье и говорил.
Как я понял вы не согласны со мной. Собственно говоря с чем вы не согласны?
Согласен в том, что какой-то процент открывает проекты только ради «привлечь бесплатную рабочую силу». Но это маленький процент.
Согласен в том, что сама она не придет. Да и вообще сами пользователи не придут. Нужно хоть немного разкрутить проект (хотя бы как «исследовательский»).
Согласен с тем, что уникальных и полезных проектов единицы. У полезных проектов быстро появляются форки и аналоги, которые, по мнению их разработчиков, лучше (Сколько версий emacs и vi существует?).
На мой взгляд пост сводится к утверждению «не начинайте [неуникальный] opensorce-проект никогда». И именно с этим утверждением я не согласен.
И какой процент этих форков действительно полезен обществу? 😉
не могу не вспомнить тысячи часов труда, вложенных людьми в живые трупы в виде софта для BeOS и OS/2 — когда уже всем было ясно, что это трупы.. 🙁
Вим, все форки дебиана и редхата, Windows (все же…), какие-то комерческий форк wine (для запуска 1С), xmmp, форк опенОфиса и куча других проектов. Все они форки. Даже обсуждаемый выше фаервол (хоть и написано, что от кода избавились). Они все бесполезны?
BeOS передали сообществу, а оно его не удержало. Бывает.
WinXP тоже сейчас — живой труп. Что теперь объявить бесполезным всё время потраченное на разработку ПО для него?
а можно подробнее про winxp. когда его опен-соурсили ? и когда он умер ? а то я видно пропустил столь знаменательный момент 🙁
C WinXP связь тонкая. Если мне память не изменяет Windows форкнута от OS/2. В данный момент WinXP заменяется на Vista и Win7. Чем не смерть WinXP?
А к опенсурсу никакого отношения не имеет.
Я разве говорил, что форки — это всегда плохо? Просто не все йогурты одинаково полезны.
Согласен. Не всему обладать КПД 100%. Кто-то должен работать в холостую.
Все таки пост сводился к тому, что если у вас есть проект, то не стоит надеяться, что перевод его в open source будет волшебной палочкой, которая принесет кучу халявы.
Не начинайте неуникальный opensource проект — это скорее тема, которую задел arkanoid.
пень соурс это не развитие проекта, это больше совсем другая философия.
в принципе, я какбе в разных ипостасях побывал, и как пользователь и как разработчик (есть у меня один проектик, хотя после того как ушел с виндовс стало его тяжеловато поддерживать), да и просто периодически кое-что патчил или багрепортил
так вот, что-бы привлечь разработчиков — проект должен быть уровня, когда им можно будет пользоваться и реклама-реклама-реклама, тогда появляются пользователи, а потом некоторые из них могут и пописывать кое-что … я вот удивился как буквально за два-три месяца локализовали на основные европейские языки, как я понял есть люди, которые регулярно помогают с переводами совершенно разным проектам
обычно удачные разработки появляются по одному из двух вариантов — либо написал для себя, сам пользуюсь и с другими делюсь, либо, если в процессе работы над неким макро-проектом возникла возможность\желание какую-то часть сделать в виде библиотеки и отдать в «люди»
т.е. изначально небольшой пень-соурс проект должен создаваться из честолюбивых помыслов, потому-как в большинстве случаев каких-то хотя-бы смешных денег даже успешный проект не приносит , но тешит самолюбие ну и плюс возможность пообщаться с кучей народа, из разных стран, которые, в большинстве своем очень уважительно относятся к разработчику 🙂
По мне можно делать опеном проект, который может заинтересовать людей, чтобы в проекте было что-то особенное..
Честно говоря о таких данных я слышу впервые. И они очень сильно меня поразили. И автор правильно ставит вопрос: «Что собственного говоря в вашем продукте такое, что должно зинтересовать больше чем скажем 350000 других проектов?» Именно заинтересовать. Проект не обязательно делать лучше, его нужно делать так, чтобы бы он смог заинтересовать. А заинтересовать руководителя предприятия можно, пожалуй, предстоящей выгодой с обязательной демонстрацией ПО. Проблема только в том, что это ПО будет узкоспециализированно. Тем не менее можно начинать с чего-то узкого, но очень эффективного, а потом добавлять что-то более общее. А просто общих проектов с одинаковоповторяющимися функциями пруд пруди, можно разве что на удачу рассчитывать.
Ну, собственно говоря вопрос о заинтересовать руководителя предприятия — это уже вопрос другого уровня. Точнее так, он уже относится не только к opensource но и к любым продуктам.
А вот для opensource больная тема заинтересовывания разработчиков/тестировщиков/писателей документации.
> Что собственного говоря в вашем продукте такое, что должно зинтересовать больше чем скажем 350000 других проектов?
Я бы ставил вопрос по-другому: Что есть в Вашем продукте, чего нет в остальных openSource-проектах? Ведь очень часто плодятся сущности, которые на 95-99% копируют что-нибудь существующее. И вместо того, чтобы помогать работающему проекту, новый проект лишает существующий разработчиков и тонут оба.
Я все таки так вопрос не ставил бы.
>плодятся сущности
>вместо того, чтобы помогать работающему проекту, новый проект лишает существующий разработчиков и тонут оба.
Обе эти фразы — это максималистский/программистский подход. Они говорят о том, как должен выглядеть идеальный мир — нет дублирования, ресурсы тратятся эффективно.
А вот вопрос
>что должно зинтересовать больше чем скажем 350000 других проектов
как раз реальный/экономический?
Open source проект — это такой же товар. Его надо «продать» программистам.
Его не надо «продавать» программистам, программисту он должен быть интересен либо в качестве повышения своего мастерства, либо в плане получения фана, либо в качестве разработки используемого в дальнейшем самим программистм продукта, либо в качестве источника денег.
Продукт, ориентированный на конечного пользователя, лучше продавать (без кавычек) этому самому конечному пользователю, а за это устраивать конкурсы типа Google Summer of Code либо нанимать некое ядро, а интересный OpenSource продукт сам обрастет пользователями-программистами, которые будут исправлять баги, создавать плагины. но не писать основной функционал! Отсюда следует один нюанс: OpenSource-проекты подразумевают создание ядра некой стартовой командой с дальнейшим открытием обществу, пока не будет хотя бы работающей беты люди вокруг проекта не собираются.
>Его не надо “продавать” программистам, программисту он должен быть интересен либо >в качестве повышения своего мастерства, либо в плане получения фана, либо в >качестве разработки используемого в дальнейшем самим программистм продукта, либо >в качестве источника денег.
Еще и как надо продавать.
Во первых, чтобы программисты подтянулись — они должны услышать о проекте
Во вторых им надо показать, что проектом можно заняться для повышения мастерства, фана и т.п.
Это и есть «продавать».