social architecture [ru] - ibragimov ruslan · 2020-06-01 · даже самый умный...
TRANSCRIPT
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
СодержаниеОПереводе
Предисловие
Глава1-Инструментарий
Глава2-Заметкинаполях
Глава3-СообществоZeroMQ
Глава4-ПротоколдляколлаборацииC4
Глава5-Дизайн,разработка,инновации
Глава6-Живыесистемы
Послесловие
1
СоциальнаяАрхитектура-ПитерХинченсДаннаякнигабылапереведенаиопубликовананаресурсеHabraHabrвблогекомпанииPhilTech.
Полныйпереводкнигипропостроениесообществ:«Социальнаяархитектура».
Оригиналкнигинаанглийскомязыке.
Переводчики:
АлексейСтаценко-Координаторпроекта
СергейДаньшин-Предисловие,Главы1-5
КристинаСтрельцова-Стратагемыдляуспехаopensourceпроектов
КатяШихова-Глава6
РусланИбрагимов-Послесловие
ОПереводе
2
МудростьтолпыВ«РассужденияхопервойдекадеТитаЛивия»НикколоМакиавеллиестьследующиестроки:
«Чтожедорассудительностиипостоянства,тоуверяювас,чтонародпостояннееимногорассудительнеевсякогогосударя.НебезпричинголоснародасравниваетсясгласомБожьим:всвоихпредсказанияхобщественноемнениедостигаеттакихпоразительныхрезультатов,чтокажется,будтонародяснопредвидит».
Всвоейкниге«Мудростьтолпы»ДжеймсШуровьескиписал:«приправильныхусловияхгруппымогутбытьоченьумными,азачастуюмогутбытьнамногоумнее,чемдажесамыйумныйчеловеквнутригруппы».Онзаметил,чтоколлективныйразумобычнопоказываетлучшиерезультаты,чемнебольшаягруппаэкспертов,дажеесличленыгруппыневладеютвсемифактамииливедутсебяиррационально,поступаяпо-своему.
Другимисловами,группаслучайныхлюдейвсреднембудетумнеенесколькихэкспертов.Этоттезиспротиворечитздравомусмыслуивыглядитнасмешкойнаднакопленнойвекамимудростью.Экспертывобластичеловеческогоинтеллекта(социологи,антропологи,психологи)встретилиидеиШуровьескидалеконесраспростертымиобъятиями.Онпошелдальше:«добавиввгруппуспециалистов,высделаетеееглупее,адобавивдилетантов,повыситеопятьееинтеллектуальныйуровень.Какилюбойрецепт,этоработаеттолькоприопределенныхобстоятельствах».
ЯнаткнулсянаШуровьески,когдасталработатьнадуниверсальнымрецептомпопостроениюсообществ.Исразуувидел,чтоегоработатесноперекликаетсясмоимисобственныминаблюдениями,ичтоямогуустроитьейиспытание.Уменябылавозможностьнетолькоприменить,ноиобкататьегоидеинамногихсообществахипоискатьимопровержение:всепо-научному.
Этонамерениедалоначалопроцессупопостроениюумных,самоуправляемых,успешныхонлайн-сообществ,которыераззаразомопережалиэкспертныегруппы.ЭтудисциплинуяназвалСоциальнойАрхитектурой,чтопозволяломненекотороевремяназыватьсебя«СоциальнымАрхитектором»(сегодняя—пытающийсяпробитьсяписатель,этозвучитромантичней).
Предисловие
3
СоциальнаяАрхитектурапоаналогииспривычнойархитектуройявляетсяпроцессомирезультатомпланирования,разработкиистановленияонлайн-сообщества.Социальнаяархитектураввидеонлайн-сообществ—этокультурныеиполитическиесимволыипроизведенияискусствацифровогообщества.21векбудетознаменованзарождениемСоциальныхАрхитекторов.
Успешныеонлайн-сообществаобычнооснованынадоговоренностиовзаимнойвыгоде,подразумеваемойилиявной.Т.е.этовозможностьпостроитьбизнеснамиллиарддолларов,основанныйнадобровольномтрудеучастников,действующихизэгоистическихпобуждений.Частоучастникинеосознаютилинепридаютзначениятому,чтоониявляютсячастьюсообщества.Однакоподоплекалюбогонашегодействия—получениевыгоды.«Краудсорсинг»являетсяэксплуатациейдобровольноготрудадляполученияприбыли.Иэтоработаеттольковтомслучае,когдатолпанасамомделехочетрешитьпроблему,которуювыподбросили,иликоторуюонаобнаружила.
МудрееипостояннеевсякогогосударяМакиавеллинедалобъясненийилиподтвержденийсвоемунаблюдению.Однакопониманиетого,чтоколлективнаяволяявляетсябезошибочнойисправедливой—voxpopuli,voxDei—пронизываетсовременнуюкультуру.Онаподдерживаетвнасверувдемократиюиоправдываетнашитребованияпрозрачностиидоступакинформации.Этоосновасовременнойэкономики,составляющиечастикоторой—свободавыбораиторговли.
Шуровьескиопределилчетыреэлемента,необходимыхдляумнойтолпы:разнообразиемнений,независимостьчленовдруготдруга,децентрализацияиэффективныеспособыагрегироватьмнения.Онописываетобразцовуюумнуютолпукаксостоящуюизмногихнезависимомыслящихиндивидуумов,которыетесносвязаны,которыегеографическиисоциальноразделены,которыебеспристрастныкпредмету,каждомуизкоторыхдоступнымногиеисточникиинформацииикоторыеимеютнекуювозможностьобъединитьсвоииндивидуальныесужденияводноколлективноерешение.
СогласноШуровьескиумныетолпывыносятболееточныеибыстрыерешения,самоорганизуютсядлялучшегоиспользованияресурсовисотрудничаютбезцентральнойвласти.Некоторыепримерыумныхтолп,такиекакВикипедия,чрезвычайноуспешны,несмотрянаинтенсивнуюинепрекращающуюсякритикусосторонынегативистовиатаквандаловиконкурентов.Этиидеинастолько
Предисловие
4
захватывающие,чтоостаетсятолькогадать,почемумыненаблюдаемвсебольшеибольшеумныхтолп.Насамомделе,почемумирширитсяглупостью,когдамудростьтаквозможна,такблизка?
Естьмногохорошихобъясненийдляглупостимногихтолп,ияисследуюдетальноэтотвопросвсвоейкниге«КультураиИмперия»,откудабылавзятаэтачасть.Малоктопыталсяобъяснитьглупостьтолпысточкизренияколлективногоинтеллекта.Абезясногопониманияправильногодействия,какмыможемнадеятьсяобъяснитьнеправильное?
Поэтомуочевиднаянеудачаколлективногоразумаубеждаетмногихвтом,чтоэтолишьзабавнаятеория,котораянепримениманапрактике.Ивсежееслимыпосмотримнаонлайн-сообщества,напримернате,которыеформируютсявокругпопулярногоopen-sourceпроектапрограммногообеспечениявродеZeroMQ,мыувидимгруппы,оченьпохожиенаописанныетолпыШуровьески.Ипока,можетбыть,сложноопознатьумныетолпывреальнойжизни,кажется,чтоониявляютсядоминирующеймодельюонлайн.Пробыиошибкипозволилицифровомуобществузановооткрытьпринципыумнойтолпыиперенятьихвкачествесвоихбазовыхпринциповдействия.
Решениецифровогообществадревнейпроблемыкоррумпированнойвластиэлегантноиуспешно.Существуютбуквальномиллионысообществ,каждоеизкоторыхполагаетсянавластьсвоихоснователей.Гражданецифровогообществасвободновыбирают,какиевластиуважатьикакиеигнорировать.Основнойфокусзаключаетсявпринятиивластибезнаделенияее«правом»командовать.
Ктомужевозникаетостраяконкуренцияпосозданиюсправедливойвласти,котораябынекомандовала,апринуждаласоблюдатьнеобходимыеправила.Этовзрывоопаснаяистина.Поколения,которыепознакомятсясэтоймоделью,несогласятся—дажеподугрозойсмерти—уважатьмодельиндустриальногообщества,где,принеобходимости,дляубеждениямогутиспользоватьсяжелезныезанавесыивооруженныепограничники,гдегражданебуквальнопринадлежатГосударству.
ИстокиСоциальнойАрхитектурыЯпоставилкучуденегнаСоциальнуюАрхитектуруиполучилприличнуювыгоду.Онаблизкакстрогимсоциальнымнаучнымдисциплинам,насторонекоторыхгодывоспроизводимыхэкспериментовнареальныхслучаяхиисследованийсуществующихсообществ.Внейсмешиваютсяпсихология,экономика,политология,технология,гуманизмиоптимизмвочто-тотакое,что,какяобнаружил,можетсделатьмногихлюдейсчастливыми.
Предисловие
5
МоепутешествиевобластьСоциальнойАрхитектурыначалосьвконце1990-хгодовсизучениякнигиотом,каккультыэксплуатируютнашисоциальныеинстинкты.Секты—местонеизприятных,конечно.Однаколюдейвнихзатягиваетпотому,чтомывсе—социальныеживотные,которыепоследниймиллионлетрадивыживанияразвивалиинстинктобъединенияиобразованиягрупп.Готовностьуважатьвласть,подчинятьсяправилам,изучатьобщиеязыкииадаптироватьсяподобщееповедениесталодлянасвторойнатурой.Сектыподвергаютсвоихчленовидеологическойобработке,играянаэтихинстинктах.Ониразделяютчленовсихсемьями,исключаютуединение,перегружаютжаргоном,создаютдеспотичноеправление,беспорядочнонаказываютинаграждают.
Подобнымобразомсектымогутпревратитьбольшинствообычныхлюдейвбездумныхпоследователей,которыедобровольноопустошатсвоибанковскиесчета,украдутусвоихродныхибудутработатьгодами,нетребуяплаты.Ещестудентом,наблюдаяисчезновенияслучайныхдрузейвподземельяхСайентологииидругихкультов,всеэтопредставлялосьмнечем-тозлокачественныминеобъяснимым.Позже,когдамойближайшийкузенвыпализжизниипотратилпятьлетсвоейжизнинаСайентологию,дляменяэтатемасталаличной.
ИзучаяматериалысайтаCultInformationCentre(CIC),менявдругосенило,чтовсеэтитехникипопромывкемозговимеютнесколькообщихчерт.Во-первых,ониопределеннонацеленынауничтожениетого,чтоделаетнассильными—ониатакуютнезависимоемышлениеиповедение.Во-вторых,онинапоминаютмнеобстановку,вкотороймнеужеприходилосьработать(крупныйбизнесчастопохожвсвоейдеятельностинасекту).Втретьих,казалось,чтовсеониреверсивные,т.е.ихможноиспользоватьвобратнуюсторонудляблагихдел.
Последнеенаблюдениенеобычно.Еслимолотокразбиваетокно,товрядличто-тоизменится,есливыперевернетемолоток.Нонанекоторыхпримерахэтонаглядновидно.ВотоднаизтехникссайтаCIC:«Социальноедавлениевгруппе:подавляйтесомнениеисопротивлениеновымидеям,играянапотребностивпринадлежностикгруппе».Реверс—снижениестоимостиприсоединениякгруппеивыходаизнеебудетспособствоватьвозникновениюновыхидейикритики».Иливот:«Исключениеуединения—способностьдаватьлогическуюоценкубудетснижатьсяприотсутствиивозможностиразмышлятьнаедине».Еереверс:«предоставьтелюдямпространствоивремядляуединения,ионистанутлогичнейразмышлять».
Моиумозаключения—стойкие.Мывыживаемблагодаряприсоединениюкгруппам,следованиюзадругимиипопыткампонятьмир.Некоторыегруппысуществуютзасчетодомашниваниянасинизведениядоуровняживотных.Другие—дарятнамсвободуипозволяютстатьсильнее,умнееинезависимей.
Предисловие
6
В2000г.интернетещенесталдостаточнодешевымдлямасс,иopen-sourceсообществабылималенькими,региональными,сосредоточеннымивокругуниверситетов.Такиеopen-sourceсообществакакDebianFoundationдосихпорфункционируюткакклассическиенекоммерческиеорганизации,каклегальныеюридическиелицассоветомдиректоров,казначеямиипр.
В2005г.ясталучастникомрядасовместныхпроектов.Соднойстороны,ябылвовлеченвпроектFFII,направленныйнаборьбуспатентаминапрограммноеобеспечениевЕвропе.Мы(хорошиепарни)выступаливевропейскомпарламенте,спорилисЕвропейскимпатентнымофисом(плохиепарни),организовывалисеминары,предлагалипоправки,собиралиголосаи,вообщеговоря,участвоваливсильнейшемлоббировании,которомукогда-либоподвергалсяБрюссель.
Сдругойстороны,язанималсяразработкойоткрытыхстандартов,начинаясAdvancedMessageQueuingProtocol(AMQP).Культурныйконтрастмеждуэтимидвумяорганизациямибылоченьсильным.FFIIбылагруппойбезумныхдобровольцев,невероятнокреативных,преисполненныххолодной,жесткойрешительностьюостановитьSAP,Siemens,MicrosoftиNokia(ещеболееплохиепарни)вихстремленииизменитьевропейскоезаконодательствосцельюлегализациисерогорынкапатентовнапрограммноеобеспечение.ВрабочуюгруппуAMQPвходилибанкиикрупныекомпании-разработчикипрограммногообеспечения,которыетожеоказалисьпо-своемубезумны,иприэтомболеенеприглядны.
Оказавшисьокруженнымсовсехсторонбезумием,явдругопятьподумаловажностиисследованийсоциальныхинстинктовисектантскихтехник.СмоимидрузьямиизFFIIмызапускаликомпаниюзакомпанией.Сайты,петиции,рассылкипоэл.почте,конференции…этомунебылоконца.Большинствоизнашихкомпанийнедостигалидостойногомасштаба,лишьнекоторыеизних.Ночтоважнее,втечениетрехлетмыэкспериментировалиисобиралиинформацию.
Мыпонялидвеважныевещи.Во-первых,культявляетсяобратнойсторонойумнойтолпы.Сектантскиепаттерныказалисьотточенными,иянаблюдал,какоднилюдиприменяютихпоотношениюкдругимлюдямсноваиснова.Влюбойтеснойгруппе,семье,компаниииликоманденачинаютпроявлятьсячертыкульта,вбольшейилименьшейстепени.Вседеловградусе.Однако,кактольковытратитевашесвободноевремяначей-топроект,высущественноначинаетескользитьвнизсэтогосклона.Явидел,какцелыегруппысходилисрельсинемоглибольшедуматьтрезвоиливыдаватьточныерезультаты.Наблюдаласьчеткаяпричинно-следственнаясвязь:чембольшегруппастановиласьпохожанасекту,темболеебесполезнойонастановилась.
Во-вторых,простореверсироватьсектантскиетехникинедостаточно.Да,этопомогаетссамогоначаларазвиватьличнуюкреативностьисилу,ноэтонетожесамое,чтосозданиекрепкогосообщества.Дляэтоговамтребуютсяболееконкретныепаттерны.
Предисловие
7
Определитеубедительнуюмиссию,чтобыпривлечьновичков.Сделайтетак,чтобылюдямбылолегченачинать.Приветствуйтеспорыиконфликты,ведьвнихрождаютсяхорошиеидеи.Систематическиделегируйтеполномочия,создавайтесоперничество.Работайтебольшесдобровольцами,чемснаемнымисотрудниками.Добейтесьразнообразияиразмаха.Пустьлюдивладеютработой,анеработа—людьми.
Конечно,намногодешевлеибыстреепроводитькрупныеэкспериментыслюдьмионлайн,чемвреальноммире.Дляподтвержденияилиопровержениярецептапопостроениюсообщества,все,чтовамнужносделать,такэтосоздатьпространство,определитьнекоторыеправилаигры,объявитьобэтоммиру,откинутьсянаспинкукреслаиждать.
Мойсамыйкрупныйинаиболееуспешныйэкспериментнасегодня,ккоторомуябудучастообращаться—этосообществопрограммногообеспеченияZeroMQ.Оновырослоизкоманды,собиравшейсянаодномизчердаковСловакии,вмировоесообщество,ионоиспользуетсятысячамиорганизаций.Крометого,ZeroMQбылополностьюсозданоируководилосьсвоимсообществом:болеестасоздателейкорневойбиблиотеки,иболеестасвязанныхсэтимпроектов.
Предисловие
8
Мойинструментарийсоциальногоархитекторасостоитиз20инструментов,каждыйизкоторыхсоответствуеткакому-либоаспектусообществаилигруппы.Ихможноиспользоватьдвумяспособами.
Во-первых,сихпомощьювыможетеделатьизмерениясуществующегосообщества,оцениваяегопошкалеотнуляивыше.
Во-вторых,выможетеиспользоватьихдлясозданиясообщества,приэтомприлагаяусилиятам,гдеонинаиболеенеобходимы.
Четкаямиссия–заявленнаяпричинасуществованиягруппы.Свободноеучастие–наскольколегколюдимогутприсоединитьсякгруппе.Прозрачность–насколькооткрытоипубличнопринимаютсярешения.Бесплатныеучастники–какмногоможноплатитьлюдямзаучастие.Свободаработысматериалами(ремиксабельность)–насколькосвободноучастникимогутиспользоватьработудругдруга.Четкостьпротокола–насколькохорошопрописаныправила.Компетентностьвласти–насколькохорошоследятзасоблюдениемправил.Нон-трайбализм–насколькодалекораспространяютсяправагруппынадсвоимиучастниками.Самоорганизация–насколькосвободномогутучастникиопределятьсвоизадачи.Толерантность–какгруппаразбираетсясконфликтами.Измеримыйуспех–какхорошогруппаможетотслеживатьсвойпрогресс.Высокоенаграждение–какгруппавознаграждаетсвоихучастников.Децентрализация–насколькоширокораспределеныучастникигруппы.Свободнаярабочаясреда–наскольколегкосоздаватьновыепроекты.Стандартнаяструктура–насколькообщаяструктурастабильнаипредсказуема.Плавностьобучения–наскольколегконачатьипродолжитьучиться.Позитивность–насколькогруппадвижимапозитивнымицелями.Чувствоюмора–насколькосерьезногруппасебявоспринимает.Минимализм–скольколишнейработыделаетгруппа.Разумноефинансирование–какгруппаборетсязавыживаниевэкономическомплане.
СпасибоСергеюДаньшинузапомощьспереводом.
Мырассмотримэтиинструментыпоочередноиувидим,какониработаютвразныхсообществах.Дляначаланесколькообщихсоветовосозданиисообщества.Будьтепредельночестныссобойисдругими.Главноедлявас–этопреодолетьсобственныепредубежденияипристрастия,аужепотом–те,чтоприсущивашимколлегам.
Глава1-Инструментарий
9
Какимбыинструментомявасниснабдил,вызахотитеадаптироватьегоиподогнатьксобственнымнуждам.Социальнаяархитектураявляетсявсеещемолодойнаукой,имногиеизмоихинструментовбудутслишкомгромоздкимиилинеполными.
Вотлучшийспособ,какпоступить:
Пользуйтесьвашимсобственнымпродуктом.Есливынебудетефанатичнымпользователемпродукциивашейгруппы,считайтесебяполуслепым.Яосозналэто,когдаработалвкомпании-производителепиваNigerianBreweriesв1990-хгодах:наслаждаясьпивом,янаучилсяоцениватьбизнеспопродажепиванамногоглубже.Практикуйтесьиповторяйтепройденное.Экспериментироватьдешево,анеудачинеизбежны.Насамомделе,есливыначнетепроект,аоннеудастся,тониктоинезаметит.Поэтомуначинайтемногопроектовименяйтеилиотлаживайтевашиинструменты,еслионинеработают.Займитесьоперативнойподдержкойпользователей.Вовсехсообществахестьместа,кудаобращаютсяновички,чтобызадатьвопрос.Будьтетам,наблюдайте,почемуновопришедшиетеряются,какиеделаютошибки,инаосновеэтоговноситесоответствующиеправкиввашуразработку.Возможно,онизаблуждаютсянасчетосновногопредназначения.Или,может,имнепонятнаструктура.Хорошийразработчиксимпатизируетсвоимпользователям,сопереживаетипомогаетим.Выпускайтерелизсразуипочаще.ЭтомантраразработчиковсвободногоПО.Этооченьправильно.Выхотитевестиразработкувоткрытуюиполучатькритическиеотзывы,ичемраньше,темлучше.МывZeroMQвыпускалипатчи,кактолькоонибылиготовы.Учитесьипреподавайтепостоянно.Обучениедругихпозволяетвидетьперспективу,аизучениеновогосамомупозволитвдальнейшемиспользоватьновыеинструменты.Социальнаяархитектура–молодаядисциплина,ихотяеекорниуходятвглубьчеловеческойпсихологии,переднейещестоитмноговопросов.
Четкаямиссия
Отправнаяточкасозданиялюбогосообщества–формулировкаегомиссии.Онаопределяетцели,которыемыразделяем,ещедотого,какприсоединитьсякпроекту.Этокакзаголовоксайтаилирекламныйлозунгфильма.Например,заголовокуRedditзвучиттак:«главнаястраницаинтернета»–амбициознаямиссия,которая,темнеменее,выполнена.СлоганФейсбука:«помогаетвамсвязатьсяиподелитьсяслюдьмиввашейжизни».
Глава1-Инструментарий
10
СОВЕТ:используйтевашумиссиювкачествеслогананасайте,врекламе,впрезентацияхит.д.Есливыинвестируетеденьгиввашесообщество,подумайтеотом,чтобызарегистрироватьформулировкумиссиикакторговуюмарку.
Безчеткоймиссиионлайн-сообществонебудетрасти.Друзья,которыеначализаниматьсяпроектом,могутбытьвсесогласныстем,чегоонихотятдостичь,нокаждомуновичкупридетсягадать,чтоониимеютввиду.Людибудутзаблуждатьсявсвоихдогадкахисовременеммогутизменитьсвоемнение.Будутвозникатьразногласия,путаницаиразочарованиепомерепониманиялюдьмитого,чтоихтяжелыйтрудбылвпустую,т.к.остальнаячастьгруппыдвижетсявдругомнаправлении.
Реакциялюдейнамиссиюкомпаниинедолжнабыть«да,этоблагоразумно»,анаоборот:«выжеэтонесерьезно,так?!».МиссияВикипедии–«бесплатнаяэнциклопедия,которуюлюбойможетредактировать»,–хорошийтомупример.Этобылоизначальнойцелью,поэтомувсепрочие,кромесчитанныхидеалистов,отнеслиськэтомукаккчему-тоневозможномуибредовому.НаэтоибылрасчетВикипедии:чтобыэтиидеалистыоднаждывзошлинаборт.Невозможныецелипривлекаютправильныхлюдейкмолодомупроекту.
СОВЕТ:Меняйтемиссиюпомеревзрослениявашегосообщества.Вначалевызахотитепривлечьмолодыхидеалистовипервопроходцев,потом–лидеров,апотом–первыхадептов,широкуюобщественность,дальнейшихпоследователей.Каждаяизэтихгруппстремитсякразному.Понявэто,соответственноизменитемиссию.
Чтобысформулироватьхорошуюмиссию,ориентируйтесьнаоднуосновнуюпроблему,которойпосвященвашпроект.Reddit,например,решаетпроблемутого,какполучитьновостиизинтернетаприслишкомбольшомколичествересурсовсинтереснойинформацией.Его«основнаястраница»представляетсобойцифровуюгазету21-говека.Википедиярешаетпроблемуаккумулированиязнаниймиллиономумов.Слова«любойможетредактировать»–также,каки«Гласнарода–гласБожий»,–говорятотом,чтоеслиивозможнонайтиистину,тотолькосообща.
СОВЕТ:Принамерениисделатьчто-либо,многоилимало,всегдастарайтесьначатьсопределенияпроблемы,которуювыхотитеустранить.Толькокогдаувасбудетчеткаяиреальнаяпроблема,сналичиемкоторойвсесогласны,толькотогдаприступайтекобсуждениювозможныхеерешений.Решениевымышленнойпроблемысхожесгруппойбезчеткоймиссии.Увасможетбытьнесколькомиссий,случайноилипреднамеренно.Еслимиссиитянутсообществовразныхнаправлениях,этоможеткончитьсяплохо.Например,ростгруппыможетпотребоватьвложений,чтовступитвпротиворечиеспозициейповопросуприбыли.ЕслибыВикипедиясталакоммерческойорганизацией,срекламойикомплектомвысокооплачиваемыхменеджеров,тоэто,по-вашему,привелобыкеерасширениюилиупадку?
Глава1-Инструментарий
11
ВслучаесZeroMQнашамиссиязвучалатак:«Быстрейшая.Передачасообщений.Всегда».Этохорошееипочтиневозможноерешениепроблемы,насчетсуществованиякотороймывсесоглашались,аименно:доступныенатотмоменттехнологиибылимедленнымиинеповоротливыми.Втожевремя,мысмоимпартнером-основателемМартиномрасходилисьвцелях.Онхотелсоздатьлучшийизвозможныхпрограммныхпродуктов,яжехотелсоздатькрупнейшееизвозможныхсообществ.Померетого,какрослочислопользователей,егодраматическоеизменение,чтосломалосуществующиеприложения,причинилоусиливающуюсяболь.
Вданномслучаемысмоглисделатьвсехсчастливыми(Мартинушел,чтобыработатьнадсозданиемновойбиблиотеки,названной«Nano»).Темнеменее,есливынеможетеразрешитьпротиворечия,касающиесямиссии,онимогутсерьезнонавредитьпроекту.Проектымогутвынестимногиеспоры,авотразногласиямеждуоснователямидовольнотравмоопасны.
СОВЕТ:Еслиоснователисогласны,что«успех»определяетсякак«максимальновозможноеслоучастников»,товпоследующиегодыэтоможетпомочьвсохранениицелеустремленности.Этотакжеоблегчаетизмерениевашегоуспехапомереразвития.
Свободноеучастие
Определившисьсмиссией,вамнужнопротестироватьеевреальноммире.Этозначит,вамнужнодатькраткий,ноубедительныйответнатупроблему,накоторуювынацелились.Яназываюэто«посевом».Этотпроцесспреследуетдвеосновныецели.Во-первых,начатьсобиратьидеалистовипервопроходцев(восновномтех,ктобылнастолькобезумен,чтобыповеритьвам)всообщество.Во-вторых,доказатьилиопровергнутьвашумиссию.
Проектымогуткончитьсянеудачейпомногимпричинам.Ноглавнаяпричина—основополагающаяидеяилимиссиябылиненастолькоудивительными,кактогоожидалилюди.Неудача–нормально,дажеотлично,еслитолькоонанестоиланесколькихлетвашейжизни.Посадитьсемечкоипоказатьеготольконесколькимлюдямнедостаточно,потомучтобольшинстволюдейнебудеткритиковать.Изжалости.Однакопопроситеихпотратитьхотябынесколькочасовсвоеговременинато,чтобысделатьпроектлучше,иеслионинескажут«да»,тогдавыпойметеихнастоящееотношение.
СОВЕТ:Привлекитек«посевному»проектувниманиепубликиивдохновляйтелюдейприсоединятьсякнемуссамогоначала.Еслилюдивовлекаютсявпроект,скорееихпродвигайте.Аеслиэтогонепроисходит,тосчитайтеэтознакомтого,чтовашамиссияможетбытьложной.Используйте«посевной»проект,чтобысоздатьсообщество.
Глава1-Инструментарий
12
Когдалюдисоглашаютсяпомогатьвам,нужнообеспечитьимместодлясовместнойработы.Вамнужна«платформадлясотрудничества».Двемоихсамыхлюбимых:WikidotдляинформационныхсообществиGitHubдляпроектовпоразработкеПО.Платформадолжнабытьбесплатной.Снейдолжнобытьлегкоивучебеивработе.Вашпосевнойпроектдолженбытьвиденанонимнымучастникам.Ондолженработатьдлякогоугодно,внезависимостиотегоилиеевозраста,пола,образованияилиместоположения.
Всеэтопозволяетпотенциальнымзаинтересовавшимсянезнакомцамзайтиипосмотретьнавашуработу,иеслиимонаприглянетсяионипочувствуютвнейвызов,тосмогутпостепеннововлекатьсявпроект.Выхотитеработатьнадвашимпосевнымпроектомпубличноиговоритьовашемновомпроектессамогоначала.Этозначит,чтолюдисмогутделатьпредложенияичувствоватьвовлеченностьссамогопервогодня.
Еслимыкакоснователигруппывыбираемтех,скембудемработать,мысоздаемоснованиедляпредвзятоговыбора.Намноголегчеработатьстемимилыми,умнымилюдьми,которыесоглашаютсяснами,чемстемиидиотамиикритиками,которыевыражаютсвоенесогласие.Акогдавысоглашаетесьсомной,выподтверждаетевсетемоииллюзииидопущения,которые,какязнаюпособственномуопыту,могутоказатьсяложнымисамымудивительнымспособом.
Современемувеличениеколичествалюдей,которыеразделяюттеженеверныедопущенияипредубеждения,можетпривестикгибелипроекта.Например,приразработкепрограммныхпротоколовтребованияккрупнымкомпаниямимогутсильноотличатьсяоттребованийкмаленькимopensourceкомандам.Поэтомуесликомитетпопротоколусостоитполностьюизкрупныхкомпаний,торезультатихдеятельностибудетнеприемлемдлямассовогорынка.
Решениемявляетсясвободныйдоступдлявсехзаинтересованных,какойбыбезумнойинепохожейнибылабыихточказрения.Этодаетнамвперспективеширокоеиразностороннеесообщество–предшественникумнойтолпы.ВZeroMQмыникогданеотворачивалисьоттех,ктохотелучаствовать.Явтягиваюлюдей,дажееслиихвкладвобщееделомалилиневерен.Сообществоважнее,чемпродукт.
Когдасообществопосевногопродуктасозреет,участникизахотятсоздатьеговтороепоколение.Каксоциальныйархитектор,выдолжныруководитьэтимтак,чтобыусилияумнойтолпыбылинаправленынаразработку«реального»продукта.Возможно,где-тонаэтомэтапевызахотитенайтихорошеедоменноеимяисделать«приличный»веб-сайт.
СОВЕТ:Еслилюдинеприсоединяютсяквашемупосевномупроекту,непродолжайтезаниматьсяим.Вместоэтогоразберитесь,чтоихостанавливает,иустранитеэто.Начнитезановоспрополки.Неубивайтепреждевременнопобеги,людямтребуется
Глава1-Инструментарий
13
время,чтобыоценитьто,чтовыпытаетесьсделать.
Прозрачность
Прозрачностьоченьважнадлябыстрогополучениякритикиидейипрогрессавработе.Еслинескольколюдейизкомандыотчаливаютиработаютнадчем-нибудьвместенекотороевремя,напримерпарудней,ничегострашного,новоткогдаречьидетонеделях,тогдато,чемонизанимаются,следуетпредставитьгруппекаксвершившийсяфакт.Еслиодинчеловектакпоступает,тогруппаможетпростоотмахнутьсяотнего.Ноеслидвоеилибольше–становитсясложнымоткреститьсяотплохихидей.Секретностьинекомпетентностьидутрукаобруку.Группам,работающимвтайне,непостигнутьмудрости.
СОВЕТ:Когдаодинчеловекделаетчто-товтемномуглу–этоэксперимент.Когдадвоеилибольшеделаютчто-товтемномуглу–этотайныйзаговор.
ВслучаесZeroMQушлонескольколетнато,чтобысоздатьпо-настоящемуоткрытуюипрозрачнуюатмосферу.Доэтогоглавныеучастникиработалитайно,публикуясвоюработутолькотогда,когдасчитали,чтоонаготовакобщественномуобозрению.Нокогдаониэтоделали,остальномусообществубылосложносказать«нет».Изачастуюработабыланевтему…да,отличнымрешениемпроблемы,нодокоторойникомунетдела.Вконцеконцов,мынедвусмысленнозапретилиподобныевещи.
Иронично,чтотайнакажетсянеотъемлемойвнекоторыхбизнес-моделях.Прибыльчастоприходитотигнорированияпотребителей.Большинствокоммерческихпредприятий,дажетакиебольшиесообщества,какTwitter,зависятотстрогогоразграничения«их»и«нас».Однакоцифровоеобществолучшевсегорастет,когдамасштабприоритетнейприбылейикогдаотноситсякпренебрежениюкаккпроблеме,требующейрешения.Есливашиклиентынедопускаютсядовашихвнутреннихпроцессов,товамбудетзакрытдоступкпониманию,гдевнихкроютсяошибки.
Бесплатныеучастники
Деньги–забавнаявещь.Слишкоммало–исообществобудетумиратьсголоду(явернуськэтомупозже).Слишкоммного–начнетсяразложение.Необходимопонимать,почемукаждыйизучастниковвообщезанимаетсяэтим.Какиеунихэкономическиемотивы?Дажевдобровольныхсообществахкаждыйучастникпреследуетсвоиинтересы.
МывZeroMQизначальноначалисмалооплачиваемойгруппыичерездвагодапришликдобровольномусообществу,прагматично–еслинесказатьциничнее–умышленнопотративденьгииоказавшисьвынужденнымиуволитьразработчиков.
Глава1-Инструментарий
14
Некоторыеизнихрастворилисьвдругихкомпаниях,некоторыевернулисьвкачествеучастников,ипроектсталболеезахватывающимивеселым,чембылраньше.ЛюдиработалинадZeroMQ,потомучтоимэтобылонужнодлясобственныхпроектов–потративнемноговременинаегоулучшение,онивыигрывалиилиэкономиливразыбольше.
Когдавыработаетенакого-то,тобудетеделатьто,чтоонилионахочет.Когдавыработаетенасебя,выделаетето,чтонужновам.Этоогромнаяразница.Людисденьгами,нобезнавыковиливкуса,–шелухаобщества.МыпрезираемоплачиваемыхучастниковВикипедии,платныхблогеровимодераторовнаReddit,потомучтомызнаем,чтовыражаемыеимимненияпочтипоопределениюложь.Будетлиблогер,проплаченныйГолливудом,критиковатьновыйлетнийблокбастер?
Янеимеюничегопротивнаемныхсотрудников.Однакоесливынацеленынасозданиенаиболеекрупного,наиболееуспешногосообщества,товамнужныучастники,которыйбудутстаратьсяпочестным,понятнымпричинам.ЕсликинорежиссёрприходитнаRedditобсудитьфильм–здорово.Еслиегомаркетологизаходят,чтобыпотеретькритическиекомментарии,этоотвратительно.
СОВЕТ:одинбесплатныйучастникстоитдесятиоплачиваемыхсотрудников.
Свободаработысматериалами(ремиксабельность)
Группетребуетсямногодоговоренностей,чтобыработатьсообща.Яназываюих«протоколами».Наверно,самыйважныйизнихдлятворческогосообщества–возможностьперерабатыватьматериал(ремиксабельность).Будьтомузыка,искусство,изображения,видео,комментарии,программыилиwiki-страницы,встанетследующийвопрос:«Ачтозаавторскаялицензиястоитзаэтимматериалом,икакэтозатронетсообщество?».
Грубоговоря,естьтритипаавторскихлицензий:
А)лицензияlockeddownнепозволяетперерабатыватьматериал.Этостарыйспособвестидела,ионвсеещедоминируетвкоммерческойдеятельности.Б)лицензияfreetotakeпозволяетодностороннююпереработку.Этодоминирующаямодельдлямногихopensourceсообществ.В)лицензияshare-alikeпозволяетдвустороннююпереработку.Этопреобладающаямодельдлясообществбесплатногопрограммногообеспечения,такихкакZeroMQ,идлямногиххудожественныхсообществ(хотяэтоможетбытьинеписанойдоговоренностью).
Глава1-Инструментарий
15
Пользователипредпочитаютмодельfreetotake,потомучтоонапозволяетимиспользоватьконтенткакугоднобезобратныхобязательств.Представьтесебедиджея,которыйвыпускаетпопулярныйтрекпомоделиfreetotake.Потомкомпанияделаетремиксииспользуетеговрекламе.Иэтотремиксбудетзакрытдляиспользования.Теперь,диджейнесможетпереработатьэтотремикси,возможно,несможетдажепроигрыватьэтотремикс.
Всежесообществаработаютлучшестретьеймоделью,т.к.тогдапользователистановятсяучастниками.Слицензиейshare-alikeдиджейсмогбыиспользоватьремикс,ремикшироватьегоещеипревратитьвдискотечныйхит.Знанияиидеитекутвовсехнаправлениях,аневытекаютизсообществавзастойноеболото.Этомощноетечение,иэтоособенноважнодлятехизнас,ктостроитсообществасминимальнымбюджетом.Есливыявляетеськрупнойкомпанией,вкладывающейкучуденегвсообщество,томодельfreetotakeвамподойдетлучше.
СОВЕТ:Есликаждыйучастниквладееттем,чтоонпривнесвсообщество,авыиспользуетелицензиюshare-alike,вамнетребуютсяпереуступкиавторскихправиливозобновлениелицензииотучастников.
Четкостьпротокола
Хорошиепротоколыпозволяютпосетителямучаствоватьбезпредварительногоодобрения.Ониразрешаютдеструктивныеконфликтыипревращаютихвполезныесостязания.То,чтоанархистымогутприсоединятьсякумнойтолпетакжеуспешно,какилюбойдругой,объясняетсятем,чтотолпаможетразрабатыватьсвоисобственныеправила.Обычноэтиправилакасаютсяпереработкиматериала,идентичности,ранговит.д.Неважно,какаяунихформа,хорошиеправилапросты,четки,яснопрописаныивсемиодобрены.
Есливысоздаетепроектвобластипрограммногообеспечения,выможетевзятьсуществующееруководство,например,протоколС4,которыймысделалидляZeroMQ.Илижевыможетеначатьсминимумоминструкцийидобавлятьихпомереопределениятехпроблем,скоторымисталкиваетсясообщество.Кслову,такбылоисруководствомВикипедии.Некоторыеправиладолжныбытьустановленыссамогоначала(например,обавторскихправахиучастии).Другиемогутбытьпридуманыпомеренеобходимости(например,процедураразрешенияконфликтов).Сложные,бесцельныеилинепрописанныеправилаотравляютгруппу.Онисоздаютпространстводляспоров,путаютлюдейиповышаютстоимостьвходавгруппуиливыходаизнее.
СОВЕТ:Пишитеаккуратновашиправила,начинаяслицензиинаконтент,иоценивайте,насколькоонипомогаютлюдям.Изменяйтеихпомеренеобходимости.
Глава1-Инструментарий
16
Компетентностьвласти
Безоргановвластиправиланеимеютсилы.Основателисообществаиосновныеучастникиявляютсяде-фактоихпредставителями.Еслионизлоупотребляютсвоимположением,онитеряютучастников–ипроектумираетлиборазветвляетсявзависимостиотразличныхправил.Властьдолжнабытьмасштабируемая(тоестьбытьспособнойохватыватьдеятельностьгруппылюбогоразмера)идопускатьпередачупомереростаиизменениягруппы.
Покамыиспользуемвластьдлясооруженияигровойплощадки,многиегруппыиспользуютвластьдляконтролясвоихчленов,держаихвгруппеизаставляяихсоответствоватьстандартам.Любимыйприемвкультах–наугаднаказыватьивознаграждатьлюдей,чтобыонибылисбитыстолкуиперестализадаватьвопросыадминистрации.
СОВЕТ:Назначайтесамыхактивныхучастниковнаадминистративныепостыипобыстрее.Увасестьнебольшойпромежутоквремени,чтобыуспетьсделатьэто,иначеониуйдутвдругиепроекты.
Выдолжныбытьчастьювашегосообщества,ивыдолжнысоблюдатьвашисобственныеправила.Есливызамечаетезасобой,чтонарушаетеихилихотитеэтосделать,значит,онинеточныитребуюткорректив.
ВсообществеZeroMQмысражалисьиз-завопросаотом,ктомогопределятьправила,ивконцеэтопривелокторговоймаркеидоменномуимени.Человекиликомпания,котораявладеетименемпроекта,являетсяверховнойвластьюиможетопределятьправила.Еслиониидиоты,топроектумрет.
СОВЕТ:Есливыинвестируетеденьгивсообщество,рассмотритевариантиспользованияторговоймаркивСША,чтобыиметьвозможностьпредотвращатьиспользованиедругимилюдьмипохожихимитирующихназваний,которыенеимеютквамотношения.Этостоитоколо750долларов.
Нон-трайбализм
Членстводолжнобытьсимволомобъединения,анеслужитьудостоверением.КакчастоотмечалМистерСпок,эмоциинелогичны.Некоторыегруппыруководствуютсялогическиобоснованнымицелями,вдругихжеправятэмоциональныефакторы,такиекакдавлениесосторонычленовсвоегокруга,стадныйинстинктидажеколлективнаяистерия.Определяющиммоментом,видимо,служатотношениямеждугруппойиееучастниками.Мыможетвыявитьэтовопросом:участники«исключительно
Глава1-Инструментарий
17
привержены»группе?Подисключительнойприверженностьюимеетсяввидуприданиебольшегозначениясуществованиюгруппы,анеееработе.Подобнаяприверженностьзаканчиваетсяконфликтомсдругимигруппами.
СОВЕТ:Держитесьподальшеотформальныхмоделейчленства,особеннотех,которыестараютсяпревратитьлюдейвсобственностьгруппы.Позволяйтеанонимноеилинеперсонализированноеучастие.Поощряйтелюдейсоздаватьсвоиконкурирующиепроекты–пространстводляэкспериментовидляизучениянового.
Группыиндустриальнойэпохи,словнокульты,владеютсвоимичленами.Сотрудникпринадлежиткомпании.Дажеидеи,которыепришливамвголовуподдушем,–тожесобственностьвашегоработодателя.Акогдагруппавладеетсвоимиучастниками,томотивируетихстрахом,ненавистью,завистьюизлостью,подменяясознательныелогичныемотивы.Страхисключенияширокоиспользуетсядляподчинениялюдейодномустандарту:«Делай,чтояговорю,илияуволютебя!».
СОВЕТ:Дляопределениятого,насколькогруппапохожанаплемя,простоначнитеконкурирующийпроект.Еслиреакциянаэтоотрицательнаяиэмоциональная,вгруппедоминируетродоплеменнаяпарадигма.Вгруппесоздоровойатмосферойаплодисментамивстретятсвоихсоперников.
Самоорганизация
Некоторымлюдямнравится,когдаимговорят,чтоделать.Лучшиеучастникиикомандысамивыбираютсебезадачи.Успешноеобществораспознаетпроблемыисамоорганизуетсядляихрешения.Болеетого,оноделаетэтобыстрееилучше,чемлюбаяиерархическиуправляемаяструктура.Этозначит,чтосообществодолжноприниматьпомощьвлюбойобласти,безограничений.
Распределениезадачсверхувнизявляетсяантипаттерномсприсущимиемумногимислабостями.Оннедаетиндивидуумамдействоватьприобнаруженииимипроблемы.Длянегохарактерныфеоды,гдеработаинеобходимыересурсыпринадлежатотдельнымлюдям.Онсоздаетдлинныекоммуникационныецепочки,которыенепозволяютреагироватьбыстро.Емутребуютсяпрослойкименеджеров,просточтобысоединитьтех,ктопринимаетрешения,стеми,ктобудетвыполнятьработу.
СОВЕТ:Пишитеправила,чтобыповыситькачествоработы,подчеркивающие,чтокаждыйможетработатьнадтем,чтоемуинтересно.
ВсообществеZeroMQмыизбавилисьотназначениязадач.Например,мынепринимализапросыокаких-либоособенныхфункциях.Есликому-тонужнабыласпециальнаяфункция,тоонлибопосылаетнампатч,либопредлагаетоплатить
Глава1-Инструментарий
18
добавлениеизменений,либоонждет.Этозначит,чтолюдиделаюттолькотеизменения,которыенасамомделенужносделать.
СОВЕТ:Сообществамтребуетсяиерархияполномочий.Однакоонадолжнабытьподвижнойистрогоделегированной.Тоестьвыбирайтелюдей,скоторымивыработаете,ипозвольтеимвыбиратьтех,скемонибудутработать.Структураполномочий,словножидкийцемент,оназатвердеваетисковываетдвижениялюдей.Любаяструктурастараетсясебязащитить.
Толерантность
Вразношерстнойгруппевозникаютконфликтующиемнения,издороваягруппаэтиконфликтыохватываетиперерабатывает.Критики,иконоборцы,вандалы,шпионыитроллидержатгруппувнапряжении.Онимогутбытькатализаторомвовлеченностиостальныхучастников.Википедияпроцветаетблагодаря,аневопреки,тем,ктокликает«Edit»сцельюпревратитьстатьювмешанину.Этоклассическийантипаттерн,подавляющийидеиивзглядыменьшинства,используяпредпосылку,чтоони«опасны».Ктомужеэтонеизбежноподавляетновыеидеи.Логикаобычновтом,чтослаженностьгруппыважнееееразнообразия.Потомжеполучаетсятак,чтонаошибкинереагируют,алишьещебольшеобособляются.Насамомделе,группаможетбытьважнее,чемрезультатыеедеятельности,еслионамногообразнаиоткрытановымаргументам.Этотрудныйурок,которыйполезениобществувцелом:нетопасныхсуждений,естьопасныеответы.
То,каксообществаразбираютсястроллямиивандалами,этоодно.Разобратьсясфундаментальнымиотличиямимнений–этодругое.Ранееяговорил,чтоконфликтующиедругсдругоммиссиимогутстатьпроблемой.Лучшеерешение,котороеязнаю,–этопревратитьконфликтвсостязание.Кпримеру,браузерGoogleChromeсталболеелегкой,болеебыстройальтернативойFirefox,которыйстановилсяраздутымимедленным.ТогдакомандаFirefoxвзяласьзаделосумом,итеперьFirefoxработаетбыстрее,чемChrome.
СОВЕТ:Еслиестьинтереснаяпроблема,сделайтетак,чтобынесколькокомандсоревновались,пытаясьрешитьее.Соревнование—оченьвеселаяштука,иможетпородитьлучшиерешения,чеммонополистическийподход.Выможетедажеорганизовыватьсоревнованияспризами.
Измеримыйуспех
Всеэтохорошо:пытатьсяобратитьконфликтвсостязание.Однаковамнеобходимообеспечитьучастниковгруппыинформациейотом,какхорошоонисправляются.Лучшиеинструменты,такиекакGitHub,показываютточноечислолюдей,которые
Глава1-Инструментарий
19
наблюдаютилиотметилипроектилиначалипроект-ответвление(отраженыразличныеуровниинтересаиприверженности).
Конечноже,Сетьвсегдабылаозабочена«хитами»ианализомтраффика,которыйпоказываетпопулярностьсайтаилистраницы.Этооблегчаетизмерениеуспехаонлайн-проекта.Встарыевременаиндустриальнойэпохикомандыполучалиотзывыосвоейработеотначальства.Чтопревращалосьвужимкипередвластью:васбольшенаградятзапослушность,чемзаприлежность.Делатьначальствосчастливымрадитого,чтобывамповысилизарплату,–нездоровоеотношение.
СОВЕТ:Есливашаплатформанеподдерживаетэтогонапрямую,найдитевозможностиинформироватьвашихучастниковотом,насколькохорошоразвиваютсяихпроекты.
Высокоенаграждение
Существуетмногопричин,покоторымлюдипринимаютучастиевсообществах.Преобладающаямотивация–потребностьввосхищениизадостигнутыйуспех.Какиндивидуумом,такивсоставекоманды.Успехотносительноеявление,поэтомунамтребуетсяметрика,какой-товысокийбалл,накоторыйлюдибудуториентироватьсявсвоихстремлениях.
ВсообществеZeroMQмынепридавалибольшогозначениябалльнойоценке,хотяучастникииполучаютбольшелюбвиприбольшемвкладевобщеедело.Этозаписываетсявихпослужнойсписок.УчастиевZeroMQможетпомочьприпоискехорошейработы.
Reddit,какмногиедругиесайты,использует«карму»,котораяпоказывает,сколькоголосовполучилаккаунтзасвоипубликациииповедение.Работаетэтодовольнонеплохо.Некоторыесайтынепоказываютвсюкарму,чтобыпредотвратитьпопыткилюдейобойтисистемуиполучитьболеевысокийбалл.Некоторыесайты,такиекакStackOverflow,докрайностиувлекаются«геймификацией»,используяордена,высокиебаллы,достиженияит.д.Мнекажется,этоотдаетманипуляциямииотвлекаетотмиссиисообщества.Людидолжныприниматьучастие,стремяськуспехупроекта,анекбольшомуколичествуигровыхбаллов.
Социальноеобязательство–делатьгруппыразныхлюдейсчастливыми–задача,приносящаяогромноеудовлетворение,ионанезагрязняетпланету.Индустриальноеобществонацеленонаматериальныенаграды(вышезарплата,большедом,лучшемашина),увязанныесиерархическойструктурой.Оноэффективно,потомучтовсемылюбимбогатствоилиунаскомплекснеполноценности;какаябынибылапричина,желаниесделатьначальствосчастливейзначитпринятиеменьшихрисков.
Глава1-Инструментарий
20
СОВЕТ:Когдалюдипросятвассделатьчто-то,авынезнаетекак,тогдаобъявитепублично,чтоэто«невозможно».Илипредложитерешениенастольконелепоеибезнадежное,чтонастоящиеэкспертыотвозмущениявозьмутсязадело.
Децентрализация
ВсвоейкнигеСероуиеки(Surowiecki)объясняет,чтокатастрофашаттла«Колумбия»произошлапопричинебюрократиивиерархичнойструктуреуправленияNASA,из-закоторойбылипроигнорированымненияобычныхинженеров.Еслигруппадецентрализована,еечленыболеенезависимы,ониполучаютбольшееразличныхвходныхданных,иониссамогоначаларазнообразны.
Еслигруппагеографическинеразбросана,тоонастановитсяоднородной,гдевсечленыобладаютсхожимивходнымиданнымиитриггерами.Схожестьпозволяетменьшинствудоминироватьнаднастроемгруппыиотбрасыватьнеординарныеидеи.Онопозволяетемубуквальнозапугиватьилиобманыватьбольшинство,темсамымподчиняяего.Требованиеотом,чтобывсечленыгруппысиделиводномофисе,департаментеилизданииявляетсястарымантипаттерном,которыйсложнопреодолеть.Вотпочемувсекультытакиесплоченные.
СОВЕТ:Вамнужнысобрания,чтобыдобитьсяотгруппыработы?Этознактого,чтоувасестьглубокиепроблемывсовместнойработе.Выисключаетелюдей,которыефизическиненаходятсярядом.
Бываетсложноотойтиотстароймоделисовместнойработы«обсуждение-действие».И,конечно,вамбудетлегче,есливысобираетегруппыссамогоначала,анепытаетесьизменитьужесуществующие.
Свободнаярабочаясреда
Сообществунужнопространстводляроста.Вреалияхинтернетаэтообычносайтилинаборсайтовисопутствующиеструктурывродесписковэл.почты,блоговит.д.Мывидим,чтоэтостановитсяоченьдешевымилидажебесплатнымспособомсоздания«пространства»вцифровомобществе.Вопросвтом,могутлииндивидуумысоздаватьсвоиличныепространствавнутрисообщества.Еслида,будутлиониприноситьбольшепользыобщемупроекту?
Свободасозданияструктурыраздражаетлюдей,которыесчитают,чтоэтовноситхаосибеспорядок.Однакоесливыиспользуетеобычныеструктуры(смотритеследующийпункт),ущербуучастникамотэтогонетникакого.Авотчтовредно,такэтосозданиеструктурыисходяизнеобоснованногомненияоеепользелюдям.КогдаявозглавилассоциациюFFIIв2005г.,предыдущимпрезидентомбылосозданонесколькосотен
Глава1-Инструментарий
21
списковэл.почты,таконотмечалтепроекты,надкоторыми,поегомнению,людидолжныбылиработать.Этонесоответствовалотому,каклюдихотелибытьорганизованы,ибылооченьсложноудалитьэтиспискиисоздатьновые,которыенамнасамомделебылинужны.
Конечно,группыиндустриальнойэпохираспределялиработуиресурсыдляеевыполнения.Любаяноваяинфраструктура–такаякаксайт,списокадресовэл.почтыиливики–требуетодобренияирешительности.Можетдажепотребоватьсяюридическаяоценкаавторскихправипатентов.Ценавысока,поэтомулюдинеохотноидутнариск.Получается,чтонеэкспериментируяипродолжаяработать,онисвязываютсеберуки.
ВсообществеZeroMQтребуетсялишьодинкликдлясозданияновогопроекта.ВВикипедиивыможетесоздатьновуюстраницу,простокликнувна«создатьстраницу».Обапроектаимеютмеханизмызащитыотслучайногомусора.Википедияпроводитдовольноагрессивнуючисткуновыхстраниц.ВZeroMQестьспециальнаяпроцедурадлявнесенияпроектавофициальнуюорганизациюсообщества.
СОВЕТ:Сделайтесозданиеновыхпроектовдлязарегистрированныхпользователеймаксимальнопростым.Еслипроектсоздаетсяпользователем,тонестоитбеспокоитьсянасчетмусора.Еслионинаходятсявобщемпространстве,товаммогутпотребоватьсяинструментыдляочисткимусораизаброшенныхпроектов.
Стандартнаяструктура
Померетогокаксообществорастет,направлятьегостановитсясложнее.Есливыделаетеединичный,постоянноразвивающийсяпроект,состоящийизмножестваотдельныхзадач,тоэтостановитсявсесложнееисложнеесовременем.Представьтесебесредневековыйзамок.Этапроблемаособенноостростоитпередбольшимикомпаниями,развивающимипроект,которыеиногдазабываютозатраченныхсредствах.
Запутанностьотпугиваетлюдей–оченьсложностановитсяразобраться.Решениемявляетсяиспользованиестандартныхструктур,выучивкоторыераз,выможетераспознаватьвсегда.Подойдетнелюбаяструктура.Намбываетсложновыучитьструктурыглубжетрех-четырехуровней.Однакомысрадостьюисследуемоченьширокиесистемыстысячамиилимиллионамиблоков,еслиэтиблокисоответствуютотдельнымзадачамилипроектам.
Представьтесебегород.
Глава1-Инструментарий
22
Успешныеонлайн-сообщества–этогорода,анезамки.Википедиясостоитизнесколькихвикисоспецифичнымязыком,многиеразбитынамиллионыстраниц(проектов),каждаяструктурированасекциями,обсуждением,историей,примечаниямиит.д.Нескольколюдеймогутработатьнадоднойстраницейодновременноилиодинчеловекможетмедленноправитьилизаботитьсяодюжинеилисотнестраниц.
GitHubуправляетмиллионамипрограммныххранилищ(«репозиториями»),сгруппированнымипоучетнымзаписямпользователейилиорганизаций,икаждыйобладаетсвоейструктурой(файлы-исходники,документацияит.д.),чтозачастуюзависитотязыка(Java-репозиториииспользуютодинстиль,С-репозитории–другойит.д.).Одинрепозиторийможетнасчитыватьнесколькоучастников,людимогутработатьсразнымколичествомрепозиториев.СообществоZeroMQявляетсяорганизацией,котораясостоитизрастущегочислапроектов.
СОВЕТ:Спроектируйтевашесообществокакгородподдающихсяпоискупроектов,гделюбойможетначатьновыйпроект–проектыпредставляют,наверно,дюжинуработлюдей,иувсехсхожаяструктура,насколькоэтовозможно.Бизнестяготееткзамкам,которыенеизбежнобудутпосвященыВажнымПерсонам,анепроектам,и,конечноже,неосновнымпроблемамбизнеса.Этиорганизациивсегдаогромныинестандартны.Инетникакойвозможностиразобратьсявних,кромекакзапоминатькаждуюихдеталь.Ноитогдавынесможетеслегкостьюпрогуливатьсяпозамку,поэтомумалотолкуизучатьегопланировку.
Плавностьобучения
КогдаZeroMQтольконачинался,этобыллишьодинпроектсединственнойстраницейREADME.Сегодняэтостоилибольшенебольшихпроектов,каждыйизкоторыхимеетсвоюдокументацию,сообществоидинамику.Попастьвужевзрослыйпроектможетбытьтрудно.Какяужесказал,использованиестандартныхструктуржизненнонеобходимо.Болеетого,вампотребуетсяпроследоватьподовольноспецифическойтраекторииприизучении,отлегкогокболеесложному,отстадиипраздногопосетителядоучастника-эксперта.Считайтевашесообществокомпьютернойигрой,гдесложностьуровнейвозрастаетсоразмерносвыигрышем.Людибудутиграть«всоответствиисосвоимуровнем».Есливывседелаетеправильно,выпривлечетемногих.Еслинеправильно,тоэкспертыбудутскучатьналегкомуровне,ановичковотпугнетсложностьнастарте.
СОВЕТ:Используйтеклассическиеинструментыобучения–презентации,видео,ответыначастозадаваемыевопросы(FAQ),обучающиематериалы–чтобылюдимоглиначать.Вамбудетлегче,есливысостоитевсообществе,потомучтотогдавыможетепосмотреть,какиевопросычащевсегозадаютначинающие.
Глава1-Инструментарий
23
Позитивность
Иногдаестьсоблазнагрессивноагитироватьлюдейвступитьвсообщество.Вконцеконцов,многимнравятсяострыеаргументы,особеннокогдаониуверенывсвоейправоте.Некоторыегруппыразвиваютсязасчетсвоейвраждебностиинегативапоотношениюкдругимгруппам,особенноеслиещеестьипредыстория.Тон,которыйвызадаете,будучиоснователем,сохранитсянадолгоевремя.Есливыпродвигаетесвоесообщество,нападаянаконкурентов,выпривлечетеопределеннонастроенныхлюдей,итакойнастройполучитразвитие.Раноилипозднонегативобернетсявнутрьиможетоказатьсягубителендлясообщества.
СОВЕТ:Когдавыговоритеолюдях,продукцииилиорганизациях,будьтевежливыинетеряйтесамоконтроль.Когдавырекламируетепродукциюилисообщество,говоритеопроблемах,которыевырешили,анеотом,чемвылучшеконкурентов.
Насвоемопытезнаю,чтолучшезадатьпозитивныйтонссамогоначала.Конкуренты–этоблаго,т.к.даютнавозможностьсостязаться.Подражатели–тожехорошо,потомучтоподтверждают,чторынкувынужны.Троллиивандалы–отлично,ведьонидаютискреннимлюдямдополнительныйшансдоказатьсвоюполезность.Итакдалее.Кажется,чтоэтотрудно,искатьпозитивнуюсторонувовсем.Однакоэтовсеголишьобразмышления.
СОВЕТ:Добропожаловатьвсем,заисключениембезнадежныхсмутьянов.Ихнемного,тех,которыепростонемогутнайтисебеместовоткрытом,разнообразномсообществе.Выможетепопроситьтакихлюдейуйти,или,еслинеобходимо,забанитьих.
Позитивныйнастройхарактеризуетсятолерантностьюипрепятствуетнакалустрастейивозникновениюспоров.Таклегчеэкспериментировать,делатьошибкиикритическиотноситьсяксвоейработе,авсеэтовместевзятоепозволяетсообществурешатьсложныезадачи.
Чувствоюмора
Выкогда-нибудьзадумывались,почемувчеловекезаложенапотребностьшутить,почемулюди,которыеникогданесмеются,кажутсястраннымиинеприветливыми?Моятеориятакова,чтомывсеиспользуемюморкакспособразрядитьситуацию(чтоимееточевидноепреимуществодлявыживания).Людинепобьютшутника–толькоеслишуткастараяилиплохорассказана.Еслисерьезно,тоюморсводитнанеттрайбализмиэмоции,ипозволяетлюдямработатьвместе,дажееслионисильно
Глава1-Инструментарий
24
отличаютсядруготдруга.Общаяшуткаможетсоздатьсильныесвязи,потомучтоонасвидетельствуетосхожестивзглядов.Юморявляетсянеотъемлемойчастьюобществаиуменьшаетстресс.
СОВЕТ:Чемболеесерьезнуютемузатрагиваетвашесообщение,тембольшевампотребуетсяюмора.ВмоейкнигеоZeroMQмнойнаписаномногоглупойчепухивперемешкустяжелымописаниемтехническойчасти.Многимэтопонравилось.Еслибынеалкоголь,тохмуроевыражениелицаиндустриальнойэкономикиникогдабынесменялосьулыбкой.Онасебяоченьсерьезновоспринимает.Недостатокюмораворганизации–явныйпризнактого,чтовсетамфундаментальноубого.Хужевсего,чтотогдагруппастановитсяуязвимойдляконфликтовирасколов.
Минимализм
Гоночныемашиныделаютсябыстреезасчетизбавленияотлишнеговеса,анеувеличениямощности.Выможетесделатьвашесообществоболеелегким,быстрымигибким,строгоследуядогмеминимализмапоотношениюквашейработе.Этоможетсмахиватьналеность,ночастобываетсложнеенеделатьчто-товеселое,чемввязатьсявэтобезоглядки.
Общееправило–делайтевсегдатотминимумобъемаработ,которогобудетдостаточно,чтобывсеработало.Остальноебудетеделать,когдалюдиначнутиспользоватьвашуработуижаловаться.Этоотноситсякакквашемупосевномупроекту,такиккаждомуизменению,котороевывносите.Обратнаясвязь–вбольшейстепени,чемвашесобственноемнение,–лучшийуказательтого,гдеследуетприложитьусилия.
СОВЕТ:Перфекционизмпрепятствуетучастию.Публикациянаполовинуоконченнойисодержащейбагиработы–прекрасныйспособпривлечьлюдейкучастию.Длябольшихэгоэтотруднопринять,ноизъянылучшепривлекаютучастников,чемсовершенныйтруд,которыйпривлекаетпользователей.
Культураминимализмаможетидолжнараспространитьсяввашемсообществе.Впрошломмыобычносоздавалиюридическиелицадлясерьезныхпроектов,чтобыбылавозможностьвладетьавторскимиправами,торговымимаркамииденьгами.Однакосодержаниеюридическихлицдорогообходитсяизанимаетмноговремени.Однаналоговаяотчетностьможетстатьнепосильнымбременем.
Одноизмоихсообществ,Digistan,былоразработано,развитоидостиглосвоегорезультата(формированиеновогопоколенияузаконенныхшаблоновиполитическихаргументовдляоткрытыхстандартов)где-тозашестьмесяцев.Всенашипротоколыв
Глава1-Инструментарий
25
ZeroMQосновываютсянаработеDigistan.OpenWebFoundation,занимаясьтемижевопросами,потратилодвагодатольконарегистрациююрлица,определениеуставаивыборсотрудников.
Разумноефинансирование
Еслисредствбудетнедостаточно,сообществоумретотистощения.Еслиихбудетслишкоммного,то,какяужеговорил,онобудетразлагаться.Здесьтребуетсячуткоеравновесие.Мыможеммотивироватьлюдейспомощьюденегдоопределеннойстепени.Послеэтого,толькопсихопатыбудутпоказыватьпропорциональнуюреакцию.Вэтомизаключаетсядефектнаивнойтеориикапитализмаотом,что«чембольшеденег,темлучше».Вмоемделесамымивероломнымиоказывалисьте,комуябольшевсегоплатил.
Первое,чтонужносделатьдлясокращениярасходов,–этоотказатьсяотидеисюрлицами,офисамиисотрудниками,еслитольковыправдавнихненуждаетесь.Онинетолькосъедятлюбыевашисредства,ноонибудутпрепятствоватьвашейработепосозданиютолькоонлайн-сообщества.
Второе:инвестируйтевремяиденьгивсообщество,толькоеслинетдругоговыхода.Этоможетотноситьсякрегистрацииторговоймарки,оплатехостингаилиплатезавыполнениетакойработы,скоторойбольшениктонесправится.Инаконец:остерегайтесьлюдей,которыеготовывзятьнасебесерьезныерискибезтребованиясоответствующеговознаграждения,–онисклонныперегорать,очемярасскажувследующейглаве.
СОВЕТ:Каждыйраз,собираясьпотратитьденьгинасообщество,поинтересуйтесь,неможетликто-нибудьвампомочьспроблемой.
Глава1-Инструментарий
26
ЭмоциональноевыгораниеволонтеровРанееяподчеркивалценностьдобровольнойработыкакболееаккуратной,честнойитворческойпосравнениюсоплачиваемойработой.Однакоздесьнужносделатьважнуюоговорку.НекоторыеинструментыСоциальнойАрхитектурытаятвсебеопасность.Поставивлюдямзахватывающуюцель,выможетеподтолкнутьихвсторонусаморазрушения.ЭтобылоглавнойпроблемойвFFII(FoundationforaFreeInformationInfrastructure),когдаяпришелтуда,иееусугублялвысокийнакалэмоций,характерныйдляродоплеменнойкорпоративнойкультурыорганизациивтовремя.Многиеключевыеучастникибылиизнуреныиэмоциональноистощены.Непонаслышкезнакомоемнесамомусостояние.
Исследованияэмоциональноговыгорания,окоторыхвыможетепрочитатьвВикипедии,намойвзгляд,несоответствуюттому,чтопроисходитвреальнойжизни.Ареальностьвсё-такиважнеетеории.Янеоднократнонаблюдалтакуюхарактернуюособенностьвыгораниявдобровольныхсообществах:
Оновыражаетсякакглубокоеотвращениекконкретномупроекту.Мызабрасываемпроектподальше,прекращаемотвечатьнаэл.почтуиможемдажепокинутьсообщество.Остальныеотмечают:«хм,онведетсебякак-тостранно…наверно,расстроенилиустал».Этосостояниепроектоориентированно.Т.е.мывыгораемпоотношениюкоднимпроектам,асдругимивсеможетбытьнормально.Виныхслучаяхнасможетпарализоватьдаженанесколькомесяцев—потоммыопятьначнемработать,ноужезабросивпроективзявшисьзачто-тодругое.Такоеслучаетсяразводин-тригода,взависимостиотвашегохарактераиситуации.Оченьупорные,мотивированныеличностимогутвыдержатьдольше,нокогдасорвутся,будетещехуже.Лечениеесть.Этонаистраннейшийподходяопробовал,когдаудалосьнайтиденегизаплатитьперегоревшимдобровольцамзато,чтоониделалибесплатно.Онивернулисьсчастливымиипродолжилизаниматьсясвоимделом.Недугтакжеможнопредотвратить.Оплачиваемыеработникинестрадаюттакжеотистощения.Конечно,ионимогутвпастьвдепрессию,нообычноихневырубаетвнезапно.
Чтоприводитменякмыслиотом,чтоделотутвпроблемеоптимальноговложенияпрофессиональныхусилий.
Глава2-Заметкинаполях
27
Людимноговкладываютвсвоипрофессии,идутнабольшойриск,особенновмолодостивнадежденанаградупотом.Мыдолгоевремяможемнепридаватьзначенияматериальномувознаграждению,еслимыуверенывтом,чтоследуемвернымпутем.Например,молодойписательилимузыкантготовтерпетьбедностьмногиегоды,еслионсчитает,чтославаибогатствождутеговпереди.
Иневажно,насколькопожухшаяморковкасвисаетпереднамиспалки—онавсегдамаячитунасвподсознании.Мыпосвоейсутиэкономическиеживотные.Всяжизнь—бухгалтерия.Мыпревосходноумеемвратьсебе,новсежезакаждымдействиемирешениемстоитэкономическиймотив.Мыинвестируемвпроекты,потомучточувствуем,чтоонибудутспособствоватьнашемууспеху,дажееслинаэтоуйдутгоды.Мысоревнуемсясдругими,пытаясьнайтиниши,гденашиталантызасияютвовсейкрасе.
Ивотполучаетсятак,чтомолодоймозг,изовсехсилстарающийсяинвестироватьсвоиресурсывправильныевещи,обнаруживаетсебявситуации,когдаснежныйкомлжидостигаеткритическоймассы.Дорогавнезапнозаканчиваетсятупиком.Люди,которыеейследовали,—обманщикииманипуляторы.Миссия—фальшивка.Одобрениясостороныдругих—эмоциональноеманипулирование.Годыусилийидутпрахом,икаждаяследующаяминутастановитсябессмысленнойжертвой.
Подобноевыгораниепохоженарасплату(likeareckoning).Мыбросаемпроекттак,будтоонвдругсталядовитым,словнопоняли,чтопроглотиликакой-топротухшийкусок.Вотнесколькоспособовснизитьвероятностьподобногоразвитиясобытий:
Мынеможемводиночествеработатьнадпроектами.Концентрациявсейответственностинаодномчеловеке,которыйнеработаетсверхмеры,частоприводиткперегоранию.
Проектамтребуетсябизнес-план.Надеждаполучитьматериальноевознаграждениепозволяетмозгумиритьсянекотороевремясотсутствиемвознаграждения.
Превентивноймеройпротиввыгоранияможетбытьинформация.Когдамыобъясняемлюдям,чтотакоевыгорание,онибыстрееегораспознаютипросятопомощиещедотого,какделозаходитслишкомдалеко.
Хорошиеинструментыипрактикипозволяютнамработатьсменьшимстрессомисменьшейзависимостьюотодногочеловека.
Глава2-Заметкинаполях
28
Какзахватить/защититьopen-sourceпроектНа«ArsTechnica»естьинтереснаястатьяотом,какGoogleпонемногузакрываетAndroid.ЭтоклассическаяиграCapturetheFlag,котораяведетсяпротивopen-sourceсообщества.Ясобираюсьобъяснить,какэтотзахватработает,икакегопредотвратить.
ПочемуCapturetheFlag?
Какговорит«ArsTechnica»:«Легкоотдатьчто-нибудь,когдатынапоследнемместеснулевойдолейрынка,какэтобылосAndroidвначале.Когдажетынапервомместе,немногосложнеебытьтакимоткрытымидоброжелательным».
Android,еслиужчестно,вероятно,самаякрупнаяинвестицияGoogle.Выможетепоспоритьотом,имеютлиониправопревращатьоткрытуюсистемувзакрытую,ивыбудетеправы.Однакоэтотожесамое,чтоспоритьотом,имеетлиправоцентральныйбанкпечататьслишкоммногоденежныхзнаковисоздаватьдевальвацию.Конечно,наэтоонуполномочен.Новтожевремяуэтогосуществуетцена,которуюзаплатятдругиелюди.Вопросневправомерности,авприемлемоститойцены,которуюзаплатитобщество.Аеслионанеприемлема,тогдакакэтопредотвратить?
Android,какилюбаясистемасоткрытымкодом,проданнаярынкунаэтойоснове,являетсяобщественнойсобственностью.Когдакто-либоприватизируетее,онувеличиваетсвоиприбыли,какпечатающийденьгицентральныйбанк,засчетостальных.ДелаяфорктакихприложенийAndroid,какпоиск,календарь,музыка,исоздаваяулучшенныеихверсии,Googleсоперничаетсдругимикомпаниями,использующимиAndroidнасвоихустройствах.
Вопросозахвате,отом,какэтопроисходитикакэтопредотвратить,особенноважен,есливынеGoogle,т.е.есливыпользовательилиучастникopen-source-проекта.ВAndroidмногопатчейдругихфирм,такихкакLG,Samsungипрочие.ПомеретогокакGoogleпревращаетоперационнуюсистемувсвойличныйогород,этипатчиначинаютиспользоватьсяпротивтехжесамыхлюдей,которыеихсделали.
Яуверен,чтоGoogleсовершаетогромнуюошибку,меняяправилаигрыподобнымобразом,простопотомучтоэтобудетпотворствоватьконкурентамAndroid.Однакоянеобэтом.Япростозаинтересованвусвоениилюбыхуроков,которыепомогутмнесмоейработойимоимипроектами.
Отмечудвевещи:
Глава2-Заметкинаполях
29
изчистогоинтересаянебудуучаствоватьвopen-source-проекте,которыйнепредоставитмне,участнику,гарантийтого,чтомоипатчииизменениянестанутпринадлежатькому-либоещеинебудутиспользоватьсяпротивменяже.изсоображенийэтикияникогданесоздамopen-source-проект,которыйнебудетобеспечиватьподобныегарантиисвоимучастникам.
Сценарийиспользования
Япостараюсьвыразитьсянедвусмысленноосценариииспользования.РечьидетобAndroid:однакомпанияначинаетopen-source-проект,используяегокак«товар-приманку»,намереваясьпроникнутьнарынок,ипроситподдержкиудругих.Этоклассическаястратегия,котораяможетбытьоченьуспешной.Однакоэтоточнонетоже,чтостуденческийпроект-исследованиеилимусорвроде«давайтесделаемсистемурасчетовпозаработнойплатеopen-source»или«пятероизнассобралисьвгаражеирешилисделатьновыйфреймворк».
Здесьестьчастичноесовпадение,иядумаю,полученныевыводыможноприменятьболеешироко(ияточноприменяюихсистематически),опятьже,мойсценарийиспользования–«open-sourceдляпрорыванарынок».
Важнознать,чтоуспехиспользованияopen-source-проектадляпрорыванарынокзависитотсообщества,котороезанегоберется.Любойрынокзависитотповедениянесколькихвлиятельныхигроков,доминирующихнарынке,аусилиябольшинстваостальныхигроковнесущественны.Сутьвтом,чтобыобещатьэтойудрученнойбессилиемтолпевыход,убедитьихинвестироватьвочто-тоновоеиоткрытое,котороепотенциальноможетизменитьправилаигры.
Большинствоopen-sourceпроектовпровальные(серьезно,идите,почитайтеокаком-нибудьслучайномпроектенаGitHubиувидите,сколькоизнихадекватных),идажеуспешныевоченьскромномзначенииэтогослова,незначительнысамипосебе.Поканетсерьезногоизменениявласти,проектможетоставатьсяпотенциальнымпрорывомнарынкеоченьдолгоевремя.Онможетвыглядетьоченьстабильнымисчастливым.Чтож,легкобытьдружелюбным,когданаконунестоятденьги.
Еслиикогдапроектстановитсяуспешным,правилаигрыменяются,умныепарни,которыезапустилипрорывнойпроект,стараютсясорватьспелыйфруктизабратьегосебе.Ивоттолькотогдастановитсяинтересно.
Полесравнымиусловиямиигрынепод«запретом»
Глава2-Заметкинаполях
30
Естьнесколькоспособовзахватитьopen-sourceпроект,включаяторговыемаркиипатенты.Ярассмотрютолькоавторскиеправа,потомучтоэтонаиболеечастыйслучай.Ключевымисоглашениями,которымирегулируютсяавторскиеправанаopen-sourceпроект,являютсяа)лицензияиб)политикаучастия.
Частымзаблуждениемявляетсямысльотом,чтоopen-sourceпроектнеможетбытьзахвачен.Этосовершенноневерно.Грубоговоря,естьтритипасоглашенийобавторскихправах:
1. «закрытая»лицензия,котораянепозволяетповторнообрабатыватьматериал,классическоеавторскоеправоплюснекоторыеограничительныелицензии;
2. лицензия«freetotake»,котораяпозволяетодностороннююобработкуматериала,напримерApache/BSD/MIT;
3. лицензия«share-alike»,котораяпозволяетдвустороннююобработкуматериала,напримерGPL,LGPLиcc-by-sa.
Представьтесебеди-джея,которыйвыпускаетпопулярныйбитпомодели«freetotake».Ведущиймузыкальныйлейблделаетизбитаремиксивыпускаетего.Тотстановитсяхитом.Итеперьэтановаяверсиязакрыта.Ди-джейнеможетремикситьэтуновуюработу,и,возможно,неможетдажепроигрыватьремикс.Конечно,онможетвзятьсвоюстаруюверсиюиулучшитьее,однакоденьгибудетприноситькоммерческаяверсия.
Надеюсь,выпонимаете,кчемуяклоню.Дажелучшийиндивидуальныйталантнесможетконкурироватьнаравныхскрупнойфирмойсеемаркетинговымиденежнымресурсами.Единственныйспособгарантироватьравныеусловияигрыввойнезаконтрольнадразвитием—двустороннеесоглашениеобобработкематериала.Двустороннеезначит,чтокасаетсяобеихсторон.
Когдалюдиназываютэтугарантиюограничением,остаетсятольковздыхатьпоэтомуповоду.Этокакназыватьзамоквмоеймашине«ограничением»,потомучтооностанавливаетостальныхотприсвоениямоеймашины.Назватьзащитуотворов«ограничением»это….ну,поменьшеймере,неумениеанализировать.Когдаправилаработаютдляобеихсторон,этонеограничение,ОК?!
Какпроисходитзахват?
Давайтеещеразопределимсясцелью.Необходимопредотвратитьзахватopen-sourceпроектакем-тосбольшимиденьгамиивластью,ктонацелилсясобратьурожайспроектадлясвоейличнойвыгоды,засчетсообщества,котороепомогалоразвиватьилисоздалопроект.Мневсеравно,насколько«правомерен»будетэтотзахват,япростообъясняю,какегопредотвратить.
Глава2-Заметкинаполях
31
Лицензияиполитикаучастияявляютсядвумяполовинкамиоднойголоволомки.
Ктовладеетавторскимиправами?Они«сконцентрированы»уоснователейпроектаилиониразделенымеждувсемиучастниками?Этожизненноважныйвопрос.Еслионисконцентрированы,тоэтотривиальнаязадачапопокупкеавторскихправ,разветвлениюпроекта,изменениюлицензииводностороннемпорядке,—иможнодвигатьсявзакрытомнаправлении.Однакоеслиправараспределены,т.е.многиелюдивладеютработой,совместновладеют,товамнужноодобрениевсех(небольшинства,а100%единодушие)дляизменениялицензии.Аэтологистическиневозможно.
Кстати,еслибывытолькознали,скольколюдеймнепредлагалиденьгизакоммерческуюлицензиюнаZeroMQ,выбылибыпоражены(оченьмного).Предложениепростое:япродаюимлицензию«non-LGPL»,ониплатятмнехорошиеденьгииделаютсвоиверсииZeroMQ.Еслибыяспециальнонепозаботилсяоневозможностиэтоговариантадавным-давно,тоябыбылоченьбогатым.Итеперьмиритьсясбедностьюмнепомогаетосознаниетого,чтоZeroMQпереживетменя.
Давайтеещеразпройдемсяпопроблемеспредложениемкоммерческихлицензийдлясовместнойработы.Представьтесебеклуб,которыйприглашаетди-джеевимикшируетихбиты.Потомклубоставляетзасобойавторскиеправаипродаетихзвукозаписывающейкомпании,котораяделаетсвойальбомремиксов,которыепервоначальныеди-джеиуженемогутпроигрыватьбесплатно.Поэтомуда,ясчитаюdual-GPL/коммерческоелицензированиепорочнымипрактиками.
Никтонебудетплатитьзакоммерческуюлицензиюпроекта«freetotake»,потомучтоонимогутпростовзятькодииспользоватьего.Внекоемсмыслеясчитаю,чтоэтоуженеправильно,т.к.нарушаетравенствоправилигрыдлявсех.Ведьочевидно,чтокрупнаякомпаниявыиграетотэтогобольше,чеммаленькиекоманды.Опятьжепредставьтесебенезависимогоди-джея,противостоящегозвукозаписывающимлейбламсовсемиихмаркетинговымиимедийнымисвязямиидоходамиотконцертов.
Теперьперейдемкшагупозахватуномердва:наймразработчиков.
«Нокодвсеещесвободен!»,—говорятлюди.Конечно.Возвращаемсяклейблvsди-джей.Пустьлейблнанимаеттолькоодногоди-джея,ключевогосотрудникаииспользуетего,чтобыпротолкнутькоммерческиймиксальбома.Кудапубликатогдапойдет?
Вамненужнонаниматьвсехучастниковвсообществе,чтобызахватитьего.Влюбомслучайновзятомпроектебудетдва-тритоповыхучастникаиогромнаямассамладших.Наймитедвухтоповивыможетезабратьпроекткудаугодно.Еслирезультатымогутповторнообрабатываться(ремиксабельны),тоэтопутешествиебудетполностью
Глава2-Заметкинаполях
32
справедливопоотношениюктем,ктоучаствовалвпроектераньше.Аеслинеремиксабельно,товсеостальныеучастникиобнаружат,чтоихинвестициииспользуютсяпротивних.
Предотвращаязахват
Язнаютолькооднумодель,котораяпредотвращаетзахватopen-sourceпроектавобластиПО:
1. Лицензиясемейства«GPL»(илиMPLv2,котораяработаетсхожимобразом).2. Распределенныеавторскиеправа
Именнотакястроюopen-sourceпроектыссамогоначала,иэтотребованиеклюбомусообществу,ккоторомуяприсоединяюсь.Вашеправоделатьденьгиневключаетмоеправоиспользоватьмоюработукакконкурентноепреимущество,еслитолькоэтоневзаимовыгодно.
МифобиндивидуальноминтеллектеНаверно,выужепоняли,чтоянесторонникодинокойгениальности.Побольшомусчетуэтообъясняетсятем,что,несмотряначленствоворганизацииМенса(крупнейшая,старейшаяисамаяизвестнаяорганизациядлялюдейсвысокимIQ),япомню,каксовершалнаудивлениегениальныеошибки.Современемясталдумать,чтолюбоеупоминаниеобиндивидуальноминтеллектеявляетсяопасноупрощенныммифом.
Внемвсегдагениальныеличностидумаютнадважнымипроблемами,иврезультатеупорноготрудаонигенерируютрешенияишлифуютихдосовершенства.Иногдаонипереживают«эврика-моменты»,когдаимоткрываютсягениальнопростыеответынасложныепроблемы.Изобретатель,егопроцессизобретения,исключительное,драгоценноеявление,иостальнымлучшеневмешиваться.Историяполнагероями-одиночками.Мыобязаныимнашимсовременныммиром.
Однакоеслиприсмотретьсявнимательнее,тостанетпонятно,чтоэтасказканесоответствуетфактам.Историянепоказываетодинокихизобретателей.Онарассказываетнамовезениилюдей,которыеукралиилиприсвоилисебеправособственностинаидеи,надкоторымиработалимногие.Онаполнапримеровпрогениальныхлюдей,которыепослеудачногопопаданиятратятдесятилетиянабесполезныеибезрезультативныепоиски.СамыеизвестныекрупныеизобретателивродеТомасаЭдисонабылихорошивсистематическомпоиске,которыйвыполнялся
Глава2-Заметкинаполях
33
крупнымикомандами.Этокакзаявить,чтоСтивДжобсизобрелкаждуюпримочку,сделаннуюкомандой«Apple».Этотприятныймифгодитсядлямаркетинга,ноондалекотистины.
Историяпоследнихдесятилетий,котораялучшезафиксированаикоторойсложнееманипулировать,наглядноэтодемонстрирует.Интернетточноявляетсяоднойизсамыхинновационныхибыстроразвивающихсятехнологий,остановлениикоторойимеетсябольшоеколичестводостовернойинформации.Уэтойтехнологиинетизобретателя.Вместоэтогоестьогромнаямассалюдей,которыетщательноиуспешнорешалидлиннуюсериютекущихпроблем,записывалисвоиответыиделалиихдоступнымидлявсех.
ИнновационнаяприродаИнтернетаобеспеченанемаленькойизбраннойгруппойЭйнштейнов.ОнаобеспеченаRFC-документами,которыемогутбытькемугодноиспользованыиулучшены,сотнямиитысячамиумных,хотяинеуникальноумных,людей,программнымобеспечениемсоткрытымкодом,которыйлюбойможетиспользоватьиулучшать.Онапроисходитизобмена,смешиванияимасштабированиясообщества.Онапроисходитизпостоянногоувеличениячислахорошихрешенийиизбавленияотплохих.
Хотя,вотиальтернативнаятеорияинноваций:
1. Естьбезграничнаяобластьпроблем/решений.Словнообластьравнинихолмов,которыемыпытаемсяпреодолеть.Решенияинтересныхпроблемнаходятсянавершинаххолмов.
2. Областьменяетсястечениемвременивзависимостиотвнешнихобстоятельств.Горымогутпревратитьсявравнины,ановыегорымогутвозникнутьтам,гдеихнебыло,современем.
3. Мыможемточновосприниматьтолькотепроблемы,которыеближекнам.Унаснетвозможностиохватитьвзглядомвсеинамостаетсяполагатьсянанашидогадки.Нашметафорическийландшафточеньтуманен.
4. Мыможемприкинуть,чтонамдастивосколькообойдетсязадача,оцениваярешения.Т.е.мыможемпонять,наскольковысокомынаходимся.
5. Естьоптимальноерешениедлялюбойрешаемойпроблемы.Так,улюбогосклонаестьвершина.
6. Мыможемдостичьэтооптимальногорешениямеханически,шагнуввпримерноправильномнаправленииипосмотрев,оказалисьлимывыше,либониже.
7. Нашинтеллектможетускоритьэтотпроцесс,нонезаменитьего.Еслимыумнее—возможномыбудемшагатьбыстрееиличутьдальшевидетьсквозьтуман,ивсе.
Естьнесколькопоследствийэтого:
Глава2-Заметкинаполях
34
Индивидуальнаякреативностьзначитменьше,чемсампроцесс.Болееумныелюдимогутработатьбыстрее,ноонимогутиследоватьвнеправильномнаправлении.Бытьчестнымииобъективныминампомогаетколлективноевидениереальности.Намненужныдорожныекарты,еслиунасхорошоналаженпроцесс.Современем,померетого,какценностьрешенийбудетрасти,будетрастиифункциональность.Мынестолькоизобретаемрешения,сколькооткрываемих.Соболезнованиятворческимнатурам:этовсеголишьобрабатывающийинформациюголем,начищающийсвоесобственноеэгоиозабоченныйподнятиемкармы.Интеллект—этосоциальныйэффект,хотяониощущаетсякакчто-толичное.Человек,отрезанныйотдругих,перестаетдумать.Мынеможемниопределитьпроблемы,ниоценитьихрешениябездругихлюдей.Размериразнообразиесообществаявляетсяключевымфактором.Болеекрупныеиразнообразныесообществаохватываютбольшерелевантныхзадач,решаютихболееточноиделаютэтобыстреемаленькойгруппыэкспертов.
Поэтомукогдамыдоверяемсяэкспертам-одиночкам,ониделаютклассическиеошибки.Онифокусируютсянаидеях,аненапроблемах.Онифокусируютсянанеправильныхпроблемах.Ониделаютнеправильныевыводыоценностирешаемыхпроблем.Ионинепользуютсятем,надчемработают.
КоллективныйИндексИнтеллектаилиКИИ(CII)Ясобираюсьпредложитьинструментпоизмерениюинтеллектасообщества,другимисловами,какточноиэффективносообществоработаетвлюбойвзятыйпериодвремени.Онтакжепоказывает,насколькоприятнобудетучаствоватьвсообществе.
Дляегодемонстрациияранжируюнесколькосетей,организаций,сайтовионлайн-сообществ.Этоненаука,простотворческаяинебрежнаяприкидка.Каквсемизвестно,87%статистикиизобретаетсянаместе,и91%людейпринимаютэтобезвопросов.Явыбралследующиежертвы:
1. Википедия2. Твиттер3. Реддит4. Фейсбук5. Индустриямоды6. Нигерийскийкинематограф,т.н.Нолливуд(Nollywood)
Глава2-Заметкинаполях
35
7. Адвокатыкакпрофессия8. КиноиндустрияГолливуда9. СетьTheFoxNews10. Военные(вкакой-тослучайнойвосточнойстране)
Янебудусудитьоценностиотдельновзятогосообщества.Этоневозможно,ибудетобманчиво.МиссияТвиттера—«набратьбольшеподписчиков»—звучитслабее,чемуВикипедии«собираемзнаниявсегомира».Однаждысформированная,умнаяигибкаятолпаможетзапростосоздаватьновыемиссии,например«свергнутьдиктатора».Онлайн-сообщество,возможно,ценно(длячеловечества)неблагодарясвоейпродукции,асамопосебе.ВслучаеВикипедииилиZeroMQсложноотделитьтолпуотконтента.АвслучаеТвиттераэтоочевидно.Контент—явлениепреходящееизачастуюбесполезное,атолпа—нет.
Япридумалтакуюоценочнуютаблицу:
Глава2-Заметкинаполях
36
Критерий 1.Wk 2.Tw 3.Rd 4.Fb 5.Fa
Четкаямиссия 5 3 2 1 2
Свободноеучастие 5 5 5 5 4
Прозрачность 5 3 5 1 2
Бесплатныеучастники 5 5 5 5 2
Ремиксабельность 5 5 5 4 4
Четкостьпротокола 5 5 5 4 4
Компетентностьвласти 5 4 5 3 4
Нон-трайбализм 4 5 5 5 3
Самоорганизация 5 5 5 5 4
Толерантность 5 5 5 5 4
Измеримыйуспех 5 5 5 5 5
Высокоенаграждение 3 5 5 5 4
Децентрализация 5 5 5 5 5
Свободнаярабочаясреда 5 5 5 5 3
Стандартнаяструктура 4 5 5 5 3
Плавностьобучения 5 5 5 4 3
Позитивность 5 5 5 5 5
Чувствоюмора 5 5 5 5 2
Минимализм 5 5 4 4 3
Разумноефинансирование 5 4 3 3 5
Итоговыйсчет 96 94 94 84 71
Глава2-Заметкинаполях
37
Критерий 6.Nw 7.Lw 8.Hw 9.FN 10.Ml
Четкаямиссия 1 0 0 0 2
Свободноеучастие 3 0 1 2 2
Прозрачность 1 0 0 0 0
Бесплатныеучастники 3 3 2 1 0
Ремиксабельность 3 3 1 1 0
Четкостьпротокола 3 2 3 1 4
Компетентностьвласти 3 1 1 0 1
Нон-трайбализм 3 0 2 0 0
Самоорганизация 4 2 2 0 0
Толерантность 3 2 3 0 0
Измеримыйуспех 5 4 5 5 2
Высокоенаграждение 3 3 2 1 1
Децентрализация 1 1 1 0 1
Свободнаярабочаясреда 2 0 0 0 0
Стандартнаяструктура 3 0 1 0 0
Плавностьобучения 2 3 3 1 5
Позитивность 3 0 2 0 0
Чувствоюмора 3 0 1 1 0
Минимализм 4 1 1 3 0
Разумноефинансирование 3 3 3 2 2
Итоговыйсчет 56 28 34 18 20
ЕслимыможемизмеритьКИИсообществаилиорганизации,значит,мыможемулучшитьего,уделиввниманиеаспектамснизкимиоценками.Втеорииэтодолжносделатьорганизациюумнее,аееучастниковсчастливее.Конечно,довольнохарактерно,чтовоеннаяорганизацияможетработатьтолькоснизкимКИИ.Умнаяармия,скореевсего,просторазойдетсяподомамипереключитсянаReddit.
Глава2-Заметкинаполях
38
СообществоZeroMQМожемлимыцеленаправленностроитьсообщества?
Меняиногдаспрашивают,чтотакогоособенноговZeroMQ.Наэтоявсегдаотвечаю,чтоZeroMQ—возможнолучшийответ,которыйунасестьназлободневныйвопрос
«Каксоздаватьраспределенныепрограммныесредства,которыетребуютсяотнас21век?».
Но,помимоэтого,ZeroMQвыделяетсяблагодарясвоемусообществу.Чтоиотличаетволковотовец.
Естьтриосновныхopensourceпаттерна.Во-первых,когдакрупнаяфирмавыбрасываетнарыноккод,чтобырасправитсясконкурентами.ЭтомодельApacheFoundation.Во-вторых,когдакрошечныекомандыималенькиекомпаниистроятсвоюмечту.Этонаиболеераспространеннаяopensourceмодель,котораяможетбытьнаиболеекоммерческиуспешна.Инаконец,агрессивныеиразнообразныесообщества,всейтолпойпробирающиесясквозьдебрипроблем.ЭтомодельLinux,ивоткнеймыистремимсявZeroMQ.
Сложнопереоценитьмощьиупорствоработающегоopensourceсообщества.Наверно,несуществуетлучшегоспособасозданияпрограммногообеспечениявдолгосрочнойперспективе.Сообществонетолькозанимаетсярешениемсамыхрелевантныхпроблем,ноиделаетэтооптимально,аккуратно,наблюдаязарезультатамигодами,десятилетиями,покаонисохраняютзначение,послечегоспокойнооставляетих.
ЧтобыполучитьмаксимумпользыотZeroMQ,вамнеобходимопониматьсообщество.Вкакой-томоментвамзахочетсяпредложитьрелиз,патчилиаддон.Увасможетвозникнутьжеланиепопроситького-нибудьопомощи.ВыможетезахотетьпринятькоммерческоеучастиевZeroMQ,икогдаяпредупрежувас,чтосообществонамного,намноговажнее,чемкомпания,поддерживающаяегопродукцию,хотяяиявляюсьисполнительнымдиректоромкомпании,этодолжноомногомсказатьвам.
Вэтомразделеярассмотрюнашесообществосразныхсторонивконцеподробнорасскажуонашемдоговореосотрудничестве,которыймыназываем«С4».Вампригодитсяэтаинформациядлявашейсобственнойработы.Крометого,мыуспешноадаптировалиметодZeroMQC4дляпроектовсзакрытымкодом.
АрхитектурасообществаZeroMQ
Глава3-СообществоZeroMQ
39
Вызнаете,чтоZeroMQявляетсяпроектомслицензиейLGPL(примечаниеавтора:мысклоняемсякMozillaPublicLicensev2,котораядействуеттакже,ноявляетсяболеепростой).Насамомделеэтонаборпроектов,построенныхвокругкорневойбиблиотекиlibzmq.Япредставляюэтипроектыкакрасширяющуюсявселенную:
Вцентренаходитсяlibzmq,каккорневаябиблиотекаZeroMQ.ОнанаписананаC++,снизкоуровневымС-API.Коддовольносвоенравен,восновномпотому,чтоонсильнооптимизирован,атакжепотому,чтонаписаннаC++,наязыке,которыйсампосебедовольноковарныйидрянной.БольшуючастьоригинальногокоданаписалМартиСустрик(MartinSustrik).Сегоднядесяткилюдейзанимаютсяподдержкойегоразличныхчастей.Уlibzmqестьоколо50биндингов.Этоиндивидуальныепроекты,которыесоздаютвысокоуровневыеAPIдляZeroMQ,или,покрайнеймере,отображаютнизкоуровневыйAPIнадругихязыках.Этипривязкиразличаютсяпокачеству,отпробперадошедевров.НаиболеевпечатляющейизнихявляетсяPyZMQ,котораябылаоднойизпервыхпроектовсообществаZeroMQ.Есливыразрабатываетебиндинг,вампростонеобходимоизучитьPyZMQ—вдохновившись,высделаетевашкодивашесообществотакимижекрутыми.Умногихязыковестьмногочисленныебиндинги(Erlang,Ruby,C#,например),написанныеразнымилюдьмивразноевремя,сиспользованиемразныхподходов.Мыникакимобразомэтонерегулируем.Нет«официальных»биндингов.Используятотилидругой,выголосуетезанего,участвуетевегоразвитииилиигнорируетеего.Естьнескольконовыхвариантовиспользованияlibzmq,начинаясJeroMQ,полныйJavaпереводбиблиотеки,которыйсейчасявляетсябазойдляNetMQ,C#стек.ЭтистекипредлагаютпохожиеилиидентичныеAPIииспользуюттотжепротокол(ZMTP),чтоиlibzmq.Набазебиндинговсуществуюттысячипроектов,которыеиспользуютZeroMQилипостроенынанем.Большинствоизнихнеявляютсячастьюофициальногосообщества,лишьнекоторыеизних,напримерZyreиMalamute.
Libzmq,большинствобиндинговинекоторыеизвнешнихпроектовприсутствуютв«организации»сообществаZeroMQнаGitHub.Этаорганизация«управляется»группойнаиболеемладшихавторовбиндингов.Таммалочемнужноуправлять,т.к.онопочтисамоуправляемоивнастоящеевремяконфликтовненаблюдается.
iMatix,моякомпания,играетспецифическуюрольвсообществе.Мывладеемторговымимаркамииследимзакаждой,чтобыбытьувереннымивтом,чтоесливыскачаетепакетсназванием«ZeroMQ»,выможетебытьдоверятьегосодержимому.Былонесколькопопытокнесанкционированногоиспользованияимени,видимопиратыдумали,что«свободноепрограммноеобеспечение»значитничейноеибеззащитное.Прочитавэтуглаву,выувидите,каксерьезномывоспринимаемработу,проделанную
Глава3-СообществоZeroMQ
40
наднашимпрограммнымобеспечением(апод«нами»яимеюввидусообщество,анекомпанию).iMatixподдерживаетсообщество,следязафункционированиемвсего,чтоназывается«ZeroMQ».Мытакжевкладываемденьгиивремявпрограммноеобеспечениеиегоразвертывание.
Мынезанимаемсяблаготворительностью.ZeroMQявляетсякоммерческимпроектом,иондовольноприбыльным.Прибыльделитсянабольшоеколичестволюдей,участвовавшихвегоразвитии.Всеобстоитименнотак,незамысловато:потратьтевремянато,чтобыстатьэкспертомвZeroMQилинадстройтечто-тополезноеповерхZeroMQ,ивывыиграетеотростакакиндивидуум,командаиликомпания.iMatixполучаеттежевыгоды,чтоивсеостальныевсообществе.Этовзаимовыгодныеотношениядлявсех,кроменашихконкурентов,которыепонимают,чтосэтойугрозойимнесправитсяинеминоватьее.ZeroMQбудетдоминироватьвбудущеммиреширокораспределенногопрограммногообеспечения.
Моякомпаниянепростоохраняетсообщество—мытакжесоздавалисообщество.Мызанималисьэтимцеленаправленно:воригинальномтехническомописанииZeroMQот2007г.указано,чтобылодвапроекта.Одинбылтехнический,нацеленныйнасозданиелучшейсистемыдоставкисообщений.Второйзаключалсявпостроениисообщества,котороемоглобыпривестипрограммноеобеспечениекуспеху.Программноеобеспечениеумирает,носообществоживет.
Каксоздаватьпо-настоящемубольшиеархитектуры
Существуютдваспособасделатьпо-настоящемумасштабноепрограммноеобеспечение,какужеговорилось(покрайнеймере,теми,кточитаетэтопредложениевслух).
Первыйспособ
—броситьогромныеобъемыденежныхсредствипроблемнаусмотрениеумныхлюдейинадеяться,чторезультатомбудетнекрестнавашейкарьере.Есливыоченьвезучи,исоздаетепродукт,основываясьнаогромномопыте,ивысмоглиудержатькомандывсборе,инестремитеськтехническомусовершенству,ивпредьудачаотваснеотвернется,этосработает.
Ноазартныеигрыначужиесотнимиллионовподходятневсем.Длявсехпрочих,ктохочетсоздатьмасштабноепрограммноеобеспечение,есть
Второйспособ
—opensource,точнее,свободноепрограммноеобеспечение.Иесливыспрашиваете,какаясвязьмеждулицензиейпрограммногообеспеченияиегомасштабом,тоэтоправильныйвопрос.
Глава3-СообществоZeroMQ
41
ГениальныйипрозорливыйЭбенМоглен(EbenMoglen)однаждысказал,чтолицензиясвободногопрограммногообеспечениясловноконтракт,наосновекоторогостроитсясообщество.Когдаяпервыйразэтоуслышал,околодесятилетназад,уменяпоявиласьидея—можемлимыцеленаправленностроитьсообщества?
Полученныйдесятьлетспустяответ—«да»,болеетого,теперьэтопочтинаука.Яговорю«почти»,потомучтоунасдосихпорнетдостаточногоколичествадоказательствтого,чтолюдиделаютэтоцеленаправленно,нетдокументациииуверенности,чтоэтотпроцессвозможноточновоспроизвести.ИменноэтояипытаюсьисправитьспомощьюСоциальнойАрхитектуры.ZeroMQпоявилсяпослеWikidot,послеDigitalStandardsOrganization(Digistan)ипослеFoundationforaFreeInformationInfrastructure(FFII,негосударственнаяорганизация,котораяборетсяпротивпатентовнапрограммноеобеспечение).Всеэтопоявилосьпослемножестваменееуспешныхсообществ,вродеXitamiиLibero.Вывод,которыйясделализдолгойработысразличнымипроектами,заключаетсявследующем:есливыхотитесоздатьпо-настоящемумасштабноеидолговечноепрограммноеобеспечение,стремитеськпостроениюсообществасвободногопрограммногообеспечения.
Психологияархитектурыпрограммногообеспечения
ОдинизпринциповСоциальнойАрхитектурызаключаетсявтом,чтоспособнашейорганизацииважнеетого,кеммыявляемся.
ДиркжанОктман(DirkjanOchtman)обратилмоевниманиенаопределениеархитектурыпрограммногообеспечениявВикипедии:«совокупностьструктур,требуемыхдляпониманиясистемы,котораяобъединяетэлементыпрограммногообеспечения,связимеждунимииихпринадлежность».Дляменяэтабессодержательнаяицикличнаяболтовняслужитхорошимпримеромтого,какунизительномаломызнаемотом,чтонасамомделеважноприсозданиимасштабнойархитектурыпрограммногообеспечения.
Архитектура—этоискусствоинаукасозданиякрупныхискусственныхструктур,используемыхчеловеком.Еслиячтоипонялиуспешноприменялнапротяжениитридцатилетприсозданиивсеболеекрупныхсистемпрограммногообеспечения,такэтото,чтопрограммноеобеспечение—этовсеолюдях.Крупныеструктурысамипосебебессмысленны.Важното,каконифункционируютдляиспользованияихлюдьми.Авпрограммномобеспечении,человеческоеначинаетсяспрограммистов,которыеделаютего.
Глава3-СообществоZeroMQ
42
Основныепроблемывархитектурепрограммногообеспечениякроютсявчеловеческойпсихологии,аневтехнологиях.Нашапсихологияпо-разномуможетвлиятьнанашуработу.Ямогупривестипримерытого,какгруппалюдейсловностановитсяглупеепомеретого,каконарасширяется,иликогдаимприходитсяработать,будучиразделеннымиогромнымрасстоянием.Значитлиэто,чточемменьшекоманда,темонаэффективней?КакжетогдатакоекрупноеглобальноесообществокакZeroMQумудряетсяуспешноработать?
СообществоZeroMQвозниклонеслучайно.Егоконструкциябылацеленаправленноразработана—мойвкладвтеранниедни,когданачердакевБратиславепоявилсякод.Разработкаосновываласьнамоемнаучномпитомце,«СоциальнойАрхитектуре»,которуюВикипедияопределяеткак«сознательнаяразработкасреды,котораяпоощряетпроявлениеопределенныхпаттерновсоциальногоповедениявцеляхдостижениякакой-либоцелиилицелей».Моеопределениеболееконкретно:«процессилипродуктпланирования,разработкиисозданияонлайнсообщества».
ОдинизпринциповСоциальнойАрхитектурызаключаетсявтом,чтоспособнашейорганизацииважнеетого,кеммыявляемся.Однаитажегруппа,организованнаяпо-другому,можетвыдатьсовсемдругиерезультаты.МыкакпирывсетиZeroMQ,инашикоммуникационныепаттернысущественновлияютнанашеповедение.Обычныелюдиприналаженныхсвязяхмогутпревзойтигруппуэкспертов,использующихплохиепаттерныповедения.ЕсливыявляетесьразработчикомкрупногоZeroMQприложения,вампридетсяпомогатьдругимнаходитьправильныепаттернысовместнойработы.Сделайтеэтохорошо,ивашпроектожидаетуспех.Сделайтеэтоплохо,ивашпроектпровалится.
Итак,вотмойкороткийсписокпсихологическихэлементовСоциальнойАрхитектуры:
Глупость:нашаментальнаяшинаимеетпределы,поэтомувкакой-томоментмывсеможемтупить.Архитектурадолжнабытьпростойдляпонимания.Этоправилономеродин:простотаважнеефункциональности,всегда.Есливынеможетевникнутьвструктурусерымхолоднымутромпонедельникадотого,каквыпитькофе,значит,онаслишкомсложна.Эгоистичность:мыдействуемтолькоизэгоистическихпобуждений,поэтомуархитектурадолжнасоздаватьпространствоивозможностьдляэгоистичныхпоступков,откоторыхвыиграютвсе.Эгоистичностьзачастуюявляетсякосвеннойинеявной.Например,ямогупотратитьнесколькочасов,объясняячто-токому-то,потомучтоэтоможетпригодитьсямнесамомупозже.Лень:мыделаеммножествопредположений,которыепотомоказываютсяневерными.Мырадуемся,когдаможемсминимальнымиусилиямиполучитьрезультатилипроверитьпредположениебыстро,поэтомуархитектурадолжнапредусматриватьтакуювозможность.Т.е.онадолжнабытьпростой.
Глава3-СообществоZeroMQ
43
Зависть:мызавидуемдругим,аэтозначит,чтомыпреодолеемнашуглупостьилень,лишьбыдоказать,чтоонинеправы,ичтомыможемихпревзойти.Поэтомуархитектурадолжнапредусмотретьпространстводляпубличныхсоревнований,счеткимиипонятнымивсемправилами.Страх:мынежелаемидтинариск,еслиестьшанс,чтомыможемвыглядетьглупо.Страхпораженияявляетсяглавнойпричинойтого,чтолюдистановятсяконформистамииследуютзабольшинством,дажееслионоошибается.Архитектурадолжнапозаботитьсяотом,чтобылюдимоглипростоинедорогопроводитьэкспериментыскрытно,достигатьуспехабезнаказаниявслучаенеудачи.Взаимодействие:мыприложимусилия,потратимденьги,нонакажемзажульничествоипринудимкисполнениюсправедливыхправил.Архитектурадолжнаустанавливатьстрогиеправила,которыебудутуказывать,каклюдямработатьвместе,аненато,надчемимработать.Конформизм:мысрадостьюподдаемсяконформизму,из-застрахаилилени,т.е.еслипаттерныповеденияхорошие,понятноизложеныизадокументированы,иобязательны,мыестественнымобразомкаждыйразбудемвыбиратьправильныйвариантповедения.Гордость:мыоченьбеспокоимсязанашсоциальныйстатус,имыбудемусерднотрудиться,толькочтобыневыглядетьглупымиилинекомпетентныминапублике.Архитектурадолжнаобеспечить,чтобыкаждаячастьнашейработыбылаподписана,чтобымыбессонныминочамиворочалисьвкроватиипереживалиотом,чтодругиескажутонашейработе.Жадность:мыкрайнехозяйственныеживотные(см.эгоистичность),поэтомуархитектурадолжнаэкономическистимулироватьнастратитьресурсынадостижениерезультата.Пустьэтобудетшлифовканашихпрофессиональныхнавыков,илибуквальнополучениеденегзанекиенавыкииликомпоненты.Неважнокакой,ноэкономическийстимулобязанприсутствовать.Думайтеобархитектуре,какорынке,анекакобинженернойконструкции.
Этистратегиигодятсякакдлякрупных,такидлямаленькихорганизацийиликоманд.
Важностьконтрактовинеограниченнаясобственность
Проект,укоторогохорошонаписанконтракт,определяющийусловияегозавершения,развалитсяснамногоменьшейвероятностью.
Важностьконтрактов
Глава3-СообществоZeroMQ
44
Давайтеобсудимспорный,новажныйвопросотом,какуюлицензиювыбрать.Ябывыделил«BSD»вместесMIT,X11,BSD,Apacheипрочимипохожимилицензиями,и«GPL»сGPLv3,LGPLv3иAGPLv3.Главнымотличиемявляетсяраспространениеправналюбыеверсиифорков,чтозащищаетлюбуюорганизациюотзахватапрограммногообеспечения,итемсамымделаяего«свободным».
Техническилицензиянапрограммноеобеспечениенеявляетсяконтрактом,ведьвыничегонеподписываете.Новширокомсмыслеудобносчитатьееименноконтрактом,т.к.онаподразумеваетобязательствавсехсторонипозволяетпринуждатькихисполнениювсуде,всоответствиисавторскимправом.
Выможетеспросить,зачемнамвообщенужныконтрактыприработесopensource?Ведьглавноедоброжелательность,бескорыстнаясовместнаяработалюдей.Выуверены,чтопринцип«лучшеменьшедалучше»всегдаздесьуместен?Незначитли,чтобольшеправил—меньшесвободы?Намнасамомделенужныадвокаты,чтобырассказывать,какнамработатьвместе?Кажетсяциничнымидажеконтрпродуктивнымнасаждатьограниченияиправилавсчастливомopensource,всообществесвободногопрограммногообеспечения.
Нонастоящаянатурачеловекадалеконетакпрекрасна.Мынасамомделениангелыинидьяволы,апростосвоекорыстныепобедители,последниезвеньяединойцепипобедителейдлиннойвмиллиардлет.Вбизнесе,сердечныхделахилиприсовместнойработемылибоборемсяиспорим,либооставляемих.
Посмотритенаэтосдругойстороны:усовместнойработыестьдвакрайнихисхода.Либонеудача,несущественнаяибесполезная,вслучаекоторойлюбойнормальныйчеловекспокойноуйдет.Либоуспех,существенныйиценный,вслучаекоторогомыначнемборьбузавласть,контрольи,часто,заденьги.
Хорошонаписанныйконтракткакраззащищаеттеценныеотношенияотконфликта.Супружескиеотношениясменьшейвероятностьюокончатсяразводом,еслиегоусловиябыличеткооговоренызаранее.Деловоепредприятие,вкоторомстороныоговорилирешениеразличныхтипичныхконфликтов,например,когдаоднасторонаприсваиваетклиентов,либоматериальныеценностидругойстороны,снамногоменьшейвероятностьюзакончитсяраздором.
Аналогичнопроектпопрограммномуобеспечению,укоторогохорошонаписанконтракт,определяющийусловияегозавершения,снамногоменьшейвероятностьюразвалится.
Альтернативнойкажетсявариантспоглощениемпроектаболеекрупнойорганизацией,котораястрахомпотериобеспеченияибрендасможетсплотитькоманду.Посвоемуопытузнаю,чтоуэтогоестьсвояцена,ичастоэтозаканчиваетсяполучением
Глава3-СообществоZeroMQ
45
преимуществболеебогатымиучастниками(которыемогутпозволитьсебеиногдаогромныерасходы).
Вopensourceпроектеилипроектепосвободномупрограммномуобеспечению,распадобычнопринимаетформуфорка,когдасообществоразделяетсянадвеилиболеегруппы,укаждойизкоторойестьсвоевидениебудущего.Вовремямедовогомесяца,которыйможетрастянутьсянагоды,проектунестрашенразрыв.Новоткогдапроектначинаетстоитьденег,иликогдаосновныеегоавторыэмоциональновыгорают,добросовестностьиблагородствоулетучиваются.
Поэтомуприобсуждениилицензийнапрограммноеобеспечение,когдаречьидетовашемкодеилииспользуемомвамикоде,немногоцинизманеповредит.Незадавайтесьвопросом:«какаялицензияпривлечетбольшепоследователей?»,т.к.ответзависитотформулировкимиссииипроцессаучастия.Спроситесебя:«еслипроектокончитсябоемиразделитсянатричасти,какаялицензияспасетнас?».Или:«есливсюкомандуподкупитвраждебнаяфирмасцельюприсвоениясебекода,какаялицензияубережетнас?».
Долгоевыживаниетребуетбытьстойкимивтяжелоевремя,нопозволяетнаслаждатьсяхорошимивременами.
КогдаBSD-проектыветвятся,онинемогутслегкостьюслитьсяопять.Насамомделе,когдавозникаетодностороннийфоркBSD-проекта,планомернопроисходитследующее:BSD-кодстановитсячастьюкоммерческогопроекта,вотчтопроисходит.КогдажеслучаетсяфоркGPL-проекта,егослияние—обычноедело.
ПриведууместнуюздесьисториюоGPL.Хотясообществапрограммистов,работающихсоткрытымкодом,ужебылиширокораспространеныв1980-хгодах,онивсеещеиспользовалипростыелицензии,которыеработалидотогомомента,покапроектненачиналпривлекатьнастоящиеденьги.ВтовремябылсолидныйтекстовыйредакторEmacs,изначальнопостроенномнаLispРичардомСтоллманом.ДругойпрограммистДжеймсГослинг(которыйпотомявилнамJava)переписалEmacsнаСспомощьюсообщников,предполагая,чтоонбудетоткрытым.СталлманвзялэтоткодзаосновудлясвоейСверсии.Гослингпозжепродалкодкомпании,котораявзялаизаблокировалавозможностьдлякогобытонибылораспространениеконкурирующегопродукта.Столлманпосчиталэтупродажусовместнойработыкрайненеэтичнымпоступкоминачалразвиватьмногоразовуюлицензию,котораябызащитиласообществаотподобного.
ВитогеэтовылилосьвУниверсальнуюобщественнуюлицензиюGNU(GNUGeneralPublicLicense),котораяиспользовалатрадиционноеавторскоеправодлязащитывозможностиповторнойпереработкиматерила(ремиксабельности).Этобылэлегантныйприем,которыйперенялиивдругихсферах,например,CreativeCommons
Глава3-СообществоZeroMQ
46
дляфотографийимузыки.В2007г.вышлавсветверсия3лицензии,котораябылаответомназапоздалыеатакиMicrosoftипрочих.Онапревратиласьвдлинныйисложныйдокумент,нокорпоративныеспециалистыпоавторскомуправухорошознакомысним,инамоейпамятиоченьмалокомпанийосмеливаютсяиспользоватьпрограммноеобеспечениибиблиотекиподлицензиейGPL,приусловии,чтограницыобозначенычетко.
Такимобразом,хорошийконтракт—аясчитаю,чтосовременнаяGPLидеальнадляпрограммногообеспечения—позволяетпрограммистамработатьвместебезпредварительныхсоглашений,организацийилиубежденийвпорядочностиидоброжелательности.Сотрудничатьстановитсядешевле,аконфликтыоборачиваютсяздоровойконкуренцией.GPLнепростоопределяет,чтобудетсфорком,—онапоощряетфоркикакинструментдляэкспериментированияиобучения.Где-тос«болеелиберальной»лицензиейфоркможетпогубитьпроект,ноGPL-проектыразвиваютсяблагодаряфоркам,потомучтоуспешныеэкспериментымогутбытьобратновключены,согласноконтракту,висходныйпродукт.
Да,естьмногопроцветающихBSD-проектовимногомертвыхGPL-проектов.Обобщатьвсегдаплохо.Судьбапроектазависитотмногихпричин.Однаковспортивныхсоревнованияхстоитиспользоватьлюбыепреимущества.
ДругойважнойчертойпротивостоянияBSDиGPLявляется«утечка»—такяназываюеепотому,чтоонанапоминаетмнепроцесснаполненияводойемкости,наднекоторойестьотверстие,небольшое,носущественноедлярезультата.
Выпейменя
Вотвамистория.Онапроизошласостаршимшуриномдвоюродногобратадругамоегоколлегипоработе.Егозвали,ивсеещезовут,Патрик.
Патрикбылспециалистомвобластиинформатикискандидатскойстепеньювобластисетевыхтопологий.ОнпотратилдвагодаисвоисбережениянасозданиеновогопродуктаивыбраллицензиюBSD,т.к.верил,чтоонапринесетемубольшепризнания.Онработалусебяначердаке,ущемляясебявовсем,исгордостьюопубликовалработу.Людиаплодировали,ведьработабылапростофантастическая,егоэл.почтазагуделаактивностью,патчамиисчастливойболтовней.Многиекомпаниирассказывалиему,какмногомиллионовонисэкономили,используяегоработу.Некоторыедажеемузаплатилизаконсультациииобучение.Егоприглашаливыступатьнаоднуконференциюзадругой,хотьбейджикисосвоимименемсобирай.Онначалсвоймаленькийбизнес,нанялдруганаработу,сталмечтатьозаоблачныхвершинах.
Глава3-СообществоZeroMQ
47
Нооднаждыкто-топоказалемуновыйпроект,подлицензиейGPL,которыйпредставлялсобойфоркегоработыснекоторымиулучшениями.Онбылраздражен,расстроенивсеспрашивал,как—друзьяпооткрытомукоду!—каконимоглиподобнымбесстыжимобразомукрастьегокод.Тогдабыломногодолгихрассужденийотом,законноливыпускатьегоBSD-кодподлицензиейGPL.Оказалось,чтода.Онпыталсяигнорироватьновыйпроект,новскорепонял,чтовыходящиекнемуновыепатчиуженельзяслитьсегособственнойработой!
Дальшехуже:GPL-проектсталнабиратьпопулярность,инекоторыеосновныепоследователиПатриканачалиделатьсначаланебольшие,апотомвсеболеесолидныепатчикнему.Иопятьоннемогиспользоватьэтидополнения,итогдаонпочувствовалсебяпокинутым.Патриквпалвдепрессию,егоподружкаушлаотнегоквалютномуброкеру,которого,чтозабавно,зовутПатрис,ионпересталработатьнадпроектомвообще.Ончувствовалсебяпреданнымидослезжалким.Онуволилсвоегодруга,которыйвоспринялэтотяжелоипотомвсегдаоченьнелестноонемотзывался(«closetbanjoplayer»).ВитогеПатрикустроилсянаработунадолжностьпроектногоменеджеравоблачнойкомпаниииксорокагодамсовсемпрекратилпрограммироватьрадиудовольствия.
БедныйПатрик.Мнеегопочтисталожаль.Когдаяспросилего:«ПочемутыневыбралGPL?»,—онответил:«Потомучтоограничивающаявируснаялицензия».«Пустьутебяиестьдокторскаястепеньипустьтыстаршийшуриндвоюродногобратадругамоегоколлегипоработе,нотыидиот,иМоникаправильносделала,чтобросилатебя.Тыопубликовалсвоюработу,предлагаялюдямукрастьтвойкод,акогдалюдисделалиименноэто,тырасстроился.Чтоещехуже,тывелсебялицемерно,ведьпокаониделалиэтотайно,тыбылсчастлив,нокогдаониоткрытозаявилиобэтом,тыпочувствовалсебя,видители,покинутым».
Наблюдатьзатем,кактвоюработузахватилаболеехитраякомандаииспользуетеепротивтебя—пытка,такзачемдопускатьтакуювозможность?Любойпроприетарныйпроект,которыйиспользуетBSD-код,захватываетего.ПубличныйGPL-форк,можетпоказатьсяоскорбительным,нотаквыточнонеподставитесь.
BSD—словнолакомство.Ябуквально(насамомделеметафорически)слышушепот«выпейменя»,такимтихимголоском,которым,бывает,говоритсвамибутылкалучшегопивавмире—аэто,безсомнения,Orval,сваренноедревнимипочтиисчезнувшиморденоммолчаливыхбельгийскихмонаховLesGarsLabasQuiFabriquel'Orval.ЛицензияBSD,какиегоблизкийклонMIT/X11,быласпециальноразработанауниверситетом(КалифорнийскимуниверситетомвБеркли)чтобыбезкорыстолюбивыхпобужденийвыдатьработуилиусилия.Этобылспособпротолкнутьсубсидируемыеразработкипоцененижесебестоимости,ценовойдемпингсцельювыходанарынок.
Глава3-СообществоZeroMQ
48
BSD—отличноестратегическоерешение,ноподходиттолькокрупным,хорошофинансируемыминститутам,которыемогутпозволитьсебеиспользоватьПервыйспособ.ЛицензияApache—тажеBSD,тольковкостюме.
Длянас,капитановмалогобизнеса,которыепересчитываютсвоисредствакакпоследниепули,утечкаработыилиусилийнеприемлема.Здоровобылобыперекроитьрынок,номынеможемпозволитьсебесубсидироватьнашихконкурентов.СетевойстекBSDпривелкпоявлениюWindowsвинтернете.Мынеможемпозволитьсебебитвыстеми,скеммыпоприродесвоейдолжныбытьсоюзниками.Мынеможемпозволитьсебеошибкифундаментальногобизнеса,потомучтовитогенампридетсяувольнятьлюдей.
Всесводитсякповеденческойэкономикеитеорииигр.Типлицензии,которуюмывыбираем,влияетнаэкономикутех,ктоиспользуетнашуработу.Виндустриипрограммногообеспеченияестьдрузья,врагиипища.BSDвыставляетнасвглазахдругихобедом.Закрытыйкод—врагами(вамнравитсяплатитьлюдямзапрограммы?).ОднакоGPL,заисключениемПатрика,—союзниками.ЛюбойфоркZeroMQявляетсялицензионносовместимымсZeroMQ,дотогомомента,когдамыпоощряемфоркивкачествеценныхинструментовдляэкспериментирования.Да,кажетсянепривычнымнаблюдать,каккто-тозабираетутебяигрушкуивозитсясней,но—выможетевлюбоймоментвзятьееобратно.
Процесс
Есливыдосихпорсоглашалисьсомной—отлично!Теперьяобъяснюсампроцесспостроенияopensourceсообщества.ВоткакмыпостроилииливырастилииличутковвелисообществоZeroMQвмир.
Вашацелькаклидерасообщества—мотивироватьлюдейдобратьсятудаиисследовать,убедитьих,чтоэтобезопаснодлянихидляокружающих,награждатьихвслучаеуспешныхоткрытийигарантироватьим,чтосвоимзнаниемонимогутподелитьсясдругими(непотому,чтомыпросимих,инепотому,чтоонищедрые,апотому,чтотаковЗакон).
Этоповторяющийсяпроцесс.Выделаетемаленькийпродукт,засвойсчет,нонавидуувсех.Потомвыстроитемаленькоесообществовокругпродукта.Еслиувасмаленький,нонастоящийхит,тогдасообществопоможетразработатьипостроитьследующуюверсию,истанетбольше.
Апотомэтосообществосоздастследующуюверсиюит.д.Очевидно,чтоприэтомвыостаетесьчастьюсообщества,возможнодажесамымглавнымегоучастником,ночембольшеконтролявыхотитенадматериальнымирезультатами,темменьшелюдей
Глава3-СообществоZeroMQ
49
захотятучаствовать.Запланируйтесвоюотставкудотого,каккто-торешит,чтовыихследующаяпроблема.
Безумство,красотаипростота
Вамнужнатакаяцель,котораябудетдостаточнобезумнойипростой,чтобывытащитьлюдейизкроватиутром.Вашесообществодолжнопривлекатьлучшихлюдей,аэтотребуетчего-тоособенного.ВслучаесZeroMQмыговорили,чтомысобираемсясоздать«Быстрейшую.Передачусообщений.Всегда»,иэтопримерхорошегомотиватора.Еслибымысказали,чтомысобираемсясделать«изящныйтранспортныйуровень,которыйсоединитвседвижущиесяэлементывашегопредприятиядешевоигибко»,мыбыпровалились.
Такжевашаработадолжнабытьпрекрасной,полезнойздесьисейчасипривлекатьвнимание.Вашиучастники—пользователи,которыехотятузнатьчутьбольше,чемонизнаютсейчас.Сделайтееепростой,элегантнойибрутальночистой.Людидолжныиспытыватьэмоцииотиспользованиявашихтрудов.Онидолжнычувствоватьчто-то,иесливыаккуратнорешилихотябыоднубольшуюпроблему,которуюонидоэтогодаженеосознавали,маленькойчастьюдушионибудутсвами.
Ваштруддолженбытьпростымдляпонимания,использованияиприсоединения.Слишкоммногиепроектыобремененыпрепонамидляприсоединениякним:поставьтесебянаместодругогочеловекаиувидьтепричины,покоторымонпришелквамнасайт,думая«хм,интересныйпроект,но…»,ипотомушел.Выхотите,чтобыониосталисьипопробовали,хотябыраз.ИспользуйтеGitHubипоставьтетамтрекерзадач.
Есливыправильновсеэтосделаете,вашесообществобудетумным,ночтоболееважно,онобудетинтеллектуальноигеографическиразнообразно.Этонасамомделеважно.Группасхожемыслящихэкспертовнесможетхорошоисследоватьландшафтпроблемы.Ониимеюттенденциюдопускатьбольшиеошибки.Разнообразиевсегдапревалируетнадобразованностью.
Незнакомец,позвольтепредставитьвамНезнакомца
Какчастодвоелюдейдолжнысогласовыватьсвоидействиявслучаесовместнойработы?Вбольшинствеорганизаций,оченьчасто.Новыможетесвестикнулюэтунеобходимость,итогдалюдисмогутработать,даженевстретившисьниразулично,непринявучастиевтелеконференции,вделовойпоездке,необсудивРолииОбязанностивокружениинеприличнобольшойкучибутылокдешевогокорейскогорисовоговина.
Глава3-СообществоZeroMQ
50
Вампотребуютсяхорошонаписанныеправила,разработанныекем-нибудьциничным,вродеменя,чтобыпризватьнезнакомцевквзаимовыгодномусотрудничествувместотого,чтобыконфликтовать.GPLбудетхорошимстартом.GitHubисегостратегией«форк-слияние»будутхорошимпродолжением.Апотомвампотребуетсячто-товроденашейкнигиправилС4дляконтролятого,какнасамомделеосуществляетсяработа.
С4,аяиспользуюеетеперьдлякаждогоновогоopensourceпроекта,содержитдетальныеипроверенныеответынабольшинствотипичныхошибок,которыесовершаютлюди:например,такойгрех,какработаофлайнвукромномместесдругими«потомучтоэтобыстрее».Прозрачностьимеетключевоезначениядляобретениядоверия,безчеговсвоюочередьнебудетмасштаба.Пустькаждоеизменениебудетнавидутакже,какивесьпроцесс,итогдавысможетеполностьюдоверятьрезультатам.
Другимсмертнымгрехом,вкоторыйвпадаютмногиеopensourceразработчики,являетсямнениеотом,чтоонивышеостальных.«Яосновалэтотпроект,ктомужемойуровеньинтеллектавыше,чемудругих».Этонетольконескромноигрубо,ичастоневерно,этоещеплоходлядела.Правиладолжныраспространятьсянавсеходинаково,безразличий.Вы—частьсообщества.Вашаработа,какоснователяпроекта,заключаетсяневтом,чтобынавязатьвашевидениепродуктаостальным,автом,чтобыустановитьхорошие,честныеисоблюдаемыеправила.
Неограниченнаясобственность
Однимизсамыхприскорбныхвымысловиндустриизнанийзаключаетсявтом,чтоидеиявляютсясобственностью.Этусредневековуючушьследуетпохоронитьвследзарабством,однакоонадосихпорприноситслишкоммногоденегслишкоммногимвлиятельнымлюдям.
Идеидешевы.Авотчтоявляетсясобственностью,такэтотатяжелаяработа,которыемыделаем,создаваярынок.«Какпотопал,такиполопал»—этоправильнаямодельдлявдохновениялюдейнатруднуюработу.Будьтоморальныйавторитетвпроекте,деньгизаконсультации,продажаторговоймаркибогатойикрупнойкомпании:есливысделалиэто,выэтимвладеете.Нонасамомделевашглавныйактив,которыйопределяетвашпотенциал—«посещаемость»,участникиввашемпроекте.
Дляэтогопотребуетсянеограниченноеколичествосвободногопространства.Ксчастью,GitHubрешилэтупроблемузанас,такчтонасмертномодреябудуемублагодарен(вжизнислишкоммноговещей,зачтояблагодарен,ивсездесьнеперечислить,т.к.унасестьтолькостостраницилиоколотого,ноэтооднаизтакихвещей).
Глава3-СообществоZeroMQ
51
Вынесможетемасштабироватьединственныйпроектсомногимивладельцамитак,каквымоглибымасштабироватьнескольконебольшихпроектов,укаждогоизкоторыхменьшесобственников.Когдамыпринимаемфорки,человексможетстать«владельцем»,одинразкликнув.Итогдаемунужнолишьубедитьостальныхприсоединиться,продемонстрировавимсвоюуникальнуюценность.
ПоэтомувZeroMQмыстремилисьоблегчитьпроцесснаписаниябиндинговповерхкорневойбиблиотеки,асамипересталипытатьсяихделать.Этодаловозможностьдругимзанятьсяэтим,статьихвладельцамиипоставитьсебеэтовзаслугу.
4шагаксамоуправляемомусообществуЯбыхотел,чтобысообществобылополностьюсамоуправляемо,и,возможно,когда-нибудьтакибудет,нопокаэтонетак.ZeroMQблизкокэтому,нопомоемуопытусообществутребуетсячетыревещи:
Во-первых,простопотому,чтобольшинстволюдейслишкоммилые,намтребуетсянекоесимволическоелидерствоиливладельцы,которыебудутвыступатьконечнымиарбитрамивслучаевозникновенияконфликта.Обычноэтооснователисообщества.Явидел,каксэтимуправляетсясамоизбраннаягруппа«старших»,ностарикислишкомлюбятпоболтать.Явидел,каксообществараскалываются,сталкиваясьсвопросом«ктоглавный?»,исоздаютюридическиелицассоветомдиректоров,которыйтолькоусугубляетспорыоконтроле.Можеттакполучается,т.к.кажется,чтоесть,чтоделить.Нооднимизнастоящихпреимуществсвободногопрограммногообеспеченияявляетсяегоремиксабельность,поэтомувместотого,чтобыдратьсязапирог,простоотщипните«вилкой»кусочек.
Во-вторых,сообществамтребуютсяправилажизни,иещеюрист,способныйэтиправиласформулироватьизаписатьих.Правилакритическиважны—будучихорошосоставленными,ониисключаюттрения.Анеправильносоставленные,илиигнорируемые,приведуткраздорамисложностям,которыеотпугнутбольшуючасть,оставивспорящуюгруппувоглавегорящегодома.ЯсампробовалсоздатьуниверсальныеправиладляZeroMQипредыдущихсообществ,поэтому,наверно,намнетакужинужныюристы.
В-третьих,сообществамнужнанекотораяфинансоваяподдержка.Этиострыерифыпотопилинеодинкорабль.Есливыдержитесообществонасухомпайке,онобудетболеекреативным,ноключевыеучастникибудутэмоциональновыгорать.Есливывольетевнегослишкоммногоденег,топривлечетепрофессионалов,которыеникогданескажут«нет»,исообществопотеряетсвоеразнообразиеикреативность.Есливысоздадитеобщийфонднараздачу,толюдибудутбороться(ияростно)занего.В
Глава3-СообществоZeroMQ
52
ZeroMQмы(iMatix)тратилинашиденьгиивремянамаркетингипродвижение(вродеэтойкниги),атакженабазовыевещи,например,наисправлениебагов,релизыисайты.
Ипоследнее,продажиикоммерческоепосредничествотакжеважны.Естественно,естьрыночныеотношениямеждуспециалистами-участникамиипотребителями,ноиутехиудругихнеоченьполучаетсяобщатьсямеждусобой.Потребителисчитают,чтоподдержкадолжнабытьбесплатнаилистоитьоченьдешево,ведьпрограммноеобеспечениесвободное.Участникижеслишкомстесняютсяпроситьдостойнуюплатузасвоюработу.Этозатрудняетрыночныеотношения.ВсебольшаячастьмоейработыиприбылимоейкомпанииобеспечиваетсядеятельностьюпосоединениюпользователейZeroMQ,которымтребуетсяпомощь,сэкспертамисообщества,способныхееоказать,такимобразом,чтобыобестороныбылидовольнырезультатами.
Явиделзагибающиесясообществагениальныхлюдейсблагороднымицелямииз-затого,чтоихоснователиделалинекоторыеиливсеизэтихчетырехвещейнеправильно.Основнаяпроблемазаключаетсявтом,чтониоднакомпания,человекилигруппанеможетидеальноруководитьсообществомпостоянно.То,чтосегодняработает,завтраможетнесработать,ктомужеструктурасовременемстановитсяболееригидной,анегибкой.
Лучшимрешением,ккоторомуяпришел,являетсясочетаниедвухпунктов.Первый—этоGPL,т.к.онаобеспечиваетвозможностьповторнойобработкиматериала(ремиксабельность).Неважно,насколькоплохимбудетруководство,неважно,насколькоупорноонобудетстаратьсяприватизироватьизахватитьработусообщества—еслионаподлицензиейGPL,тоработапростоуйдетинайдетсеберуководителейполучше.Прежде,чемвыскажете«любойopen-sourceпредлагаеттожесамое»,подумайте.ЯмогупокончитьспроектомслицензиейBSD,нанявключевыхучастниковипрекративвыпускновыхпатчей.Но,дажеимеямиллиарддолларов,янемогуубитьпроектслицензиейGPL.Второйпункт—отношениекруководствуспозициифилософиианархизма,котороепроявляетсявтом,чтомывыбираемруководство,ононаминевладеет.
Глава3-СообществоZeroMQ
53
ПротоколдляколлаборацииC4«Этоэссенциятридцатилетнегоопытыразработкипрограммногообеспечения.»
ПроцессZeroMQ:C4КогдамыговоримоZeroMQ,мыиногдаимеемввидуlibzmq—основнуюбиблиотеку.Вначале2012годамысинтезировалипроцессlibzmqвформальныйимногоразовыйпротоколдлясовместнойработы,которыймыназвали“Контрактомнаразработкуколлективногокода”илиC4.Выможетерассматриватьэтокакслойнадлицензией(например,MPLv2).Этонашиправила,ияобъяснюпричинывозникновениякаждогоизних.
C4—этоэволюциямоделиGitHubFork+Pull.Выможетеподумать,чтояпоклонникgitиGitHub.Иэтоточно:этидваинструментаоказалиположительноевлияниенанашуработувпоследниегоды,особеннокогдаречьидетосозданиисообщества.
Язык
Ключевыеслова«ДОЛЖЕН»,«НЕДОЛЖЕН»,«ТРЕБУЕТСЯ»,«ДОЛЖЕН»,«НЕДОЛЖЕН»,«СЛЕДУЕТ»,«НЕСЛЕДУЕТ»,«РЕКОМЕНДУЕТСЯ»,«МОЖЕТ»и«ДОПОЛНИТЕЛЬНО»вэтомдокументеследуетинтерпретироватьтак,какописановRFC2119.
НачинаясRFC2119,втекстепроC4четкоуказано,чтооннамеренвыступатьвкачествепротокола,анекакслучайнонаписанныйнаборрекомендаций.Протокол—этодоговормеждусторонами,которыйопределяетправаиобязанностикаждойстороны.Онимогутбытьзнакомывсети,илимогутбытьнезнакомцами,работающимиводномпроекте.
Ядумаю,чтоC4—этопервыйпримертого,каккто-топыталсякодифицироватьнормативысообществакакформальнуюимногоразовуюспецификациюпротокола.Раньшенашиправилабылираспространенынанесколькихстраницахвикиибыливомногомспецифичныдляlibzmq.Ноопытучитнас,чточемболееформальные,точныеимногоразовыеправила,темлегчестановитсянезнакомыммеждусобойлюдямсотрудничать.Аменьшееколичестворазногласийозначаетболеемасштабируемоесообщество.ВовремяC4унастакжебылонекотороенесогласиевпроектеlibzmqнадтем,какойпроцессмыиспользовали.Невсечувствовалисебя
Глава4-ПротоколдляколлаборацииC4
54
связаннымиоднимиитемижеправилами.Скажемтак,некоторыелюдисчитали,чтоунихособыйстатус,иэтосоздавалоконфликтсостальнойчастьюсообщества.Такимобразом,спецификациясделалавещипонятнее.
ИспользоватьС4легко:просторазместитесвойпроектнаGitHub,заставьтедругогочеловекаприсоединитьсяиоткройтефункциюpullrequest.ВсвоемREADMEпоместитессылкунаC4,ивсе.Мысделалиэтовцеломрядепроектов,и,похоже,этоработает.Янеразиспытывалприятноеудивление,применяяэтиправилаксвоейсобственнойработе,напримервпроектеCZMQ.Никтоизнаснебесподобеннастолько,чтомогбыработатьбезостальных.
Цели
СпецификацияC4предназначенадляобеспеченияоптимальнойнеоднократноймоделисотрудничествадляпроектовсоткрытымисходнымкодом.
ВкратцепричинасозданияC4заключаласьвтом,чтобыположитьконецразногласиямвпроцессесотрудничествавlibzmq.Инакомыслящиеушливдругиеместа.СообществоZeroMQплавноилегкорасцветало,какяипредсказывал.Большинстволюдейбылиудивленыэтому,ноиудовлетворены.НебылоникакойреальнойкритикиC4,кромеееветвящейсяполитики,окоторойярасскажупозже,посколькуоназаслуживаетотдельногообсуждения.
Естьпричина,покоторойярассматриваюисториюсозданияздесь:какосновательсообщества,выпросителюдейинвестироватьввашусобственность,товарныйзнакибрендинг.Всвоюочередь,какмыипоступаемвслучаесZeroMQ,выможетеиспользоватьэтотбрендинг,чтобыустановитьпланкукачества.Когдавызагружаетепродуктмаркированный«ZeroMQ»,вызнаете,чтоонбылвыпущенпоопределеннымстандартам.Этоосновноеправилокачества:запишитесвойпроцесс;иначевынесможетеегоулучшить.Нашипроцессынеидеальны,ониникогдаинестануттаковыми.Нолюбойнедостатоквнихможетбытьисправленипротестирован.
ПоэтомуоченьважносделатьC4пригоднымдлямногократногоиспользования.Чтобыузнатьбольшеонаилучшемвозможномпроцессе,намнужнособратьрезультатымаксимальноширокогоспектрапроектов.
Увсегоэтогоестьследующиеопределенныецели:расширениесообщества,формируемоговокругпроекта,уменьшениепорогавхождениядляновыхучастниковисозданиемасштабируемоймоделипартнерстваспозитивнойобратнойсвязью.
Глава4-ПротоколдляколлаборацииC4
55
Цельюномеродинявляетсяразмерижизнеспособностьсообщества—нетехническоекачество,неприбыль,непроизводительность,недолярынка.Цель—простоколичестволюдей,которыевносятсвойвкладвпроект.Науказдесьпроста:чембольшесообщество,темточнеерезультаты.
Уменьшениезависимостиотключевыхлицпутемраспределениятребуемыхнаборовнавыковпоразнымспециалистам,чтобыналюбуюобластьприходилсявысокийуровенькомпетенции.
Возможно,худшейпроблемой,скотороймыстолкнулисьвlibzmq,былазависимостьотлюдей,которыемоглипонятькод,управлятьветкамиGitHubиделатьчистыерелизы—всеводноитожевремя.Этопохоженапоискспортсменов,которыемогутбегатьмарафоныиспринты,плавать,атакжеподниматьвес.Мы,люди,можембытьоченьхороши,соблюдаяспециализацию.Проситьнасбытьдействительнохорошимивдвухпротиворечивыхвещахнелучшаяидея:эторезкосократитчислокандидатов,чтоплоходлялюбогопроекта.Унасбылаэтапроблемавlibzmqв2009годуилиоколотого,ионабыларешенапутемразделенияролиМейнтейнеранадве:одинчеловекделаетпатчи,адругойвыпускаетрелизы.
Обеспечениеболеебыстройиточнойразработкипроектапутемразвитияпроцессапринятиярешений.
Этотеория—неполностьюдоказанная,ноинесфальсифицированная.Чембольшесообществоичислолюдей,которыемогутучаствоватьвдискуссиях,неопасаясьбытьподвергнутымикритикеилиувольнению,тембыстрееиточнееразрабатываетсяпрограммноеобеспечение.Скоростьздесьдовольносубъективна.Быстроедвижениевнеправильномнаправлениинепростобесполезно,оносильнонаноситущербпроекту(амыиспыталимногочеговlibzmq,преждечемперешлинаC4).
Поддержаниежизненныхцикловверсийпроектаотэкспериментальнойдостабильной,путемпроведениябезопасныхэкспериментов,быстрогореагированиянанеполадкииизолированиемстабильногокода.
Этозанимательноевлияниенапроцесс:git-веткамастеробычновсегдаидеальностабильна.Этосвязаносразмеромизмененийивременеможидания,т.е.периодомотнаписаниякем-токодадоегополноценногоиспользованиякем-тоеще.Ивсеженормальныйпроцессобученияпроектировкиобычноповторяетсявпроектах,поканестановитсястабильныминезыблемым.
Уменьшениевнутреннейсложностирепозиториев,чтоприводиткоблегчениюдляучастияконтрибьюторовиуменьшениюобъемаошибок.
Глава4-ПротоколдляколлаборацииC4
56
Любопытноенаблюдение:люди,которыепреуспеваютвсложныхситуациях,любятповышатьградусзапутанности,потомучтотогдаонисохраняютсвоювысокуюценность.ЭтоэффектКобры(загуглитеэто).Gitсделалветвилегкимииоставилнассослишкомраспространеннымсиндромом«gitпрост,есливыпонимаете,чтоветвьgit—этопростосложенноепятимерноелептонноепространство,котороеимеетоторваннуюисториюбезпромежуточногокеша».Разработчикинедолжнычувствоватьсебяглупымииз-засвоихинструментов.Явиделслишкоммноговысококлассныхразработчиков,запутавшихсявструктурахрепозиторияинепринимающихобщепринятуюмудростьоветвяхgit.Мыскоровернемся,чтобыразобратьсясgit-ветвями,дорогойчитатель.
Обеспечениестатусаколлективнойсобственностипроекту,чтоувеличиваетфинансовуюмотивациюучастниковиснижаетрискплагиатасосторонывраждебныхорганизаций.
Вконечномсчете,всемы—экономическиесущества,иощущение,что«мывладеемэтим,инашаработаникогданеможетбытьиспользованапротивнас»,значительнооблегчаетлюдямжизнь,чтобыинвестироватьвпроектсоткрытымисходнымкодом,такойкакZeroMQ.Иэтонеможетбытьпросточувство,этодолжнобытьреальностью.Существуетцелыйрядаспектовдлясозданияколлективнойсобственности,мырассмотримиходинзадругим,когдамыпройдемсяпоC4.
Основныеположения
ПроектДОЛЖЕНиспользоватьраспределеннуюсистемууправленияверсиямиgit.
УGitестьсвоинедостатки.ЕгоAPI-интерфейскоманднойстрокиужаснонепоследовательный,иунегосложная,неряшливаявнутренняямодель,которойонтычетвамвлицополюбомуповоду.Но,несмотрянато,чтоонделаетвсевозможное,чтобызаставитьсвоихпользователейчувствоватьсебяглупо,gitделаетсвоюработудействительнооченьхорошо.Болеепрагматично,яобнаружил,чтоесливыдержитесьподальшеотопределенныхобластей(ветвей!),людибыстроучатсяgitинесовершаютмногоошибок.Этоподходитдляменя.
ПроектДОЛЖЕНбытьразмещеннаgithub.comилиегоэквиваленте,называемомздесь«Платформа».
Яуверен,чтооднаждыкакая-нибудькрупнаяфирмакупитGitHubисломаетее,инаееместовстанетдругаяплатформа.ДосихпорGithubобслуживаетпочтиидеальныйнаборминимальных,быстрых,простыхинструментов.Янаправилтудасотнилюдей,ивсеонидосихпортам,словномухи,застрявшиевблюдцесмедом.
ПроектДОЛЖЕНиспользоватьсистемууправленияпроектами.
Глава4-ПротоколдляколлаборацииC4
57
Мыдопустилиошибкувlibzmq,перейдянаJira,потомучтомытогдаещененаучилисьправильноиспользоватьтрекерGitHub.Jira—отличныйпримертого,какпревратитьчто-тополезноевзапутанныйбеспорядок,потомучтобизнесзависитотпродажибольшегоколичества«функций».НодаженекритикуяJira,сохранениетрекеразадачнатойжеплатформеозначает,чтонаодинпользовательскийинтерфейс,которыйпридетсяучить,станетменьше,однимлогиномстанетменьше,появитсяплавнаяинтеграциямеждупроектамиипатчами.
ПроектДОЛЖЕНиметьчеткодокументированныерекомендациипостилюкода.
Этоплагинпротокола:вставьтездесьправиластилякода.Есливынедокументируетестилькода,которыйвыиспользуете,уваснетоснований,кромепредубеждений,чтобыотклонитьпатчи.
«Участник(Contributor)»—эточеловек,которыйхочетпредоставитьпатч,являющийсянаборомкоммитов,которыерешаютчеткоопределенныепроблемы.«Мейнтейнер(Maintainer)»—эточеловек,которыйобъединяетпатчивпроекте.Мейнтейнерынеявляютсяразработчиками;ихработазаключаетсявсоблюдениипроцессаразработки.
Теперьмыпереходимкопределениямсторониразделениюролей,которыеизбавилинасотпагубнойструктурнойзависимостиотредкихлюдей.Этохорошоработаетвlibzmq,но,каквыувидите,этозависитотостальнойчастипроцесса.C4—нескатерть-самобранка,вампонадобитсявесьпроцесс(иличто-тооченьпохожее),чтобывсенерассыпалосьначасти.
УчастникиНЕДОЛЖНЫиметьвозможностькоммититьврепозиторий,еслионинеявляютсятакжеМейнтейнерами.МейнтейнерыДОЛЖНЫиметьвозможностькоммититьврепозиторий.
Чегомыхотелиизбежать,такэтотого,чтобылюдипроталкивалисвоиизменениянепосредственновмастер-ветку.Этобылсамыйбольшойисточникпроблемвlibzmqисторически:большиемассысырогокода,настабилизациюкоторыхпотребовалисьбымесяцыилигоды.ВконечномитогемыследовалидругимпроектамZeroMQ,такимкакPyZMQ,сиспользованиемзапросовназагрузку.Мыпошлидальшеиуказали,чтовсеизменениядолжныидтипотомужепути.Никакихисключенийдля«особыхлюдей».
Каждый,безразличияилидискриминации,ДОЛЖЕНиметьравноеправонавозможностьстатьУчастникомвсоответствиисусловиямиэтогоконтракта.
Мыдолжныбылиуказатьэтопрямо.Раньшебылотак:сторонникиlibzmqотказывалисьотпатчейпростопотому,чтоимэтоненравилось.Теперьэтоможетпоказатьсяразумнымдляавторабиблиотеки(хотяlibzmqнебыл
Глава4-ПротоколдляколлаборацииC4
58
написаноднимчеловеком),нодавайтевспомнимонашейцелисозданияработы,котораяпринадлежиткакможнобольшемуколичествулюдей.Говорить«Мнененравитсявашпатч,поэтомуясобираюсьегоотклонить»,этоэквивалентновысказыванию:«Яутверждаю,чтовладеюэтим,иядумаю,чтоялучшетебя,иятебенедоверяю».Этотоксичныесообщениядлятех,ктодумаетстатьвашимисоинвесторами.
Ядумаю,чтоэтаборьбамеждуиндивидуальнымопытомиколлективнымразумомразыгрываетсяивдругихобластях.ОнасоздалаВикипедию,идосихпорпродолжаетэтоделать,ужеспустядесятилетиепослетого,какпревзошлавсе,чтомоглабысделатьнебольшаягруппаэкспертов.Помнетакмыделаемпрограммноеобеспечение,медленносинтезируясамыеточныезнания,также,какмыделаемстатьивВикипедии.
Лицензированиеисобственность
ПроектДОЛЖЕНиспользоватьтакуюжелицензию,какMPLv2,иливариантGPLv3(GPL,LGPL,AGPL).
Яужеобъяснил,какполнаяремиксабельность(возможностьповторнойработысматериалом)создаетлучшиймасштаб,ипочемуMPLv2илиGPLиихвариантыкажутсяоптимальнымконтрактомнаремиксабельноепрограммноеобеспечение.Есливыкрупныйбизнес,нацеленныйнато,чтобысбрасыватькоднарынке,вамненуженC4,нотогдаваминетделадосообщества.
Всевкладывисходныйкодпроекта(«патчи»)ДОЛЖНЫиспользоватьтужелицензию,чтоидляпроекта.
Этоустраняетнеобходимостьвкакой-либоконкретнойлицензииилисоглашенииобучастиивразработкепатчей.ВыделаетефоркMPLv2илиGPLкода,публикуетесвоюпеределаннуюверсиюнаGitHub,ивыиликто-либоещеможетеотправитьэтокакисправлениекисходномукоду.BSDэтогонедопускает.Любаяработа,содержащаяBSD-код,можеттакжесодержатьнелицензионныйпроприетарныйкод,поэтомувамнужноразрешениеотавторакода,преждечемвысможетеегопеределывать.
Всепатчипринадлежатихавторам.НЕДОЛЖЕНприсутствоватьникакойпроцессприсвоенияавторскихправ.
Здесьмыподходимкосновнойпричинетого,чтолюдиуверенывсвоемвкладевZeroMQ:логическиневозможнокупитьавторскиеправанасозданиеконкурентасзакрытымисходнымкодомдляZeroMQ.iMatixтоженеможетэтогосделать.Ичембольшелюдейпосылаютпатчи,темсложнееэтостановится.ZeroMQнепростосвободениоткрытсегодня—этаегоособенностьпозволитемуоставатьсятаким
Глава4-ПротоколдляколлаборацииC4
59
всегда.Обратитевнимание,чтоэтонеотноситсяковсемпроектамMPLv2/GPL,многиеизкоторыхпо-прежнемутребуютвозвратаавторскихправсвоиммейнтейнерам.
КаждыйУчастникДОЛЖЕНбытьответственнымзаидентификациюсебявСпискеучастниковпроекта.
Другимисловами,мейнтейнерынеявляютсякарма-бухгалтерами.Любой,ктохочетдобитьсяодобрения,долженсамзаявитьобэтом.
Требованиякпатчу
ВэтомразделемыопределяемобязательстваУчастника:вчастности,чтопредставляетсобой«годный»патч,чтобыуМейнтенеровбылиправила,всоответствиискоторымионимогутприниматьрешенияопринятииилиотклонениипатча.
МейнтейнерыиУчастникиДОЛЖНЫиметьучетнуюзаписьнаПлатформеиДОЛЖНЫиспользоватьсвоенастоящееимяилиизвестныйпсевдоним.
Вхудшемслучае,когдакто-торазместилвредныйкод(запатентованныйилипринадлежащийкому-тодругому),мыдолжныуметьотслеживать,ктоэтосделаликогда,чтобымымоглиудалитькод.Указыватьнастоящиеимяилиизвестныйпсевдоним—этотеоретическаястратегияпоснижениюрискапоявленияфиктивныхпатчей.Мынезнаем,работаетлиэто,потомучтоунасещенебылопроблемсэтим.
ПатчДОЛЖЕНпредставлятьсобойминимальноерешениеконкретнойидентифицированнойисогласованнойпроблемы.
ЭтореализацияпринципаОриентированнойнапростотуразработки,прокоторыйярасскажувэтойглавепозже.Однаявнаяпроблема—одноминимальноерешение,применение,тестирование,повторение.
ПатчДОЛЖЕНпридерживатьсяправилстилякодапроекта(styleguidelines),еслиониопределены.
Этопростоздравомыслие.Япотратилвремянаочисткучужихпатчей,потомучтоонинастаивалинатом,чтобыставитьelseрядомсif,анениже,кактоготребуетВселенная.Последовательныйкодвыглядитздоровым.
ПатчДОЛЖЕНпридерживатьсяруководящихпринципов«РазработкапубличныхИнтерфейсов»,определенныхниже.
Глава4-ПротоколдляколлаборацииC4
60
Ах,боль,боль.Янеговорюотомвремени,когдамнебыловосемьлет,иянаступилнадоскусторчащемизнее4-дюймовымгвоздем.Этобылоещеничего.Яговорюо2010-2011годах,когдаунасбылонесколькопараллельныхрелизовZeroMQ,каждыйизкоторыхимелразныенесовместимыеAPIилипроводныепротоколы.Этобылиупражнениявплохихправилах,бессмысленнособлюдаемых,которыеисегоднявсеещепричиняютнамболь.Правилогласило:«ЕсливыизменитеAPIилипротокол,выДОЛЖНЫсоздатьновуюосновнуюверсию».Проткнитемоюногугвоздем,этоменееболезненно.
Однимизбольшихизменений,которыемысделалисC4,являетсязапретподобногосанкционированногосаботажа.Удивительно,ноэтодаженесложно.Мыпростонеразрешаемнарушатьсуществующиепубличныеконтракты,иточка,еслитольковсенесогласятсясэтим,тогдада.КаксказалЛинусТорвальдс23декабря2012года:«МЫНЕНАРУШАЕМПОЛЬЗОВАТЕЛЬСКОЕПРОСТРАНСТВО!»
ПатчНЕДОЛЖЕНвключатьнетривиальныйкодиздругихпроектов,еслитолькоУчастникнеявляетсяизначальноавторомэтогокода.
Этоправилоимеетдваэффекта.Во-первых,онозаставляетлюдейделатьминимальныерешения,потомучтоонинемогутпростоимпортироватьобразцысуществующегокода.Изтого,чтоянаблюдалвдругихслучаях,этовсегдаприводиткплохимрезультатам,еслитолькоимпортированныйкоднеразделеноченьчетко.Во-вторых,оноустраняетспорыпоповодулицензий.Выпишетепатч,выможетеопубликоватьегокакLGPL,имыможемпринятьего.Ноесливынайдетефрагменткодав200строквИнтернетеипопытаетесьвставитьего,мыоткажем.
ПатчДОЛЖЕНчеткокомпилироватьсяипроходитьсамотестированиепроекта,покрайнеймере,наосновнойцелевойплатформе.
Длякросс-платформенныхпроектовсправедливоусловие,чтобыпатчработалвсредеразработки,используемойУчастником.
СообщениекоммитаДОЛЖНОсостоятьизоднойкороткой(менее50символов)строки,вкоторойзадаетсяпроблема(«Проблема:...»),закоторойследуетпустаястрока,азатемпредлагаемоерешение(«Решение:...»)).
Этохорошийформатдлясообщенийкоммита,которыйподходитдляэл.почты(перваястрокастановитсятемой,аостальнаячасть—теломписьма).
«Корректныйпатч»—этопатч,которыйудовлетворяетвышеуказаннымтребованиям.
Есливдругэтонепонятно,возвращаемсякформулировкамиопределениям.
Глава4-ПротоколдляколлаборацииC4
61
Процессразработки
Вэтомразделемыпоэтапноописываемпроцессразработки.
ИзменениявпроектеДОЛЖНЫрегулироватьсяалгоритмомточноговыявленияпроблемипримененияминимальныхточныхрешенийэтихпроблем.
Этоэссенциятридцатилетнегоопытыразработкипрограммногообеспечения.Этокрайнепростойподходкразработке:делайтеминимальныеточныерешенияреальныхпроблем,нибольше,нименьше.ВZeroMQунаснебыломестазапросамдополнительныхфункций.Отношениякдополнительнымфункциямкаккбагамсмущалонекоторыхновичков.Ноэтоработало,инетольковopen-source.Формулировкапроблемы,которуюмыпытаемсярешить,сучетомкаждогоотдельногоизменения,являетсяглавнымприпринятиирешенияотом,нужноливнедрятьизменениеилинет.
Чтобызапроситьизменения,пользовательДОЛЖЕНзарегистрироватьпроблемунаПлатформе.
Этото,какпользователиразговариваютсучастниками.Отслеживайтесвоипроблемы,чтобыдругиемогли(возможно)попытатьсярешитьихдлявас.
ПользовательилиУчастникДОЛЖНЫописатьпроблему,скоторойонистолкнулись.
«Проблема:намнужнафункцияX.Решение:сделатьэто»—воттакнеправильно.«Проблема:пользовательнеможетвыполнятьпростыезадачиAилиB,кромекакспомощьюсложногообхода.Решение:сделатьфункциюX»являетсядостойнымобъяснением.Т.к.каждый,скемякогда-либоработал,долженбылусвоитьэто,тостоитещеразповторить:сначалаопределяйтереальнуюпроблему,атолькозатемеерешение.
ПользовательилиУчастникДОЛЖНЫстремитьсякконсенсусуотносительноточностиихнаблюденияиценностирешенияпроблемы.
Ипосколькумногиеочевидныепроблемыиллюзорны,ясноизлагаяпроблему,мыдаемдругимвозможностьисправитьнашулогику.«ВыиспользуететолькоAиB,потомучтофункцияCненадежна.Решение:сделайтефункциюCработоспособной».
ПользователиНЕДОЛЖНЫрегистрироватьзапросынановыевозможности,идеи,предложенияилилюбыерешенияпроблем,которыеявнонезадокументированыинедоказуемы.
Глава4-ПротоколдляколлаборацииC4
62
Существуетнесколькопричиннерегистрироватьидеи,предложенияилизапросыфункций.Понашемуопыту,онипростонакапливаютсявтрекерезадач,покаихкто-нибудьнеудалит.Лучше,когдамырассматриваемвсеизменениякакрешенияпроблем,ведьтогдамысможемтрезворасставлятьприоритеты.Либопроблемареальна,икто-тохочетеерешитьсейчас,либоеенетвповестке.Поэтомуспискамжеланий—нет.
Такимобразом,историяверсийпроектаДОЛЖНАбытьспискомзначимыхпроблем,документируемыхирешаемых.
Мнебыоченьхотелось,чтобытрекерGitHubпростоперечислилвсепроблемы,которыемырешиливкаждомрелизе.Сегоднянамприходитсяписатьэтовручную.Есливыразмещаетеномерпроблемывкаждомкоммите,иеслииспользоватьтрекерGitHub,окоторыймы,ксожалению,ещенесделалидляZeroMQ,этуисториюрелизовлегчеделатьмеханически.
Чтобыработатьнадпроблемой,УчастникДОЛЖЕНсделатьфоркрепозиторияпроекта,азатемработатьсэтойкопией.
ЗдесьмыобъясняеммодельGitHubfork+pullrequest,чтобывновьприбывшимприходилосьизучатьтолькоодинпроцесс(С4),чтобыстатьучастником.
Чтобыотправитьпатч,УчастникДОЛЖЕНсоздатьPullRequestвпроект.
GitHubсделалэтонастолькопростым,чтонамненужнодляэтогоизучатькомандыgit.Иногдаярассказываюлюдям,которыемнеособенноненравится,чтокоманднаястрокаgitпотрясающая,ивсе,чтоимнужносделать,—этодетальноизучитьвнутреннююмодельgit,преждечемпытатьсяиспользоватьеевреальнойработе.Когдаявижуихнесколькомесяцевспустя,онивыглядят…измененными.
УчастникНЕДОЛЖЕНпроизводитькоммитынепосредственновпроект.
Любой,кторазмещаетпатч,являетсяУчастником,ивсеУчастникиследуютодинаковымправилам.Никакихособыхпривилегийдляоригинальныхавторов,потомучтовпротивномслучаемынесоздаемсообщество,атолькоувеличиваемнашиэго.
Чтобыобсудитьпатч,людиМОГУТкомментироватькоммитыиPullRequest’ынаПлатформеиливдругомместе.
Случайнораспределенныедискуссиимогутсбиватьстолку,ноGitHubрешаетэтодлявсехтекущихучастников,отправляяэлектронныеписьматем,ктодолженследитьзатем,чтопроисходит.УнасбылтотжеопытитожерешениевWikidot,ионоработает.Нетникакихдоказательствтого,чтообсуждениевразныхместахимееткакой-либонегативныйэффект.
Глава4-ПротоколдляколлаборацииC4
63
Чтобыпринятьилиотклонитьпатч,МейнтейнерДОЛЖЕНиспользоватьинтерфейсплатформы.
Работачерезвеб-интерфейсGitHubозначает,чтоPullRequest’ырегистрируютсякакпроблемысрабочимпроцессомиобсуждением.Яуверен,чтоестьиболеесложныеспособыработы.Всеусложнитьоченьпросто,авотзапростотойстоятогромныеусилия.
МейнтейнерНЕДОЛЖЕНприниматьсвойсобственныйпатч.
Былоправило,котороемыопределилимноголетназад,чтобыостановитьвыгораниелюдей:неменеедвухчеловекнапроект.Проектыодногочеловека,какправило,заканчиваютсяслезамиили,покрайнеймере,горькойтишиной.Унасдовольномногоданныховыгорании,почемуэтопроисходитикакегопредотвратить(дажевылечить).Ярасскажуобэтомпозжевэтойглаве,потомучто,есливыработаетесоткрытымисходнымкодом,вамнужнознатьорисках.Правило«неприниматьсвойсобственныйпатч»преследуетдвецели.Во-первых,есливыхотите,чтобывашпроектбылсертифицированC4,вамнужновзаимодействоватьхотябысоднимчеловеком,которыймогбыпомочь.Еслиниктонехочетвампомочь,возможно,вамнужнопереосмыслитьсвойпроект.Во-вторых,контрользакаждымпатчемделаетегонамногоболееудовлетворительным,удерживаетнасвправильномнаправлениииостанавливаетнас,еслимынарушаемправилаиз-заспешкиилилени.
МейнтейнерыНЕДОЛЖНЫделатьоценочныесужденияотносительнокорректныхпатчей.
Мыужеговорилиобэтом,ностоитповторить:рольМейнтейнеразаключаетсяневсужденииосутипатча,атолькооеготехническихкачествах.Сутьценностипатчапроявляетсятолькосовременем:людииспользуютего,имонлибопонравится,либонет.Аеслиниктонеиспользуетпатч,вконцеконцовонначнетраздражатького-то,иегоудалят,иниктонебудетжаловаться.
МейнтейнерамСЛЕДУЕТбыстроприниматьисправления.
Существуеткритерий,которыйяназываюпериодожиданияизменений,которыйравенпериодуотопределенияпроблемыдотестированияеерешения.Чембыстрее—темлучше.ЕслиМейнтейнерынемогутреагироватьнаPullRequest’ытакбыстро,каклюдиотнихтогоожидают,значитониневыполняютсвоюработу(илиимнужнобольшерук).
МейнтейнерыМОГУТприниматьнекорректныеисправленияотдругихУчастниковсцелью:(а)прекращениябесплодныхдискуссий,(б)улавливаниянеправильныхпатчейвистории,(в)привлеченияУчастниковкулучшениюкачестваихпатчей.
Глава4-ПротоколдляколлаборацииC4
64
Получается,чтобыстроепринятиенесовершенныхпатчей,чтояназываю«оптимистичнымслиянием»,всегдаприводитклучшимрезультатам,чемтребованиеотучастниковидеальнойработы.
Обычнаяпрактика(пессимистичноеслияние,ПС)–ждать,поканебудетоконченодлительноеинтеграционноетестирование(CI),потомвыполнитьревизиюкода,потомпротестироватьпатчвотдельнойветке,ипозжеотписатьавторуотзыв.Авторможетисправитьпатч,итогдациклтест/ревизиязапускаетсяснова.Наэтойстадиимейнтейнерможетсделать(ичастоделает)ценноесуждениевроде«мнененравится,каквыэтосделали»или«этонесоответствуетнашемувидениюпроекта».
Вхудшемслучаепатчимогутждатьодобрениянеделями,месяцами.Илимогутвообщенедождаться.Илионибудутотклонены,скакими-нибудьотговоркамиилидоводами.
ПСхарактернодлябольшинствапроектов,ияуверен,чтовбольшинствеслучаевнеправильно.
Начнусперечисленияпроблем,которыесоздаетПС:
Онословнопередаетсвоимучастникамнегативныйпосыл,которыйвызываетнегативныеэмоции:«виновен,поканедоказанообратное».Участники,чувствующие,чтоимнерады,всегдабудутискатьальтернативы.Атерятьучастниковплохо.Ноещехуженаживатьтихих,незаметныхврагов.Онодаетмейнтейнерамвластьнадновымиучастниками,котороймногиеизнихзлоупотребляют.Ионимогутпоступатьтакнаподсознательномуровне.Ивсежеэтооченьраспространено.Посвоейсутимейнтейнерыбудутборотьсязато,чтобыоставатьсяважнымивсвоемпроекте.Иеслионисмогутнеподпускатьпотенциальныхконкурентов,задерживаяиблокируяихпатчи,онитакисделают.Онооткрываетдорогудискриминации.Кто-томожетоспоритьэто:проектпринадлежитсвоиммейнтейнерам,поэтомуонивправевыбирать,скемработать.Отвечунаэтотак:неагрессивноинклюзивнымпроектамсужденопогибнуть,итактомуибыть.Этозамедляетциклобучения.Инновациитребуютбыстрыхцикловэксперимент-неудача-успех.Кто-товыявляетпроблемуилинеэффективностьпродукта.Кто-топредлагаетрешение.Решениепроверяетсяилибоработает,либонет.Мыузналичто-тоновое.Чембыстрееэтотциклпроходит,тембыстрееиболеевернопродвигаетсяпроект.Онодаетпостороннимвозможностьтроллитьпроект.Этотакжепросто,какивыдвинутьвозражениеновомупатчу.«Мнененравитсяэтоткод».Обсуждениедеталейможетпотребоватьвразыбольшеусилий,чемсамонаписаниекода.Намноголегченападатьнапатч,чемсамомуегосделать.Такойбалансблагоприятствуеттроллямикараетчестныхучастников.
Глава4-ПротоколдляколлаборацииC4
65
Бремяработыложитсянаотдельныхучастников,чтоироничноигрустновopensource.Мыхотимработатьвместе,ноприэтомнамговорятправитьнашуработусамим.
Атеперьпосмотрим,каквсеработаетприОптимистичномслиянии(ОС).Дляначаланеобходимопонять,чтоневсепатчиилиучастникиодинаковы.Внашихopensourceпроектахмынаблюдалиследующиечетырегруппы:
1. Хорошиеучастники,которыезнаютправилаипишутпрекрасно,идеальныепатчи.2. Хорошиеучастники,которыеделаютошибкиипишутполезные,новсежебитые
патчи.3. Посредственныеучастники,создающиепатчи,которыениктонезамечаетилине
придаетзначения.4. Участники-тролли,которыеигнорируютправилаикоторыепишутвредоносные
патчи.
ПСутверждает,чтовсепатчивредоносные,поканедоказанообратное(4).Анасамомделебольшинствопатчейполезныистояттого,чтобызанятьсяихулучшением(2).
ПосмотримнасценарииПСиОС:
1. ПС:скоростьслиянияпатчейзависитотнеопределенных,произвольныхкритериев.Ииногдахорошийучастникостанетсясплохимвпечатлением.ОС:хорошиеучастникибудутчувствоватьсебясчастливымииценимымиипродолжатделатьпрекрасныепатчипоканезакончатсэтимпроектом.
2. ПС:участниксдается,правитпатч,возвращаетсясловноуниженным.ОС:второйучастникподключается,чтобыпомочьпервомуотладитьихпатч.Унастуткороткая,счастливаяпатч-партия.Уновогоучастникатеперьестьпомощникидругвпроекте.
3. ПС:мынаблюдаемсловеснуювойнуивсеудивляются,почемусообществотакоевраждебное.ОС:посредственныйучастникповсеместноигнорируется.Еслипатчтребуетдоработки,тоэтопроизойдетбыстро.Участниктеряетинтерес,ипроисходитоткатпатча.
4. ПС:словеснаяперебранка,вкоторойпобеждаюттроллилишьзасчетупорствавспоре.Обществозахлестываютдерись-или-бегиэмоции.Продавливаютсяплохиепатчи.ОС:существующийучастниксразуоткатываетпатч.Нетникакихспоров.Троллимогутпопробоватьещераз,носразубудутзабанены.Вредоносныепатчиостаютсявgit-историинавечно.
ВлюбомслучаеуОСрезультатлучше,чемуПС.
Вбольшинствеслучаев(когдапатчитребуютдальнейшейдоработки)ОСсоздаетусловиядлянаставничестваименторства.ИмынасамомделенаблюдалиэтовпроектахZeroMQ,иименнопоэтомунаднимитаквеселоработается.
Глава4-ПротоколдляколлаборацииC4
66
Пользователь,создавшийзадачу,ДОЛЖЕНзакрытьзадачупослепроверкиисправления.
Когдаодинчеловекоткрываетзадачу,адругойработаетнадней,лучшепозволитпервомучеловекузакрытьзадачу.Этобудетдвойнойпроверкойтого,чтозадачабыларешенаправильно.
Любойучастник,которыйимеетоценочныесужденияопатче,ДОЛЖЕНвыразитьихчерезсвоисобственныепатчи.
Посути,цельюздесьявляетсяпозволитьпользователямпробоватьпатчи,анетратитьвремявспорах,обсуждая«за»и«против».Наскольколегкосделатьпатч,настольколегкоегооткатитьиприменитьдругой.Выможетепредположить,чтоэтоприведетк«войнепатчей»,нотакогонеслучалось.Унасбылонесколькослучаеввработесlibzmq,когдапатчиодногоучастникауничтожалисьдругимучастником,которыйчувствовал,чтоэкспериментнедвигаетсявправильномнаправлении.Этолегче,чемпытатьсядостигнутьконсенсуса.
МейнтейнерыДОЛЖНЫзакрыватьзадачипользователей,которыеостаютсябездействийвтечениенеприемлемодолгогопериодавремени.
Держитетрекерзадачвчистоте.
Веткиирелизы
КогдаработаетC4,мыполучаемдвабольшихупрощенияпроцессазагрузок.Первый:намненужноиспользоватьветки.Второе,мызагружаемвсесмастера.
Этопроцесс,которыймыобъясняемвэтомразделе.
ПроектДОЛЖЕНиметьоднуветку(«мастер»),котораявсегдасодержитпоследнююверсию,иДОЛЖЕНвсегдакомпилироваться.
Понятно,чтокаждыйпатччто-тодадобавляет,нонелишнеобэтомнапомнить.Еслимастер-ветканеразвивается(ипроходитсвоитесты),кому-тонужнопроснуться.
ВпроектеНЕДОЛЖНЫиспользоваться«topicbranch»покакой-либопричине.ВперсональныхветкахМОГУТбытьиспользованы«topicbranch».
Вскореявернуськветкам.Вкратце(или«tl;dr»,какговорятвинтернете),веткиделаютрепозиторийсложнымиразреженным,требуютединогласия–всеэтодорого,иэтогоследуетизбегать.
Длясозданиястабильногорелиза,Мейнтейнердолжениспользоватьтэгврепозитории.СтабильныерелизывсегдаДОЛЖНЫбытьотделеныотмастер-ветки.
Глава4-ПротоколдляколлаборацииC4
67
Эволюцияпубличныхконтрактов
Под«публичнымиконтрактами»яподразумеваюAPIипротоколы.Доконца2011годаестественноесчастливоесостояниеlibzmqбылоомраченонарушеннымиобещаниямиинарушеннымиконтрактами.Мыполностьюпрекратилидаватьобещания(т.н.«дорожныекарты»)дляlibzmq,инашадоминирующаятеорияизмененийтеперьзаключаетсявтом,чтоонивнедряютсявнимательноиаккуратносовременем.НавстречевЧикагов2012годуГарреттСмитиЧакРемесназвалиэто«пьянойспотыкающейсяпоходкойвсторонувеличия»,такясейчасобэтомдумаю.
Мыпрекратилинарушатьпубличныеконтракты,простозапретивэтупрактику.Раньшеэтобыло«хорошо»(какивслучаеснами,ивсегорькожаловались,амыихигнорировали)—ломатьAPIилипротоколдотакойстепени,чтонамприходилосьменятьномерверсии.Звучитнеплохо,покавынеполучитеодновременнонаходящиесявстадииразработкиверсииZeroMQ2.0,3.0и4.0,несовместимыедругсдругом.
Всепубличныесоглашения(APIилипротоколы)ДОЛЖНЫдокументироваться.
Выдумаете,чтоэтобылопридуманодляпрофессиональныхинженеров-программистов,нонет,этонетак.Это—правило.ЕсливыхотитесертификацииC4длясвоегопроекта,убедитесь,чтовашипубличныедоговоренностизадокументированы.Никакихотговороквроде«этоуказановкоде».Коднеявляетсядоговором.(Да,янамеренвкакой-томоментсоздатьпроцесссертификацииC4,какиндикаторкачествапроектовсоткрытымисходнымкодом).
ВсепубличныеконтрактыДОЛЖНЫиметьпространстводлярасширенияиэкспериментов.
Так,насамомделеобщественныедоговорыменяются.Делоневтом,чтобынеменятьих,автом,чтоменятьихследуетбезопасно.Этозначитобучать(особеннопротокольных)разработчиковсоздаватьдляэтихманевровпространствозаранее.
Патч,которыйизменяетстабильныйпубличныйдоговор,НЕДОЛЖЕНнарушатьработоспособностьсуществующихприложений,еслинебудетпреобладающегоконсенсусаотносительноценностиэтогорешения.
ИногдапатчисправляетплохойAPI,которыйникемнеиспользуется.Намнужнасвобода,ноонадолжнабазироватьсянаконсенсусе,анедогматаходногочеловека.Однакоделатьрандомныеизменения«простопотомучто»неестьхорошо.ВZeroMQv3.xразвемывыигралиотпереименованияZMQ_NOBLOCKвZMQ_DONTWAIT?Конечно,этоближекPOSIXсокетуrecv(),норазвеэтоповодразрушатьтысячи
Глава4-ПротоколдляколлаборацииC4
68
приложений?Никтоникогданезаявлялэтокакзадачу.ИскажениецитатыСтоллмана:«вашасвободасоздаватьидеальнаямирзаканчиваетсявдюймеотмоегоприложения».
Патч,вводящийновыефункции,ДОЛЖЕНделатьэтосиспользованиемновыхимен(новуюдоговоренность).
ВZeroMQмыразилидвасталкивалисьсновымифункциями,которыеиспользовалистарыеимена(илихуже–имена,которыеещеиспользовалисьгде-то).ВZeroMQv.3.0былнедавнопредставленныйсокет«ROUTER»,которыйбылполностьюдругим,нежелисуществующийсокет«ROUTER»в2.х.Господи,фейспалм,почему?Причина:очевидно,дажеумныхлюдейиногдастоитконтролировать,чтобыонинесовершалиглупыхпоступков.
НовыеконтрактыДОЛЖНЫмаркироватьсякак«черновик»(«draft»),покаонинестанутстабильнымиинебудутиспользоватьсяреальнымипользователями.
СтарыеконтрактыДОЛЖНЫсистематическиотмечатьсякак«устаревшие»(«deprecated»).
Преимуществоэтихобозначенийжизненногоцикласостоитвтом,чтобыинформироватьпользователейотом,чтосейчаспроисходит.«Черновик»означает,что«мывносимэтоинамереныоставить,еслионобудетработать».Этонезначит,что«мывнеслиэтоиуберемвлюбоевремя,еслипожелаем».Можносчитать,чтокод,которыйпережилболееодногоциклапатчей,долженостаться.«Устаревший»значит,что«мыэтозаменилиинамереныэтоубрать».
СтарыеконтрактыДОЛЖНЫсистематическиотмечатьсякак«устаревшие»(«deprecated»)изаменятьсяихновымианалогамипомеренеобходимости.
Попрошествиидостаточногоколичествавремени,устаревшиеконтрактыДОЛЖНЫбытьудалены.
Втеорииэтодаетприложениямвремядвигатьсявсторонуновыхстабильныхинтерфейсовбезриска.Выможетесначаласделатьапгрейд,удостовериться,чтовсеработает,апотомсовременемдоработатьвсе,чтобыустранитьзависимостьотустаревшихипредыдущихпротоколовиAPI.
ИменаустаревшихконтрактовНЕДОЛЖНЫповторноиспользоватьсяновымиконтрактами.
Ах,да,помнюрадостьоттого,чтовZeroMQv3.xпереименовалитоповыефункцииAPI(zmq_send[3]иzmq_recv[3])ивыбросилистарыеназванияновыхметодов,которыебыликрайненесовместимы(икоторые,яподозреваю,малоктоиспользовал).Вы,должнобыть,опятьзапутались,ударилисебяполбу,ноэтореальното,что
Глава4-ПротоколдляколлаборацииC4
69
произошло,иябылтакжевиновен,какивсеостальные.Ведь,вконцеконцов,мыжесменилиномерверсии!Единственнаяпользаэтогоопытабылавтом,чтомывывелиэтоправило.
Администрированиепроекта
УчредителипроектаДОЛЖНЫвыступатьвкачествеАдминистраторовпонаборуМейнтейнеров.
Кто-тодолженуправлятьпроектом,иимеетсмысл,чтоучредителидолжныначатьсэтого.
АдминистраторыДОЛЖНЫобеспечитьсвоюсобственнуюпреемственность,продвигаянаиболееэффективныхМейнтейнеров.
Втожевремякакучредительпроектавынасамомделехотелибысойтисэтогопутипрежде,чемстанетеслишкомпривязаннымкнему.ПродвижениесамыхактивныхинадежныхМейнтейнеровбудетполезнымдлявсех.
НовыйУчастник,которыйделаетправильныепатчи,которыйчеткопонимаетцелипроекта,ипроцессразработкиДОЛЖЕНбытьприглашенстатьМейнтейнером.
Повышайтеучастниковбыстро,когдавидно,чтоонизаслуживаютэтого.Всеостальноеконтрпродуктивно.
АдминистраторыДОЛЖНЫотстранятьМейнтейнеров,неактивныхвтечениедлительногопериодавремени,илинеоднократнонарушившихизложенныйпроцессразработки.
ЭтобылопредложениеЯнаБарбера:намнуженспособубиратьнеактивныхМейнтейнеров.ПервоначальноМейнтейнерыбылисамоизбранными,ноэтозатрудняетудалениенарушителейспокойствия(которыередки,ноненеизвестны).
АдминистраторыДОЛЖНЫблокировать«плохихучастников»,которыевызываютстрессипричиняютбольдругимлюдям,участвующимвпроекте.Этодолжнобытьсделанопослепубличногообсуждения,свозможностьюдлявсехсторонговорить.«Плохойучастник»—этотот,ктонеоднократноигнорируетправилаикультурупроекта,выставляетбеспочвенныеаргументы,производитвраждебныеилиоскорбительныедействия,икоторыйнеможетсамостоятельнокорректироватьсвоеповедение,когдадругиепросятегосделатьэто.
Времяотвременивашипроектыбудутпривлекатьлюдейнеправильногохарактера.Стечениемвременивыстанетебыстреепримечатьэтихлюдей.C4помогаетдвумяспособами.Во-первых,устанавливаястрогиеправила,онотталкиваетискателейхаосаихулиганов,которыенемогуттерпетьчужиеправила.Во-вторых,этодаетвамкак
Глава4-ПротоколдляколлаборацииC4
70
Администраторувозможностьзаблокироватьих.Мненравитсядаватьтакимлюдямвремя,чтобыонимоглипроявитьсебяиполучатьихпатчивпубличнойзаписи(причинадляслиянияплохихпатчей,которые,конечноже,можноудалитьпослеподходящейпаузы).
Глава4-ПротоколдляколлаборацииC4
71
Дизайн,разработка,инновации«Размериразнообразиесообществаявляетсяключевымфактором.»
Давайтерассмотриминновации,которыеВикипедияопределяеткак«развитиеновыхценностейпосредствомрешений,которыеотвечаютновымтребованиям,неявнымпотребностямилипотребностямстарыхклиентовилирынковвновыхспособахдобавлениястоимости».Насамомделеэтозначитрешатьпроблемыболеедешевымспособом.Звучитпросто,ноисториирухнувшихтехнологическихгигантовговорятобобратном.Япостараюсьобъяснить,почемукомандычастопонимаютэтонеправильно,ипредложуспособ,какнужносоздаватьчто-тоинновационное.
Историядвухмостов
Двастарыхинженераразговаривалиожизниихвасталисьсвоимивыдающимисяпроектами.Одинизинженероврассказал,каконразработалодинизвеличайшихкогда-либосозданныхмостов.
«Мысоорудилиегонадречнымущельем»,—сказалонсвоемудругу.«Онобылоширокимиглубоким.Мыпотратилидвагода,изучаягрунтиотбираяпроектыиматериалы.Мынанялилучшихинженеровиспроектировалимост,начтоушлоещепятьлет.Мынаняликрупнейшиеинженерныекомпаниидлясозданияструктур,башен,контрольныхпостовидороги,которыесоединилибымостсосновнымиавтомагистралями.Десяткичеловекумерливходестроительства.Нижеуровнядорогимыпустилипоездаипроложилиспециальнуюдорожкудлявелосипедистов.Сэтиммостомсвязаныгодымоейжизни».
Второйчеловекзадумалсяненадолго,апотомзаговорил.«Как-товечероммойдругия,накидавшисьводкой,решилипереброситьверевкучерезущелье»,—сказалон.«Простоверевку,привязаннуюкдеревьям.Тамбылодведеревни,пооднойнакаждойстороне.Сначалалюдитянулитюкипоэтойверевке,используяремниишкивы.Потомкто-топеребросилвторуюверевкуисделалдорожку,покоторойможнопройти.Онабылаопасной,нодетиееобожали.Потомгруппалюдейпеределалаее,сделавболеекрепкой,иженщинысосвоимиизделиямисталиходитьпонейкаждыйдень.Пооднусторонумоставыросрынок,которыйпостепеннопревратилсявкрупныйгород,т.к.тамбылополноместадлядомов.Веревочныймостзаменилинадеревянный,чтобыегомоглипересекатьлошадииповозки.Потомгородпостроилнастоящийкаменныймост,сметаллическимиперекладинами.Позжеонизамениликамнистальюисегоднянатомсамомместе—вантовыймост».
Глава5-Дизайн,разработка,инновации
72
Первыйинженерслушалмолча.«Забавно»,—сказалон—«моймостбылразобранспустядесятьлетпослетого,какмыегопостроили.Оказалось,чтоонбылпостроеннанеправильномместе,иниктонехотелимпользоваться.Какие-торебятаперебросиливеревкунадущельем,несколькомильдальшепотечению,итам-товсеиходили».
КакZeroMQпотерялсвоюдорожнуюкарту
КогдаяпредставлялZeroMQнаконференцииMix-ITвЛионе(Франция)вначале2012г.,менянесколькоразспросилипро«дорожнуюкарту».Мойответбыл:нетбольшедорожнойкарты.Унасонибыли,имыихликвидировали.Вместонесколькихэкспертов,пытающихсяопределитьследующиешаги,мыпозволилисобытиямразвиватьсяестественнымпутем.Аудиториинеоченьпонравилсямойответ.Слишкомнепо-французски.
ОднакоисторияZeroMQнагляднопоказывает,почемусдорожнымикартамивозникаютпроблемы.Вначалеунасбыламаленькаякомандаразработчиковбиблиотеки,несколькоучастниковиникакойутвержденнойдорожнойкарты.Поэтомумысобраливоединонашипланыипопыталисьорганизоватьихввидерелизов.«Вот,—мыписали,—чтобудетвследующемрелизе».
Померепубликациирелизовмыстолкнулисьспроблемой:легкочто-тообещатьинамногосложнеесделатьэтовсоответствииспланом.Во-первых,большаячастьработыбыладобровольной,инесовсемпонятно,какзаставитьдобровольцевследоватьдорожнойкарте.Во-вторых,приоритетзадачсовременемзначительноменяется.Поэтомумыделалиобещания,которыенемоглисдержать,ивыходящиерелизынесоответствовалидорожнойкарте.
Другаяпроблемазаключалосьвтом,чтоопределяядорожнуюкарту,мысловностолбилитерриторию,чтозатруднялодругимвозможностьпринятьучастие.Людипредпочитаютучаствоватьвреализациитого,чтоонисчитаютсвоейидей.Составленныйсписоктого,чтонужносделать,большепохожнарутиннуюработу,аненаинтереснуювозможностьпоучаствовать.
ВитогемыстолкнулисьстравматическимиизменениямивZeroMQ,откоторыхдорожныекартынаснеуберегли,несмотрянакучусилислов,потраченныхнато,чтобы«делатьвсеправильно».РезультатомэтогосталинесовместимыеизменениявAPIипротоколах.Былоясно,чтонамнуженновыйподход,определяющийпроцессвнесенияизменений.Разработчикампрограммногообеспеченияненравитсяидеяотом,чтомощные,эффективныерешениямогутпоявлятьсябезтого,чтобыумныеразработчикиихтщательновыверялииобдумывали.ИвсежетогдавЛионениктоне
Глава5-Дизайн,разработка,инновации
73
поставилбыподвопросэволюцию.Этостранноииронично,поэтомудалееяещепоразмышляюобэтомявлении,ведьнаегоосновесообществоZeroMQразвиваетсясначала2012года.
Вглавенствующейтеорииинновацийговоритсяотом,чтогениальныеиндивидуумы,обдумавпроблемнуюситуацию,выдаютточноеиаккуратноерешение.Иногдаунихслучаютсяозарениявстиле«эврика!»—ирешениеготово.Изобретательисампроцессизобретенияредкие,драгоценные,единоличные.Историязнаетмногихтакихгероев-одиночек.Мыобязаныимнашимсовременныммиром.
Однакоприглядевшисьвнимательней,выувидите,чтотуткое-чтонесходится.Историянеповествуетободинокихизобретателях.Онарассказываетнамолюдях,которымповезло,которыеукралиилиприсвоилисебеавторствонадидеями,появившимисяврезультатетрудамногихдругихлюдей.Онарассказываетнамогениальныхлюдях,которыесделалиудачныйход,апотомпроводилидесятилетиявбезрезультативныхибессмысленныхпоисках.ТакиекрупныеиизвестныеизобретателикакТомасЭдисоннасамомделебылихорошивсистематизацииразнообразныхисследований,выполняемыхбольшимигруппамиученых.Этопохоженаутверждениеотом,чтоСтивДжобспридумалкаждыйдевайс,созданныйApple.Неплохоймиф,хорошдлямаркетинга,ноабсолютнобессмысленныйспрактическойточкизрениядлянауки.
Историяпоследнихдесятилетий,котораялучшезафиксированаикоторойсложнееманипулировать,наглядноэтодемонстрирует.Интернетточноявляетсяоднойизсамыхинновационныхибыстроразвивающихсятехнологий,остановлениикоторойимеетсябольшоеколичестводостовернойинформации.Уэтойтехнологиинетизобретателя.Вместоэтогоестьогромнаямассалюдей,которыетщательноиуспешнорешалидлиннуюсериютекущихпроблем,записывалисвоиответыиделалиихдоступнымидлявсех.ИнновационнаяприродаИнтернетаобеспеченанемаленькойизбраннойгруппойЭйнштейнов.ОнаобеспеченаRFC-документами,которыемогутбытьиспользованыиулучшеныкемугодно,сотнямиитысячамиумных,хотяинеуникальноумныхлюдей,программнымобеспечениемсоткрытымкодом,которыйлюбойможетиспользоватьиулучшать.Онапроисходитизобмена,смешиванияимасштабированиясообщества.Онапроисходитизпостоянногоувеличениячислахорошихрешенийиизбавленияотплохих.
Поэтому,вотальтернативнаятеорияинноваций:
1. Естьбезграничнаяобластьпроблем/решений.2. Областьменяетсястечениемвременивзависимостиотвнешнихобстоятельств.3. Мыможемточновосприниматьтолькотепроблемы,которыенамблизки.4. Мыможемоценитьприбыльность/затратностьпроблемы,используярынок
решений.
Глава5-Дизайн,разработка,инновации
74
5. Естьоптимальноерешениедлялюбойрешаемойпроблемы.6. Мыможемдостичьэтогооптимальногорешенияэвристическимимеханическим
путем.7. Нашинтеллектможетускоритьэтотпроцесс,нонезаменитьего.
Изэтогоследует:
Индивидуальнаякреативностьменееважна,чемпроцесс.Болееумныелюдимогутработатьбыстрее,ноприэтомдвигатьсявневерномнаправлении.Аколлективноевидениереальностипомогаетнамследоватьактуальнымпутеминеобманыватьнисебя,нидругих.Намненужныдорожныекарты,еслиунасхорошоналаженпроцесс.Современем,померетого,какрешениябудутконкурироватьзадолюрынка,функциональностьбудетрасти.Мынестолькоизобретаемрешения,скольконаходимих.Соболезнованиятворческимнатурам:творчествоявляетсялишьобрабатывающиминформациюголемом,начищающимдоблескасвоесобственноеэгоиозабоченнымподнятиемкармы.Интеллект—этосоциальныйэффект,хотяониощущаетсякакчто-толичное.Человек,отрезанныйотдругих,перестаетдумать.Мынеможемниопределитьпроблемы,ниоценитьихрешениябездругихлюдей.Размериразнообразиесообществаявляетсяключевымфактором.Болеекрупныеиразнообразныесообществаохватываютбольшерелевантныхзадач,решаютихболееточноиделаютэтобыстреемаленькойгруппыэкспертов.
Поэтомукогдамыдоверяемсяэкспертам-одиночкам,ониделаютклассическиеошибки.Онифокусируютсянаидеях,аненапроблемах.Онифокусируютсянанеправильныхпроблемах.Ониделаютнеправильныевыводыоценностирешаемыхпроблем.Ионинепользуютсятем,надчемработают.
Можемлимыприменитьвышеописаннуютеориюнапрактике?Вконце2011г.яначалдокументироватьС4ипохожиеконтрактыииспользоватьихвZeroMQивпроектахсзакрытомкодом.Лежащийвосновепроцессяназываю«Ориентированнойнапростотуразработкой»,илисокращенноОПР(«SimplicityOrientedDesign»,SOD).Этовоспроизводимыйспособразработкипростыхиэлегантныхпродуктов.Онорганизуетлюдейвгибкиецепочкипоставщиковрешений,которыемогутбыстроидешевосориентироватьсявпроблемнойобласти.Ониделаютэто,создавая,тестируяисохраняяминимальныеприемлемыерешения,называемые«патчами»,илиотказываясьотних.Жизнеспособныепродуктысостоятиздлиннойчередыпатчей,применяемыходинповерхдругого.
Глава5-Дизайн,разработка,инновации
75
Во-первых,ОПРсущественнапотому,чтотакмыразвиваемZeroMQ.Онатакжеявляетсябазойдляпроцессаразработки,которыймыиспользуемприсозданиикрупныхприложенийZeroMQ.Конечно,выможетеиспользоватьлюбуюсофтвернуюархитектурнуюметодологиюсZeroMQ.
Чтобылучшепонятьто,какмыпришликОПР,давайтерассмотримальтернативы.
Trash-OrientedDesign
Наиболеепопулярнымтипомразработкивкрупныхорганизацияхявляется«Trash-OrientedDesign».TODосновываетсянаубеждении,чтодлятого,чтобыделатьденьгинамнужныкрутыеидеи.Этоупорновсплывающаячушьявляетсямощнымкостылемдлятех,ктолишенвоображения.Теориягласиттак:идеиредки,поэтомувесьфокусвтом,чтобысхватитьих.Словнодалекиеотмузыкилюдивосторгаютсягитаристом,непонимая,чтовеликиеталантынастолькодешевы,чтоонибуквальноиграютнаулицахзакопейки.
ОсновнымвыхлопомTODявляетсядорогостоящее«мышление»:концепции,инженернаядокументацияипродукция,котораяотправляетсяпрямикомвмусорноеведро.Получаетсяэтотак:приходятТворческиеЛюдисдлиннымсписком«мыможемсделатьXuY».Явиделбесконечнодетализированныеспискивсехтехудивительныхвещей,которыемогбыделатьпродукт.Мывсебылиповиннывэтом.Кактолькосвершиласьтворческаяработапогенерацииидей,тоделолишьзаисполнениемих.
Тогдаменеджерыиихконсультантыпередаютсвоиблестящиеидеипроектировщикам,которыесоздаюттонныбезукоризненносформулированныхдокументов.Тевсвоюочередьберутдесятьлучшихидейменеджеровипревращаютихвсотнюпроектов,потрясающихосновыбытия.
Этиразработкипередаютсяразработчикам,которыечешутзатылокигадают,комувголовупришлаэтачушь.Ониначинаютспорить,новедьпроектировщикиспустилисьсОлимпа,и,вконцеконцов,несмертнымразработчикамспоритьстворческимилюдьмиидорогостоящимиконсультантами.
Тогдаразработчикибредутобратновсвоиберлоги,униженные,кнутомпонуждаемыестроитьгигантскуюи«оченьизящную»рухлядь.Иработаэтанадрывная,потомучтопроектировщикинепринимаютврасчетреальныерасходы.Дажемелкиекапризымогутобернутьсянеделямиработы.Померетого,какпроектзамедляется,менеджерывынуждаютразработчиковработатьсверхурочноповечерамивыходным.
Витогечто-топохожеенарабочийпродуктвидитсвет.Эточто-тоскрипучее,ломкое,сложноеиуродливое.Проектировщикиклеймятразработчиковзаихнекомпетентностьиплатятконсультантамеще,чтобыонисделалимакияжсвинье,и
Глава5-Дизайн,разработка,инновации
76
понемногупродуктначинаетвыглядетьлучше.
Кэтомувременименеджерыуженачалипытатьсяпродатьпродуктиобнаружили,неожиданно,чтоонникомуненужен.Безтенисомненийонисмелобросаютмиллионыдолларовнарекламнуюкомпанию,объясняющуюпублике,зачемейкрайненеобходимэтотпродукт.Онизаключаютсделкисдругимиорганизациями,чтобыпротолкнутьегоналенивый,глупыйинеблагодарныйрынок.
Последвенадцатимесяцевнапряженнойрекламнойкомпаниипродуктвсеещенеприноситприбыли.Хужетого,ондраматичнотерпитнеудачииклеймитсяпрессойкакполныйпровал.Компанияпотихонькуубираетегонасклад,увольняетконсультантов,покупаетконкурирующийпродуктмаленькогостартапаиназываетеговерсиейдвасвоегособственногопродукта.Сотнимиллионовдоллароввыброшенынаветер.
Авэтовремяещеодинменеджер-визионергде-тотамворганизацииналиваетсебеточнолишнийстаканчиктекилыирассказываетсотрудникамотделамаркетингаосвоейГениальнойИдее.
TODмогбыбытькарикатурой,еслибынебылтакраспространен.Околодевятнадцатииздвадцатипродуктов,готовыхквыпускунарынокбольшимикомпаниями,ждетпровал(да,87%статистикиделаетсянаместе).Издвадцатилишьодинвозможнопреуспеет,даитоблагодаряагрессивнойрекламеислабостиконкурентов.
ОсновнаяморальTODясна,нотрудноусвояема:идеидешевы.Безисключений.Несуществуетгениальныхидей.Любой,ктоначинаетразговорсословами«О!Ещемыможемсделатьвотэто!»долженбытьпобитсрвениемстранствующихевангелистов.Этотожесамое,чтосидетьвкафеуподножиягоры,питьгорячийшоколадиговоритьдругим:«Эй,уменяестькласснаяидея,мыведьможемвзобратьсянаэтугору!Ипостроитьтамнавершинешале!Сдвумясаунами!Исадом!Эй,аещемыможемобеспечитьегоэлектричествомспомощьюсолнечныхбатарей!Чувак,этожекруто!Вкакойцветмыегопокрасим?Взеленый!Нет,всиний!Ок,идитеисделайтеэто,аяпокапобудутутизаймусьтаблицамииграфиками!».
Дляхорошегоначалауспешногопроцессаразработкисоберитереальныепроблемы,скоторымисталкиваютсялюди.Вторымшагомбудетоценкаэтихпроблемспомощьюосновноговопроса«Восколькообойдетсярешениеэтойпроблемы?».Послеэтогоможносделатьсписокпроблем,которыестоитрешать.Хорошиерешенияреальныхпроблембудутуспешнымпродуктом.Ихуспехбудетзависетьоттого,насколькохорошиидешевырешения,инаскольковажнапроблема(и,ксожалению,насколькобольшиерасходынамаркетингможносебепозволить).Ноихуспехбудеттакжезависетьоттого,сколькоусилийтребуетихприменение,другимисловаминасколькопростымионибудут.
Глава5-Дизайн,разработка,инновации
77
Теперь,сразивдраконаабсолютнойбесполезности,атакуемдемонасложности.
Complexity-OrientedDesign
Понастоящемухорошиекомандыразработчиковималенькиекомпаниимогутобычнозаниматьсясозданиемприличныхпродуктов.Нобольшаячастьпродуктоввсеравнополучитсяслишкомсложнымиименееуспешными,чеммоглибыбыть.Этовсепотому,чтокомандыспециалистов,дажелучшиеизних,частоупрямопрактикуютОриентированнуюнасложностьразработку,(Complexity-OrientedDesign,COD),какяееназываю.Иработаетонатак:
Менеджментправильноидентифицируетнекоторыеинтересныеисложныепроблемы,привлекательныесэкономическойточкизрения.Воттут-тооникакразипопадаютнаколеюТOD.Командасэнтузиазмомначинаетсоздаватьпрототипыиработатьнадядром.Всеэтоработает,какибылозадумано,икоманда,загоревшисьещебольше,углубляетсявнапряженнуюразработкуиобсуждениеархитектуры,созданиеэлегантныхсхем,прекрасныхистройных.Менеджментвозвращаетсяивоодушевляеткомандунарешениеещеболеесложныхпроблем.Намсвойственноприравниватьзатратыкстоимости,поэтомучемсложнееидорожерешениепроблемы,тембольшезанегоможнобудетвыручить—такимкажется.Командасостоитизинженеров,которыелюбятсоздаватьштуки,ионивступаютвдело.Онисоздаютисоздаютисоздают,икончаетсявсеэтомассивнойпрекрасноспроектированнойсложностью.Рынокпризнакомствеспродуктом,чешетзаухомиспрашивает:«Что,серьезно,иэтолучшеерешение,которыевынашли?».Да,людииспользуютпродукцию,еслиприэтомимнепридетсятратитьсвоисобственныеденьгинаподъемнагорумануалов.Менеджментполучаетпозитивныеоткликиотсвоихкрупныхклиентов,которыеразделяютмнениеотом,чточемвышестоимость(обученияииспользования),темвышеценность,ипродолжаеттолкатьпроцесс.Вэтовремягде-товмиремаленькаякомандазанимаетсярешениемтакойжепроблемы,используялучшийподход,ичерезгодразноситсложившеесяположениенарынкенамелкиеосколки.
ДляCODхарактерныкоманды,которыеодержимырешениемнеправильныхпроблемикоторыеподверженыколлективноймании.
ПродуктыCODобычнокрупные,амбициозные,сложныеинепопулярные.МногоеизпрограммногообеспеченияopensourceявляетсяследствиемCOD.Дляразработчиковбезумносложноостановитьсяипрекратитьрасширятьпроектсцельюохватитьещеи
Глава5-Дизайн,разработка,инновации
78
ещепотенциальныхпроблем.Ониспорят:«Ачто,есликто-тозахочетсделатьХ?»,ноониникогданеспрашиваютсебя:«СкольконасамомделестоитсделатьХ?».
ХорошимпримеромCODнапрактикеоказалсяBluetooth,сложный,сизлишне-усложненнойконструкциейкомплектпротоколов,которыепользователиненавидят.Онпродолжаетсуществоватьтолькопотому,чтовсплошьзапатентованнойотраслинетреальныхальтернатив.Bluetoothпрекраснозащищен,чтопочтибесполезнодлябесконтактногопротокола.ВтожевремяемунедостаетстандартногоAPIдляразработчиков,чтозначит,егореальнонакладноиспользоватьвприложениях.Наканалегрупповыхдискуссий#zeromqучастникWintreоднаждынаписал,каконбылвзбешен,обнаружив,чтовXMMS2быларабочаяpluginсистема,нооннемогпроигрыватьмузыку.
CODявляетсякроличьейноройдляразработчиковиинженеров,вкоторойонипродолжаютипродолжаютискатьтехническиерешения.Онидобавляютвсебольшеибольшефункций,закрываяглазанаэкономическуюсторонуихработы.
ОсновныеурокиCODпросты,ногорькинавкус:
Делатьчто-то,вчемнетнеобходимостисейчас—бессмысленно.Неважно,наскольковыталантливыилигениальны—есливызанимаетесьтем,чтоделаетеникомуненужныевещи,вытеряетевремя.Проблемызачастуюнеравнозначны.Некоторыепросторешить,другиесложно.Иронично,норешениепростыхпроблемчащеприноситпользулюдям,чемрешениесложныхпроблем.Поэтомуесливыпозволитевашимразработчикамработатьнадслучайнымивещами,скореевсегоонисфокусируютсянасамыминтересных,нонеактуальныхзадачах.Инженерыиразработчикилюбятделатьразныештукииукрашатьих,аэтонеизбежноприведетксложности.Крайневажноиметь«стоп-кран»,способзадаватькороткие,строгиесроки,которыезаставятлюдейискатьменеезначительные,простыеответынанаиболееважныезадачи.
SimplicityOrientedDesign
Наконец,мыподошликредкойиценнойОриентированнойнапростотуразработке(SimplicityOrientedDesign,SOD).Этотпроцессначинаетсясреализации:мынезнаем,чтомыдолжнысделать,поканеначнемделатьчто-то.Выдвижениеидейиликрупныхпроектовнепростобесполезно,амешаетразрабатыватьпо-настоящемуточныерешения.Действительнолакомыезадачиспрятаны,какзаветныеоазисы,илюбаядеятельность,кромеразыскиванияих,лишьбольшеокутываетихтуманом.Вамнужнобытьмобильным,двигатьсябыстроиналегке.
SODработаетследующимобразом:
Глава5-Дизайн,разработка,инновации
79
Мысоставляемсписокинтересныхпроблем(наблюдаязатем,каклюдииспользуюттехнологиюилидругиепродукты)ирасполагаемихотпростыхксложным,рассматриваяиопределяяспособыиспользования.Мыберемсамуюпростую,самуюдраматичнуюпроблемуиищемдлянееминимальноеколичествоприемлемыхрешений,или«патчей».Каждыйпатчрешаетименноисходнуюивсемиодобреннуюпроблемунаиболееоптимальнымспособом.Приоценкепатчеймыруководствуемсяследующимвопросом:«Можемлимынайтиболеепростоерешениепроблемы?»Мыможемизмеритьсложностьколичествомконцепцийимоделей,скоторымипользователюпридетсяознакомитьсяилиперебиратьнаугаддляиспользованияпатча.Чемменьше,темлучше.Идеальныйпатчрешаетпроблему,нетребуяничегоотпользователя.Развитиенашегопродуктазаключаетсявсозданиипатча,которыйрешаетпроблему«доказательстваконцепции»икоторыйпотомвстраиваетсявединуюлиниюболеезрелыхпродуктов,состоящихизсотентысячпатчейодинповерхдругого.Мынеделаемничего,чтонеявлялосьбыпатчем.Мыпринуждаемкэтомуформальнымиправилами,которыетребуют,чтобыкаждоедействиеилиобязанностьбылипривязаныкосновнойиодобреннойвсемизадаче,четкосформулированнойизадокументированной.Мывыстраиваемнашипроектыкакцепочкупоставщиковрешений,гдекаждыйпроектможетобеспечитьзадачисвоим«поставщикам»иполучитьвответпатчи.Цепочкапоставщиковявляется«стоп-краном»,потомучтокогдалюдинетерпеливождутответа,намволейневолейприходитсяработатьвузкихвременныхрамках.Индивидуумымогутработатьнадлюбымпроектомиделатьпатчидляважныхпоихмнениюпроблем.Никтоизнихне«владеет»проектами,онимогутлишьпринуждатькследованиюформальнымправилам.Уотдельновзятогопроектаможетбытьмноговариаций,каждыйможетобрастатьразнымипатчами,конкурирующимимеждусобой.Проектыэкспортируютформальныеизадокументированныеинтерфейсы,поэтомупроекты-исходники(клиентские)находятсявневеденииопроделываемойработе.Приэтомонимогутсоревноватьсязавниманиепроектов-клиентов,создаваябесплатныйиконкурентныйрынок.Мыпривязываемнашуцепочкупоставоккреальнымпользователямивнешнимклиентам,имыведемвесьпроцессбыстрымицикламистем,чтобыпроблема,полученнаяотпользователейсосторонымоглабытьпроанализирована,оцененаирешенапатчемзанесколькочасов.Вкаждыймомент,начинаяспервогопатча,нашпродуктготовквыпуску.Этоважно,потомучтобольшаячастьпатчейбудетнеправильными(10-30%),итолько
Глава5-Дизайн,разработка,инновации
80
даваяпродуктпользователям,мыможемузнать,какиеизпатчейпроблемныеитребуютдоработки.
SOD—восходящийалгоритм,надежныйспособнахожденияоптимальныхрешенийнаиболееважныхпроблемвнеизведаннойобласти.Вамненужнобытьгением,чтобыиспользоватьSOD,вампростонужнобытьспособнымвидетьразницумеждуактивностьюпонагнетаниютуманаипрогрессомврешенииреальныхпроблем.
Людиотмечают,чтоутакихалгоритмовестьограничения.Можнозациклитьсянарешениилокальныхзадач.Нотакустроенажизнь:собираеммаленькиепостепенныеулучшениядлительноевремя.Несуществуетгениальныхразработчиков.Мыснижаемриск,связанныйслокальностьюпроблем,охватываявсюобласть,ивообщеэтоспорныйвопрос.Отограниченийнеуйти,оникакзаконыфизики.Теориягласит,что
именнотакработаютинновации,поэтомулучшепринятьэтоиработатьсэтим,анеруководствоватьсяверойвмагию.
Осознаввосходящийхарактеринноваций,выпоймете,почемунекоторыекоманды,компанииилипродуктызастреваютввымышленнойстранеуменьшающихсяперспектив.Унихпростоотсутствуетразнообразиеиколлективнаямудростьдлянахождениялучшихвершин,ккоторымстремиться.КогдаNokiaзакрылисвоиopen-sourceпроекты,ониперекрылисебекислород.
По-настоящемухорошийразработчиксхорошейкомандойможетиспользоватьSODдлясозданияпродуктовмировогоуровня,быстроиточно.ДлямаксимальнойотдачиотSODразработчикдолжениспользоватьпродуктдлительноевремя,начинаяспервогодня,иразвиватьсвоюспособностьчуятьтакиепроблемыкакнесогласованность,необычнаяактивностьидругиевидынеполадок.Намсвойственнонезамечатьмногиедосадливыеявления,нохорошийразработчикобращаетнанихвниманиеинаходитспособпропатчитьих.Сутьпроцессаразработкисостоитвисправлениинеполадокпродукта.
Вopensourceпроектахмыделаемэтуработупублично.Неттакогомомента«адавайтеоткроемкод».Когдатакделают,по-моему,этоговоритотом,чтолюдинепонимаютсмыслopensourceпроектов—вовлечьпользователейввашеисследованиеипостроитьсообществовокругосновнойархитектуры.
Стратагемыдляуспехаopensourceпроектов
Шаблоныдляуспеха
Глава5-Дизайн,разработка,инновации
81
Этоглавассериейшаблоновповедениядлядостиженияуспехавразработкепрограммногообеспечения.Онистремятсявключитьвсё,чтоотделяетуспехотславнойтрагическойнеудачи.Онибылинаписанызаодинденькак“религиозно-маниакальныедогматы”руководителеми“всёостальноебезумное”—коллегой.Дляменяониявляютсянаукой.НоотноситеськЛенивымперфекционистамидругиминструментамтак,каквыотноситеськобычныминструментам—заточитеих,используйтеивыбросите,еслиподвернетсячто-тополучше.
ЛенивыйперфекционистНикогданесоздавайтеничего,чтонеявляетсяточнымминимальнымрешениемпроблемы,которуюмыможемопределитьидолжнырешить.
Ленивыйперфекционисттратитсвоесвободноевремянаблюдаязадругимиивыявляязадачи,которыенужнорешить.Онищетпонимания,всегдаспрашивая“Вчемреальнаяпроблема?”,затемдвижетсяточноиминимально,создаваяилизаставляядругихсоздаватьпригодноедляиспользованиярешениедляоднойконкретнойзадачи.Ониспользуетилипоручаетдругимиспользоватьэтирешения,иповторяетэтодотехпор,поканезакончатсянерешенныепроблемы,иливремяиденьги.
ДоброжелательныйтиранУправлениебольшимвойскомпроисходитпотомужепринципу,чтоинесколькимилюдьми,этопростовопросразделенияихнаменьшиегруппы.—Сунь-Цзы
Доброжелательныйтиранделитбольшиепроблемынамелкиеиотдаётихразнымгруппам,чтобысосредоточиться.Онразбиваетзадачимеждуэтимигруппами,какAPIилирешения“внепротокола”,очемярасскажувследующейглаве.Доброжелательныйтиранстроитцепочку,котораяначинаетсяспроблемизаканчиваетсянахождениемрешения.Онбезжалостенвтом,какработаетэтацепочка,нонеговоритлюдямчтоикаконидолжныделать.
НебоиЗемляИдеальнаякомандасостоитиздвухчастей-сторон:однадлянаписаниякода,другаядляобратнойсвязи.
Глава5-Дизайн,разработка,инновации
82
НебоиЗемляработаютвместекакединоецелое,внепосредственнойблизости,ноформальноониобщаютсячерезрешениепроблем.Небополучаетинформациюопроблемахотдругихпользователей,атакжевходесобственногоиспользованияпродукта,и“питает”еюЗемлю.Землябыстроотвечаеттестируярешения.НебоиЗемлямогуткоммуницироватьчерездесяткизапросовежедневно.Небообщаетсясдругимипользователями,аЗемля—сдругимиразработчиками.НебоиЗемлямогутбытьдвумяразнымилюдьмиилидвумянебольшимигруппамилюдей.
ОткрытаядверьТочностьзнанийприходитизразнообразия.
Открытаядверьпринимаетвкладвделоотпочтилюбого.Онанерассуждаетокачествеилинаправлении,взаменпозволяядругимпоспоритьипроявитьболееактивноеучастие.Онарассчитывает,чтодажетролльпринесетразнообразиевмнениегруппы.Онапозволяетформироватьгруппесвоемнениеотом,чтосделаеткодстабильным,иприменяетэтирешенияспомощьюДоброжелательноготирана.
СмеющийсяклоунСовершенствоисключаетучастие.
Смеющийсяклоун,нередкодействуеткак“удачливыйнеудачник”инепретендуетнакомпетентность.Вместоэтогоеговыходкиинеуклюжиепопыткипровоцируютдругихнаспасениеегоотсобственнойтрагедии.Такилииначе,онвсегдавыявляетправильныепутирешенияпроблемы.Людинастолькозаняты,доказываяегонеправоту,чтонезамечают,насколькоценнуюработупроделывают.
ЗаботливыйгенералНичегонепланируйте.Разрабатывайтестратегиюитактику,анеставьтецели.
Заботливыйгенералработаетнанеизведаннойтерритории,решаяпроблемы,которыескрыты,покаониещенепоявилисьнагоризонте.Такимобразом,унегонетникакихпланов,ноонищетвозможности,азатемиспользуетихбыстроиточно.Онразрабатываеттактикуистратегиюнаместах,затемобучаетимсвоихсолдат,чтобытемоглидвигатьсякакнезависимодруготдруга,такивместе.
Социальныйинженер
Глава5-Дизайн,разработка,инновации
83
Есливызнаетесвоеговрагаизнаетесебя,вамненужнобоятьсяистасражений.—Сунь-Цзы
Социальныйинженерчитаетсердцаиумытех,скемонработает.Онспрашиваеткаждого“Чтозаставляеттебясердиться,волноваться,чувствоватьсебявбезопасности,бытьсчастливым,аргументироватьсвоюточкузренияилиспорить?”Онизучаеткапризыипредрасположенности.Сэтимизнаниямионможетпоощрятьтех,ктоявляетсяполезным,ипрепятствоватьтем,ктотаковымнеявляется.Социальныйинженерникогданедействуетосновываясьнасвоихсобственныхэмоциях.
ПреданныйсадовникТотпобедит,чьяармиявоодушевленаединымдухомвовсехсвоихрядах.—Сунь-Цзы
Преданныйсадовниквыращиваетпроцессизмаленькогосемени,шагзашагом,скаждымновымчеловеком,приходящимвпроект.Онвноситкаждоеизменение,имеяточнуюпричинуисогласиеотовсех.Онникогдане“спускаетпричинусверху”,нопозволяетдругимприйтикконсенсусу,азатемобеспечиваетсоблюдениеэтогоконсенсуса.Такимобразом,каждыйвладеетиуправляетпроцессомиуправляетсявнём:ониприкрепленыкнему.
БродягаПослепересеченияреки,выдолжныоказатьсявдалекеотнее.—Сунь-Цзы
Бродягапринимаетсвоюсобственнуюсмертностьискоротечность.Унегонетпривязанностиксвоейпрошлойработе.Онсчитает,чтовсёчтомыделаем,окажетсявмусоре,этопростовопросвремени.Сточными,минимальнымивложениями,онможетбыстродистанцироватьсяотпрошлогоисосредоточитьсянанастоящемиближайшембудущем.Преждевсегооннеимеетэгоиникакойгордости,поэтомунеможетпострадатьотдействийдругих.
ПиратскаябандаКод,какивсезнания,лучшевсегоработаюткакчастнаянеколлективнаясобственность.
Глава5-Дизайн,разработка,инновации
84
Пиратскаябандасвободноорганизуетсявокругпроблем.Онапринимаетполномочияпостольку,посколькуначальствоустанавливаетцелиипредоставляетресурсы.Пиратскаябандавладеетпроцессомиразделяетеготакимобразом,чтолюбаязадачаможетбытьповтореналюбымизБандыилипереданадругомуисполнителю.Пиратскаябандадвижетсябыстро,есливозникаютновыепроблемы,ибыстроотказываетсяотстарыхрешений,еслитаковыеперестаютбытьактуальными.Ниоднолицоилигруппанеможетмонополизироватькакую-либочастьцепочки.
ФлешмобВодаформируетсвойкурсвзависимостиотгрунта,покоторомупротекает.—Сунь-Цзы
Флешмобыобъединяютсявместевпространствеивременипомеренеобходимости,азатемэтиобъединенияоченьбыстроисчезают.Физическаяблизостьимеетбольшоезначениедлясвязисвысокойпропускнойспособностью.Носовременемэтосоздаеттехническиегетто,гдеЗемляотделяетсяотНеба.Флешмобстараетсясобратьмного“частыхпассажиров”.
Канарейка-дозорныйБоль,какправило,неявляетсяхорошимзнаком.
Канарейка-дозорныйизмеряеткачествоорганизациипоегособственномууровнюстраданийипонаблюдаемомууровнюудовлетворениятех,скемонработает.Онприводитновыхучастниковворганизации,чтобытеммоглипоказатьещесырые“страданияневиновных”.Онможетиспользоватьалкоголь,чтобызаставитьдругихрассказатьосвоихболевыхточках.Онспрашиваетдругихисамогосебя:“Высчастливыучаствоватьвэтомпроцессе,иеслинет,топочему?”Когдаорганизацияпроцессапричиняетбольемуилидругим,онрассматриваетэтокакпроблему,котораядолжнабытьрешена.Людидолжнынаслаждатьсясвоейработой.
ВиселицаНикогданемешайдругимсовершатьошибки.
Виселицазнает,чтомыучимся,совершаяошибки,ионнакидываетнашеюдругихверевку,чтобытеучились.Онвсеголишьаккуратнозатягиваетверевку,когдаприходитвремя.Немногонатяжения,чтобынапомнитьдругимобихсомнительном
Глава5-Дизайн,разработка,инновации
85
положении.Позволяядругимучитьсянаошибках,даётхорошийповодчтобыостатьсяиплохойповодчтобыуйти.Виселицабесконечнотерпелив,потомучтонеткороткогопути,чтобынаучитьсячему-либо.
ИсторикСохранениеобщихзаписейможетбытьутомительным,ноэтоединственныйспособизбежатьсговора.
Историкпринуждаеткпубличномуобсуждению,чтобыизбежать“сговора”наегополедеятельности.Пиратскаябандаподразумеваетполныеиравныекоммуникации,которыенезависятотсиюминутногоприсутствия.Никтонечитаетархивы,нопростосамавероятностьостанавливаетбольшинствоотзлоупотребления.Историкпоощряетправильныйинструментдляработы:электроннаяпочтадлябыстрыхобсуждений,IRCдляболтовни,викидлязнаний,аотслеживаниеошибокдлязаписинавсякийслучай.
ПровокаторКогдачеловекзнает,чтобудетповешенчерездвенедели,этоневероятноконцентрируетмысли.—СэмуэльДжонсон
Провокаторсоздаетдедлайны,врагов,аиногдаиневыполнимое.Командыработаютлучше,когдаунихнетвременинафигню.Крайниесрокиобъединяютлюдейисосредотачиваютколлективныйразум.Внешнийврагможетсподвигнутьпассивнуюкомандукдействию.Провокаторникогданепринимаетдедлайнслишкомсерьёзно.Продуктвсегдаготовкотправке.Ноэтонемногонапоминаетпропастьскольями:однаошибка,имывсеищемновуюработу.
МистикКогдалюдиспорятилижалуются—простоотправьтеимцитатуСунь-Цзы.—МиккоКоппанен
Мистикникогданеспоритнапрямую.Онзнает,чтоспоритьсэмоциональнымчеловеком—тольковызыватьещебольшеэмоций.Вместоэтогоонуклоняетсяотдискуссии.Трудносердитьсянакитайскогогенерала,особеннокогдаонмертвуже2400лет.МистикиграетВиселицу,когдалюдинастаиваютнаправоте,совершивошибку.
Глава5-Дизайн,разработка,инновации
86
Глава5-Дизайн,разработка,инновации
87
ЖивыеСистемы«ЖивойСистемой»называетсятакаясистема,котораяразвиваетсявестественнойсреде,самостоятельноприспосабливаяськновымусловиям.ЖивыеСистемымогутсуществоватьдовольнодолгоевремя,легкоадаптируяськлюбымизменениям,являясь,такимобразом,чрезвычайноэффективными.Вотличиеотних,“СпланированныеСистемы”являются,какправило,неустойчивыми,плохореагирующиминаизмененияи,какследствие,недолговечными.ВэтойстатьеярасскажуоЖивойСистеменапримерепрограммногообеспеченияиобщества,атакжерасскажуотом,каксоздатьподобнуюсистему.
Почему“ЖивыеСистемы”
СогласноВикипедии,«ЖивыеСистемы»—этосущности,состоящиеизсамоорганизующихсяэлементов,активновзаимодействующихсокружающейсредой.Этисистемыподдерживаютсяблагодаряпотокаминформации,энергииивеществ.”ДанныйтерминбылпредложенпсихологомДжеймсомГриеромМиллеромдляобозначенияконцепцийжизни.
Яхочувоспользоватьсяэтимтерминомдлясозданияновойметафорыдлясистемпрограммногообеспеченияизанимающихсяимиорганизаций—двухтиповсистем,которыепредставляютдляменянаибольшийинтерес.Этидвесистемынепростопохожи.Программноеобеспечениеэтопродукт,созданныйгруппойлюдей,и,какотметилКонвэй,структурасистемыпрограммногообеспеченияотражаетструктуруорганизации,котораяэтусистемуразрабатывает.
Хочусказать,что“психологияпрограммногообеспечения—этопсихологиялюдей”.
Сегоднябольшинствопрограммныхпродуктовхорошоспланированы,ноонинестановятся«ЖивымиСистемами».Онинеумолимопроваливаютсянастадиидоставки,будучипроданнымисилойилиобманом.Длятого,чтобыпрограммноеобеспечениестало«ЖивойСистемой»,онодолжноиспользоватьсяорганизацией,котораяегоразрабатывает,итогдаоно“живет”или«умирает»вместесэтойорганизацией.«Организация»можетбытьчем-тобольшим,чемкомпанияиликоманда.Онаможетвключатьвсебятысячикоманд,предприятий,клиентовипоставщиков,состоящихвнеобъяснимых,нореальнозначимыхсвязях.
Ничтонедемонстрируетэтотакнаглядно,какинтернет,которыйявляется«ЖивойСистемой»программногообеспечения,людей,предприятийидругихорганизаций.Организация,создавшаяинтернет,представляетсобойничтоиноекаксамопосебе
Глава6-Живыесистемы
88
человеческоеобщество.Существуетмножество«ЖивыхСистем»,достаточнопосмотретьвокруг.Этоудивительнопростаяистина:чемлучшекачествосоздаваемыхнамикрупномасштабныхсистемпрограммногообеспечения,тембольшеонинапоминаютокружающуюнасреальность.
Существуюттакжеспланированныесистемы,которыепредставляютсобойполнуюпротивоположностьЖивымСистемам.Гораздолегчеспланироватьсистему,чемвыраститьее.Однакопланынеминуемостроятсяналожныхпредположенияхинедальновидныхрешениях.СпланированныеСистемывкаком-тосмыслевыглядятпривлекательнымииэффективными,однако,онинеизбежнотерпятпоражение.Вжизниможновстретитьмногоподобныхпримеров,скажем,кооперативноехозяйство,спланированныегорода,MicrosoftWindows8итакдалее.
Впрограммномбизнесеэторазделениенаживоеиспланированноелучшевсегоотраженовпротивостояниисвободногоизакрытогопрограммногообеспечения.Свободноепрограммноеобеспечение(иегобратоткрытыйисходныйкод)обычноформируетсяприреальномиспользовании,втовремякакзакрытыйисходныйкодобычноспланирован.Этоявляетсяглавнойпричинойтого,почемуянеработаюсзакрытымисходнымкодом:его“смерть”скораиожидаема.Япредпочитаю,чтобымояработасохраняласьтакдолго,какэтотольковозможно.
Ясделаюнесколькорезкихзаявлений,начинаяс:самыеуспешныекрупномасштабныесистемыпрограммногообеспечения—“ЖивыеСистемы”.Так,вусловияхконкурентногорынка,живаясистемабезусловнопобедитспланированную.Онагораздобыстрее,дешевлеиточнеевыявитирешитсерьезныепроблемы.ЕсливосновевашегобизнесалежитСпланированнаяСистема,тоонуязвим,таккаквамнесправитьсясатакамиЖивойСистемы.
Второезаявлениесостоитвтом,чтовсевышесказанноетакжеотноситсякорганизациям.ЕсливашакомпанияпредставляетсобойСпланированнуюСистему—онаужемертва.ВтовремякакесливашакомпанияработаеткакЖиваяСистема,оназайметдоминирующуюпозициюнарынке.Интересното,что,когдадвеЖивыеСистемыпересекаются,онинеконфликтуют.Скорее,ониспециализируютсявразныхобластях,азатемсливаются,чтобыобразоватьединуюЖивуюСистему.КонкуренцияиконфликтобычноработаютнаблагоЖивымСистемам,дажееслиприэтомстрадаютееотдельныекомпоненты.
Позвольтемнеразвитьтемуконфликтаиконкуренции.Конечно,конкуренция,поройдажежесткая,этонормальнодлялюдей.Этонашабиологическаяпотребность.Однаковнастакжезаложенапотребностьвсотрудничестве,чточащевсегоявляетсягораздоболееуспешнойстратегией.ЖиваяСистемавключаетвсебяконкуренциюмеждулюдьмиисохраняетсявслучаепотериотдельныхкомпонентов.Она,вобщем-
Глава6-Живыесистемы
89
то,зависитотпроцессаконкуренцииинеудач.СпланированнаяСистема,посути,пытаетсядействоватьиндивидуальноинеможетвынестивнутреннююконкуренциюилипотерюотдельныхкомпонентов.
ЧтоизсебяпредставляютЖивыеСистемы
ЖиваяСистемасостоитизслабосвязанныхкомпонентов.Онанаходитсявнепространства(такимобразом,“распределена”)ивремени(такимобразом,«асинхронна”).Этозначит,чтомногиепроцессыпроисходятвнеожиданныхместах,внепредсказуемоевремя.Дляглавногоплановикаэтопредставляетсяопаснымхаосом.
ВСпланированнойСистеме,наоборот,времяиместоожидаемыхсобытийсловнопредписанысценарием.Основноевниманиеуделяется“управлениюиконтролю”,гдерешенияпринимаютсяцентрализованноисообщаясьсоструктурой.СпланированныеСистемывсегдаиерархичны,таккактакаяструктурапредставляетсобойнаиболееоптимальныйспособбыстрогораспространенияинформацииопринятыхрешенияхотверховкнизам.
СпланированнуюСистемумыстроим,аживая—развиваетсясама.Мояцель—понятьинаучить,какискусственносоздатьживуюсистему.Яизучаюфакторыразвития,моделиуходаидвижущиесилысаморазвивающейсясистемы.Насамомделеяговорюосозданииискусственнойжизнииискусственногоразума,новформе,непривычнойдляисследователейискусственногоинтеллекта.Ясчитаю,чтоотдельныекомпоненты—включаявасименя—немогутбыть“умными”,еслитольковузкомиповерхностномсмысле:ведьинтеллектэтосвойство,присущеетолькосистемам.
ЖивыеСистемыхарактеризуютсяотсутствиемцентральногопланированияилипринятиярешений.Посмотритенапроектпоразработкепрограммногообеспеченияиспросите“ктодизайнер?”Еслитаместьконкретныйдизайнер(аонпочтивсегдаесть)—будьтоотдельныйчеловекилиорганизация,тоэтоСпланированнаяСистема.ВЖивойСистеменетнидизайнеров,ниплановработы,никаких-либоопределенныхплановнабудущее,кромекак“выживатьиразвиваться”.
ЖиваяСистемабольшепохожанасвободныйрынокАдамаСмита,чемнапятилеткуСталина.Экономика,политика,психологиятакжеважны—наверное,дажеболееважны—впроцессеразвитияЖивойСистемы,какитехнологии.Свободныйрынокзависитоттакихключевыхположенийкак:четкиезаконы,стандарты,контрактыисправедливоеуправление.РаботаЖивойСистемызависитотэтихжеположений.
Управляющийорганпринимаетзаконы,которыеопределяютсправедливыйрынок,азатемпретворяетихвжизнь.Единицыизмерения,валюты,контрактыидругое.Всистемахпрограммногообеспечениятаковымизаконами,например,являются
Глава6-Живыесистемы
90
лицензиянаисходныйкодилиполитикавкладов.Справедливыйрынокпозволяетлюбомусоздаватьновоепредприятиеиконкурироватьсдругими.Длясозданияреальнойконкуренции(тоестьсвободноговыбораклиентов),клиентымогутзапрашиватьчеткиеконтракты,которыевпрограммномобеспеченииявляютсязадокументированныепрограммныеинтерфейсыприложенийипротоколы.
ДНКЖивыхСистемэто,посути,наборрегулируемыхконтрактов.Так,интернетразвиваетсяизнабораРабочихПредложений(RFCs(protocolscalledRequestsforComments)),которыерегулируютсяИнженернымСоветомИнтернета(InternetEngineeringTaskForce(IETF)).“Живыегорода”развиваютсяблагодаряуголовномуигражданскомуправу,установленныхстандартовотносительноводы,энергиииотходов,транспортаитакдалее.
Еслибывсестратегиибыличестными,необходимостивуправлении,регулированиинебылобыивовсе.ОднакокаждаяЖиваяСистемауязвимапередмошенничеством.Естьопределеннаягруппалюдей,которыеобманывают—систематическииливзависимостиотситуации.Зная,какработаетрынок,онивсегдабудутпытатьсяобернутьситуациювсвоюпользу,дажееслиэтоплохоскажетсядляостальных.Онибудутлгать,красть,обманывать,запугиватьипринуждатьит.д.
Непроявляясопротивленияподобномумошенничеству,рынокбудетстрадатьивсясистемараноилипоздноумрет.Централизованнаявласть—одинизспособовзащитыотмошенничества.Однакоионазначительноуязвима:мошенникимогутидажечастозахватываютвластьсами.ВЖивыхСистемахонимогутзахватитьтолькоуправляющих,чтоипроисходитпостоянно,насамомделе.
ПризахватемошенникамиуправляющихреальнойЖивойСистемы,обычнойреакциейявляетсяотстранение,повозможности.ВоткрытыхисходныхкодахсистемПОестьвозможностьсоздатьответвлениеипродолжитьработатьподлучшимуправлением.Вотпочемуответвлениепредоставляетсущественнуюсвободу,анеозначаетпоражение.Посколькуответвлениетакжеможетиспользоватьсякакспособзахвата,свободныелицензии(GPLидругие)лучшиедляЖивыхСистемвпланепрограммногообеспечения.
РостЖивыхСистем—процесспостоянныйиестественный.Этоихглавнаяотличительнаячерта—отсутствиебольшихзатратусилийнаихсоздание.Здесьже,однако,выбудетенаблюдатьнебольшиеизменения.Этоможетпоказатьсяскучнымибесперспективным.Темнеменее,этолучшийметодвыживания.ЖиваяСистемадолжнаделатьдвевещи.Во-первых,онадолжнарешатьрядвопросовотносительноприбыли.Во-вторых,современемонадолжнаменятьсяиадаптироваться,следуязаизменениями,происходящимивокружающемвмире.
Глава6-Живыесистемы
91
ЧтокасаетсяСпланированнойСистемы,топодстроитьееподменяющийсяокружающиймироченьсложно,частодаженевозможно.Ресурсыопределяютвласть.ПоэтомуСпланированныеСистемыактивноиагрессивнопротивятсяизменениям,отрицаютих,акогдабезизмененийуженеобойтись—ониперестаютсуществовать.
ЖиваяжеСистемаполучаеттольковыгодуотизменений.Длянеенеимеетзначения,когдазаниматьсяизучениемландшафта—“сегодня”или“завтра.Онаразвиваетсяблагодарянепрерывномуобучению.Чтобыдействительноуничтожитьее,выдолжнынанестиейбольшойущерб,чтотяжелосделать,еслиЖиваяСистемаужеуспешнаисильноразвита.
Длянееработаснебольшиминеполадкаминичемнеотличаетсяотобычнойдеятельности.НасамомделеЖиваяСистемаразвиваетсяблагодарясложнымситуациям,толькоеслионинеявляютсяоченьтяжелыми,непреодолимыми.Сложнаяситуацияэтото,чтопомогаеткомпонентамконкурироватьмеждусобойиразрабатыватьлучшиерешения.То,чтонеубиваетЖивуюСистему,делаетеетолькосильнее.
Итак,таккакЖивыеСистемыучатсявсемуивливаютсявновыесферыгораздобыстрееисвыгодойдлясебя,онибудутстремитьсяктому,чтобыпроцветатьидоминировать,уничтожаялюбыеконкурентныеСпланированныеСистемы.Онибыстрореагируют,перемещаяресурсывтеобласти,вкоторыхонинужнее.Ипосколькуимненужныникакиеуказаниядействий,онимогутизменятьсядолюбогоразмера.Отсутствиекоординированияозначаетничемнеограниченныймасштаб.
КомпонентыЖивойСистемы
ДавайтеобратимсякотдельнымкомпонентамЖивойСистемы.Помните,чтоЖиваяСистемапохожанарынок,гдекомпонентыконкурируютзапредоставлениеопределенныхуслуг.Компонентыживойсистемыобладаютопределеннымичертами,которыеотличаютихоткомпонентовспланированныхсистем.УкаждогокомпонентаЖивойСистемыестьопределеннаягруппавладельцыиинвесторы,изакаждымкомпонентомзакрепленаотдельнаягруппа(втовремякаквСпланированнойСистемеукаждогокомпонентоводниитежевладельцы).Компонентыобъединяютсявсетипоставщиковиклиентов,данные,именаиадресакоторыхвсегдадоступныдляудобстваклиента.Легкимспособомсмошенничатьявляетсяподменавысококачественногокомпонентанизкопробным.Поэтомууправляющемуорганувозможнопридетсяобеспечитьсоблюдениеидентификациипрофиляизащититьидентификационныеданные.
Глава6-Живыесистемы
92
Компонентымаксимальнонезависимыотсвоегоместонахождения.Этотфактсоздаетболеекрупныйиэффективныйсвободныйрынок.Этозначит,чтомыстремимсяктому,чтобынашаЖиваяСистемабыланезависимой.ЭтопротивопоставляетсяСпланированнойСистеме,гдеместоположениеиграеточеньважнуюроль,аконкуренциямеждукомпонентамилибооченьмала,либововсеотсутствует.
Такжекомпонентымогутсовершеннопроизвольнопоявлятьсяиисчезать.Нетникакихгарантийтого,чтокомпонент,откоторогомызависимсегоднявсеещебудетсуществоватьилинаходитсявдоступезавтра.Вероятно,этокажетсяненадежным,нонаделеэторазумноиобоснованно.Мынезависимотопределенныхкомпонентов,мыполагаемсянаконтракты.Еслинамдействительночто-тонужно,переднамипоявитсямножествоальтернатив.Еслиоднаизнихисчезнет—насменуейпридетдругая.Есливыупуститеоднотакси,выобязательнопоймаетедругое.
Компонентымаксимальнонезависимыдруготдруга.Этозначит,чтоонисуществуютиизменяютсявсвоемтемпе,всвоемнаправлении.Изменениеводномкомпонентепрактическинезаметнодлядругого,развечточерезоткрытыйинтерфейс.Этасвободанеобходимадлясвободногорынка,движимогоспециализациейиторговлей.Так,одинкомпонентможетсфокусироватьсянаскорости,адругой—набезопасности.
Посколькунесуществуетниобщепринятогорешенияотом,какиекомпонентысуществуют,никтоихсоздает,онибудутиметьразнородныйхарактер,иэторазнообразиекомпонентовимеетважноезначениедляпониманиявсейсистемы.Наборразнообразныхкомпонентов,задействованныйвсвободномрынке,справитсясрешениемпроблемыбыстрееиуспешнее,чемсплошная,монолитнаяСпланированнаяСистема.
Компонентыабстрагированы,чтоозначает,чтоонимогутсамипосебеявлятьсяцелымисистемами.Например,веб-адресможетпредставлятьсобойотдельную,небольшуючастьпрограммногообеспечения(одинвеб-сервер)иликрупнуюинфраструктуру(интернет-бизнес).Всвоюочередь,толькоотвладельцевкаждойгруппызависит,какуюсистемуонибудутсоздавать—ЖивуюилиСпланированную.ЖиваяСистемасможетблагополучнопринятьвсебякомпонентыСпланированнойСистемы.Обратныйпроцесс,однако,невозможен.
Компонентыизбегаютпредварительногосоглашенияизвестногокакобщееизменяющеесясостояние.Каждыйкомпонентобладаетопределеннымизнаниями,которымионможетделитьсясдругими,новсеониделаютэтоасинхронно.Так,хотяЖиваяСистемаипредставляетсобойбольшуюцелостнуюбазузнаний,междукомпонентаминетникакойгарантированнойсогласованности.Кажется,этопарадоксально.Норазве,скажем,каждыйчленсобраниясогласенсповесткойдня?
Глава6-Живыесистемы
93
Насамомделе,собраниясихповесткамидняипротоколамипредставляютсобойолицетворениеобщегоизменяющегосясостояния,откоторогозависитСпланированнаяСистема.СпланированныеСистемынемогутфункционироватьбезсистематическогопредварительногосоглашения.ПрипараллельномпроектированииПОмыиспользуем“блокировки”длядостиженияподобногорезультата.Доказано,чтосистемаПО,использующаяблокировкидлятого,чтобыподелитьсясостояниемкомпонентов,небудетразвиваться.ВыможетепопытатьсясоздатьраспределенноепрограммноеобеспечениенаподобиеСпланированноеСистемы:поначалувсеработаетхорошо,нопочтииливовсенерастет.ВтовремякакхотьзапускЖивойСистемыизанимаетнемногобольшевремени,еепоследующийростбезграничен.
Вконечномсчете,компонентыявляются“ленивыми”иситуативно-обусловленными.Ониработаюттолькотогда,когдаестьзадачи,требующиерешения,ирастутиразвиваютсятолькотогда,когдадляэтогоестьвсеновые,выгодныевозможности.Этоозначает,чтокомпонентымогутбытьпростымииминималистичными.Крометого,онимогутрешить“проблемуландшафта”гораздоболееточно,безлишнихпрепятствийипредрассудков.ВСпланированнойСистеме,наоборот,компонентысоздаютсязаранее,исходяизпрогнозированиябудущихпроблемили,влучшемслучае,опытапрошлых.
Пример:назапланированнуюконференцииорганизаторывыбираютопределенныетемы,основываясьнаопытепрошлогогода.Сейчас,замесяцдоконференции,оченьважноесобытиепривлеклоинтереспубликиксовершеннодругойпроблеме.Какбыстросреагируюторганизаторыконференции?Конференция,которойуправляютучастники,можетизменятьсяврежимереальноговремени,втовремякакзапланированнойконференциипонадобитсячутьлинегод,чтобыкак-тоответитьнаэто.
ПротоколыЖивойСистемы
МеждукомпонентамиЖивойСистемысуществуютопределенныесвязи.Каждаясвязьпредставляетсобойкомбинациюизпотокаинформации,знанийилиобращений,вобоихнаправлениях.Лучшимспособомдлямоделированияданныхотношенийявляютсядискретныесобытияили“сообщения”,которыенесутвсебеопределенныйнаборсвязей,взаимоотношений,которыймыиназываем“протоколами”.ВестественныхЖивыхСистемахмытакжеможемнаблюдатьсообщенияипротоколы.Клетки,например,поддерживаютсвязьмеждусобойпосредствомхимическихсообщений.Мы,люди,общаемсяспомощьюнаборапротоколов,лежащихвосновенашейречи.Например,иерархии,вкоторыхмужчинызанимаютдоминирующееположение,являютсяхарактернойособенностьючеловеческогообщества,свидетельствуяотом,чтопротоколыуправленияиконтроля,накоторыхэтииерархии
Глава6-Живыесистемы
94
основаны,встроенывнашиумы,анепознаны.Ямогудажепредположить,чтомужскойразум,руководствующийсянуждойпредковорганизовыватьохотничьикампании,отвечаетзаСпланированныеСистемы.
Протоколыимеютмногообщегомеждусобой.Мывидимпротоколышироковещательныхпередач,гдеодинкомпоненттранслируетсигналмногимслушателям.Такойпротоколобычноявляетсяодносторонним.Обычнообратныйсигнал,сигналотслушателей,непоступает.
Мывидимтакжепротоколы“одинкодному”,гдедвакомпонентаобмениваютсязнаниями,заданиями,запросамиитакдалее.Такиепротоколыболееофициальныеивидеалеполностьюасинхронны.Менееофициальныепротоколыформируютсядольше,создавая,такимобразом,всеобщую“задержку”.Еслия,например,готовлю,пиццуиядолженузнатьпрокаждыйингредиент,естественно,этозайметбольшевремени.“Вылюбитегрибы?”,“какнасчетчеснока?”,“Хорошо,какойсортсыравыпредпочитаете?”.
Идеальныеотношения,связинаправленынаснижение“задержки”,поскольку“задержка”вовсейсистемеявляютсясуммой“задержек”всееепроизводственно-сбытовойцепочки.Так,еслияготовлюсебееду,мненужнопотратитьминутунато,чтобырешитькакие-товопросыотносительнопиццы,чтодобавитминутукобщемувремениприготовления.Васинхронномдиалогесмалойзадержкой,ясразужезадамвсевопросы,анадответамибудудуматьужепозже,когдаонибудутпоступатьмнеодинзадругим.
Длясозданияэффективныхасинхронныхсистемнамнужныочередиистратегическоепланированиеочередности.Видеале,мывсегдасталкиваемсясочередями,когдаожидаемсообщенияистараемсякакможноскорееперенаправитьихполучателю,вцеляхизбежаниязадержек.Намнеобходимыстратегиидляработысполнымиочередями(пространствонебесконечно):можнопростоудалитьстарыесообщенияилиприостановитьотправкусообщений(толькоэтоработаетдлядиалогов“одинкодному”,анедля“одинкомногим”).Намможетпонадобитсяочередивходящихсообщений,одназапоток,испособностьждатьсообщениянаэтойочереди.
Протоколы—неотъемлемаячастьЖивойСистемы.Онивыполняютофициальныеконтракты.Еслияспрашиваю“Вылюбитечеснок?”,вкачествеответаяожидаюлибода,либонет.Разговоропогодевданномслучаебудетнарушениемконтракта.КогдамыразвиваемнашиЖивыеСистемы,мыдолжнызафиксироватьпротоколы,чтобыизучитьегоизаверить.Ичемпрощеичетчеонбудет,темлучше.Сложные,неоднозначныепротоколытяжелыкакдляизучения,такидляреализациииневписываютсявконцепциюсвободногорынка.
Глава6-Живыесистемы
95
НекоторыеЖивыеСистемыполагаютсянадовериеииндентификационныеномера,инесмотрятнато,заверенликонтракт.Этодопустимо,нонаоченькороткийсрок,особенноприобменезнаниями,ведьонитожеуязвимыпередмошенниками.Вкачествеальтернативыможнообеспечитьпроцессподтверждениякаждогоконтрактаспомощьюмета-контрактов.Такаяпрактикачастоявляетсядажеболеепродуктивнойдляторговли.Любойтаксистхороший,покаонподвозитнаспоправильномуадресуинезапрашиваетслишкомвысокуюцену.Однакомыходимполучатьновостиизпроверенныхисточников.
Кактолькоунасестьконтакты,которыеможнолегкопроверить,мысможемсправлятьсяснарушениями.Еслиоднастратегиятерпитпоражение,всегдаестьдругая.Отказываетдругая,можнопопробоватьследующую.Однакопосленарушенияконтакта,выврядлизахотитеэтопродолжатьтакимобразом,таккакэтоможетнанестиболеезначимыйущерб.
Примеризпрактики:библиотекаZeroMQисообщество
ZeroMQсообщество—этоЖиваяСистемалюдей,котораястроитЖивуюСистемупрограммногообеспечения(подборкапрограммногообеспеченияподтемженазванием).ХотяяизначальноразрабатывалZeroMQсообществосбольшинствомсвойствЖивойСистемы,онавышлатольков2012,отказавшисьотуслугсвоихглавныхпланировщиков.
Этосообществосостоитизслабосвязанныхпроектов,имеющихобщуюцель,котораязаключаетсявобеспеченииочередейилисообщенийдлядругихсистемПО.Яутверждаливсеещеверювто,чтотолькоЖиваяСистемаможетоптимальноприменятьсясZeroMQ.
ПроектыZeroMQсвязанывцепочкипоставокофициальнымиотношенияминаосновеAPIиwire-протоколами.НетолькооформлениеэтихAPIипротоколов,ноиобеспечениеконтроляихэффективностизанимаеточеньмноговремени.Насамомделе,мыобычнонедокументируемвнутренниекомпоненты,атольковнешниеAPI.
Внейнесуществуетницентрализованногопланирования,никоординирования.Однакокаждыйпроектразвиваетсяорганично,посколькупользователивносятвнихсвоиразработкиисовершенствуютих.Длятого,чтобысделатьэтотпроцессболеепростымбылсоздандоговорZeroMQосотрудничестве,которыйгарантирует,чтоорганизациябудетрасширяться,включаявсебявсехсвоихкомпетентныхпользователей.
ЛюбойможетначатьновыйпроектZeroMQилисоздатьееновоеответвлениедляконкурированияиэкспериментов.Мыпоощряемэто,поэтомуунаснесколькоразныхтиповконкуренциинаразныхуровнях.Этохорошоработаетнапрактике.Основными
Глава6-Живыесистемы
96
лицензиямиявляютсяLGPLv3илиMPLv2,гарантирующие,чтоответвлениявсегдазащищены(разработкимогутсовершатьсявобоихнаправлениях).
УправляющейгруппойвZeroMQсообществеявляетсягруппа,возглавляемаяiMatix,фирмой,котораяразработалапервоеПО.Особоуправлять,впринципе,нетнеобходимости,заисключениемтого,чтобыпрекратитьзлоупотреблениеименем“ZeroMQ”.Четкогодокументальногооформленияпротоколовдостаточно,чтобыклиентымоглипроверятьсвоихпоставщиков.
ZeroMQоченьхорошомасштабируется.Стоимостьдобавленияновогопроектаблизкакнулю,несчитаязатратнапоисковыеработы.Проектыасинхронны,онииспользуютпунктыизGitHubизапросынавключениекода.Координированиемявляетсянезначительнымиливовсеотсутствует.Мыпроверяемкодпофакту,иисправляемплохойкодвпроцессеследующихразработок,анеобсуждаяего.
ПолнаятрансформацияZeroMQвЖивуюСистемуоказаласьсложнымпроцессом,посколькупервоначальнонебылоникакихшансовнауспех.ОсновнаячастьпроектовбесплатногоПОвсеещезависитоттщательногопланирования.Нарушениестандартныхпроцедурказалосьоченьстранным,еслинебезумным.Потеряглавныхвкладчиков—которыепредоставлялитеполномочия,накоторыхосновывалосьцентральноепланирование,—казалась,вперспективе,катастрофой.
ОднакоZeroMQбыстрымитемпамирасшириласьвпространствеипроцветало.Мыопроверглитеориюотом,чтоцентрализованноепланированиеоченьважнодлякачества.Насамомделе,мывыяснили,чтобезцентрализованногопланированияпрограммноеобеспечениеулучшилосьпокачествуиточности.ДоэтогоZeroMQбылакрайненестабильной,экспериментальнойинеотвечалапотребностямпользователей,онасталадостаточностабильной,надежнойиблизкойктому,чегохотятпользователи.
СегодняZeroMQявляетсяпримеромтого,какдолжнаправильноработатьЖиваяСистема.Онапредоставляетбольшуюценностькакхранилищеданных,таккакпредпринималисьмногочисленныепопыткизаменитьее,какпредыдущимиглавнымипланировщиками,такидругимикомандами.Примечательно,чтокаждаяСпланированнаяСистема,котораяпретендоваланато,чтобыбыть“лучше,чемZeroMQ”потерпелакрах,тогдакаккаждаяЖиваяСистема,котораяначиналаконкурироватьсZeroMQ,вконцеконцовстановиласьеечастью.
ТрансформациявЖивуюСистему
МожнолипревратитьСпланированнуюСистемувЖивую?Предположим,чтоунасестьтехническоеправо(соглашениеотдостаточногоколичестваучастниковилизаконноеправо—наличиелицензии);каковытогдапрактическиетребования?
Глава6-Живыесистемы
97
Самымсложнымбудетполучитьправильныйразмеркомпонентов.Этоозначает,чтопридетсяотбрасыватьвсторонуужесуществующиекомпонентыисоздаватьновые.Этоможетобернутьсякатастрофой,еслисделатьподобноесовсемикомпонентамисразу.Поэтому,прибольшемколичествекомпонентов,выдолжныначатьводнойобласти,выполнитьперепроектированиеипотомужеразвиватьсформировавшуюсяврезультатекультуру.
Размеркомпонентовобычнозависитотлюдей,такчтоподходящийэтотакой“скоторыммоглибыработатьнескольколюдей”.МасштабЖивойСистемысвязанстем,чтотудадобавляетсявсебольшекомпонентов,которыемогутиспользоватьизамещатьдругдругакакугодно,безувеличениясвоихразмеров.Компонентслишкоммаленький,когдаоннеможетсампосебеобеспечитьчто-иликого-либо,ислишкомбольшой,когдаоннеможетсфокусироватьсяначем-тоодном.
И,наконец,вамнужныконтракты.МыполучилихорошиерезультатыдлясистемПО,простопринявконтрактZeroMQC4.1использоватьеговместесруководствомпостилюпрограммированияиПОлицензией.
ПонесколькимпричинамянастоятельнорекомендуютакуюобщуюлицензиюкакLGPL(моятеория:есливыпользуетесьслабенькойлицензиейкак,например,ApacheилиBSD,увасточнонеполучитсясоздатьЖивуюСистему).
РанеезапускподобнойЖивойСистемыосложнялсятем,чтосамоорганизующиесяПОэкосистемыненаходилинадлежащегоотражениявдокументах,даивообщеплохопринимались.Намнехваталоэмпирическихданных,демонстрирующих,чтотакиепроцессы,какC4.1могутработать,неговоряужеотом,чтомогутработатьтакхорошо.Насколькоязнаю,тотконтрактбылпервымконтрактомвПОдляЖивыхСистем.
ЭкономикаЖивыхСистем
Какжезарабатыватьденьгинасвободномпрограммномобеспечении?Мнечастозадаютэтотвопрос.Явсегдадаюразныйответ,взависимостиоттого,скемяимеюдело—сотдельнымчеловеком,небольшойфирмой,крупнойфирмой.
КлючомкпониманиюЖивыхСистемявляетсято,чтоони,вобщем-то,ипредставляютсобойэкономику.Ниодинкомпонентненаходитсявсистемепростотак.Однаковыбормеждуэгоизмомиальтруизмом—ложнаядилемма.ВосновеЖивойСистемылежитито,идругое.Этобазоваятеорияэкономики:будучиэгоистамивспециализациииторговле,мысоздаемобщееблагополучие.Этосуперспособностьчеловека:масштабнаяспециализацияиторговлямеждуотдельнымилюдьми,семьями,поколениями,деревнями,городамиицелымирегионами.
Глава6-Живыесистемы
98
ЖиваяСистемапринадлежиткаждомуееучастнику,поэтомуееценностьгораздосложнееизмерить,втовремякакСпланированнаяСистема,которойвладеютнескольколюдейиз“верхов”,представляетсобойопределеннуювидимуюценностькакдлясвоихвладельцев,такидлястороннихнаблюдателей.ОднакообщаяценностьЖивойСистемывсегдабудетпревосходитьлюбуюконкурирующуюейСпланированнуюСистему.ЖиваяСистемаможетприноситьневероятнуюприбыль,котораяделитсямеждувсемиееучастниками.
Вотипервыйответ:ЖиваяСистемаможетуничтожитьконкурирующиеСпланированныеСистемыитемсамымприсвоитьчастьскрытыхпреждеценностей.Мынаблюдаемподобныевещивреальнойжизни:когдасвободныерыночныеэкономикипревосходятплановыеэкономики,чтоприводиткоттокуквалифицированныхработниковизпоследнейвпользупервой.
Второйответзаключаетсявтом,чтомыможемпостроитьновыерынкивуспешныхЖивыхСистемах,чтоявляетсяневозможнымвспланированных.Хорошимпримеромэтогоявляетсяинтернет:онпозволяетсоздаватьновыекрупномасштабныеэкономическиепроекты,чтопреждебылоневозможновстарыхсетях.Этиновыерынкимогутбытьоченьприбыльными.
СпланированнаяСистемаможетвыжитьтолькозасчетсвоихкомпонентов.Этомногимпохоженакультизависитоттакихметодовподдержаниякультакак,например,промываниемозгов,когданемногиепроцветаюзасчетостальных.СпланированныеСистемыпосвоейприроденеэтичны,атакженеустойчивы.Справедливомуисвободномурынкунеотъемлемоприсущамораль,несмотрянато,чтобольшоеколичествоСпланированныхСистемкакбудтобыпредставляютрынок.
Заключение
ВэтомэссеярассмотрелискусственныеЖивыеСистемы,которыекопируютреальныеЖивыеСистемыимогутбытьсозданыпоихподобию.ЖивыеСистемынаходятсявневремениипространства.Онисостоятизбольшогоколичестванезависимыхкомпонентов,которыеконкурируютисотрудничаютнасвободномрынкеуслуг,труда,ресурсовизнаний.Этикомпонентывозникаютиразвиваютсяподдавлениемрынканезависимодруготдруга.Онисуществуютисходятнанетвзависимостиоттогокакбыстроонимогутразрешитьтепроблемы,скоторымисталкиваютсяихклиенты.
КомпонентыЖивойСистемывзаимодействуютасинхронно,рассылаясообщенияповсейсистеме,поразличнымсхемам.Этипотокисообщенийвформепротоколовявляютсяобязательными.Чемточнеепротокол,темлегчеклиентамбудетвыбратьпоставщиков,темэффективнейрынок.
Глава6-Живыесистемы
99
УЖивойСистемынетглавноговладельца,которыйбыосуществлялконтроль,однако,таммогутвыбиратьсявластидляуправления(определенияиобеспеченияисполнения)контрактами.Унеенетниоднойточкиотказа.Вместотого,чтобывосприниматьнеполадки,неудачикакчто-тоэкстраординарноеилито,чегоследуетизбегать,ЖиваяСистемаучитсянаних.Неисправныйкомпонентзаменяетсянаисправный.
ЖивыеСистемыразвиваютсяпутемобучения,соединяясьвцепипоставок,которыесвязываюткомпонентысвнешнейсредой,окружающиммиром.МыможемизмеритьэффективностьЖивойСистемы,посмотревнапериодожиданиясмоментапоступлениявсистемупроблемыидоееразрешения.ВСпланированныхСистемахпериодыожиданиямогутдлитьсягодами,вхорошоадаптирующихсяЖивыхСистемах—несколькочасов.
Такимобразом,будучирациональноорганизованными,ЖивыеСистемыточнооцениваютстепеньсложностипроблемыиобъемзатратнанеерешение.ВотличиеотСпланированныхСистем,ихспособырешенияпроблемоснованынареальныхданных,аненапредположениях,догадкахиустаревшихданных,чтопозволяетимработатьточнее,быстрееидешевлепосравнениюсоСпланированнымиСистемами.
ЧтобысоздатькрупномасштабнуюЖивуюСистемувпрограммномобеспечении,создайтетакуюжесистемуизлюдей.Онибудутсотрудничать,развиваться,правильнофункционироватьитемсамымдоминироватьналюбомрынке.ВтовремякакконкурирующиеСпланированныеСистемыбудуттерпетьпоражение,разрушаясь,функционируяпоотдельности,конкурирующиеЖивыеСистемыбудутстремитьсяктому,чтобыспециализироватьсявразличныхсферах,авследствиесливатьсяводнубольшуюединуюЖивуюСистему.
Глава6-Живыесистемы
100
ПослесловиеЭтакнигарассказываетдлиннуюисторию,котораяначалась,когдаяпрочиталразмышленияСтоллманаонаписанииегопервогосвободногопрограммногообеспечения.В2005годумыстроилионлайновыесообществасознательноиагрессивновполитическихцелях.Тогдамысистематизировалитеориюиприменялиеесноваиснова.В2007годуяиспользовалэтизнаниядлясозданиябольшогосообществадляплатформыWikidot.com,вкоторуюявложилкапитал,ибылгенеральнымдиректором.В2009годуяиспользовалэтизнаниякачествеосновыдлясообществаZeroMQ,ик2011годуполностьюсжегстарыенеуклюжиепаттерныизаменилихмодернизированнымисовременнымитехниками.
Мывсеещеучимся,делаянашипроцессыболеепростыми,анашиинструментылучше.C4недлявсех.Требуетсямужествоприниматьнеизвестныхвкладчиковидоверятьимпоумолчанию.Требуетсяопыт,чтобыпонять,чтозаоднойиздвадцатиулыбокскрытнедоброжелатель.Этиурокимедленноучатнас.Дажесполнымруководствомвампонадобятсягодычтобыегопонять.Поэтомупрактикуйтесь,будьтеготовычастотерпетьнеудачуибытьсчастливыми.:)
Послесловие
101