social architecture [ru] - ibragimov ruslan · 2020-06-01 · даже самый умный...

101
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

Upload: others

Post on 06-Aug-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

Page 2: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

СоциальнаяАрхитектура-ПитерХинченсДаннаякнигабылапереведенаиопубликовананаресурсеHabraHabrвблогекомпанииPhilTech.

Полныйпереводкнигипропостроениесообществ:«Социальнаяархитектура».

Оригиналкнигинаанглийскомязыке.

Переводчики:

АлексейСтаценко-Координаторпроекта

СергейДаньшин-Предисловие,Главы1-5

КристинаСтрельцова-Стратагемыдляуспехаopensourceпроектов

КатяШихова-Глава6

РусланИбрагимов-Послесловие

ОПереводе

2

Page 3: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

МудростьтолпыВ«РассужденияхопервойдекадеТитаЛивия»НикколоМакиавеллиестьследующиестроки:

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

Всвоейкниге«Мудростьтолпы»ДжеймсШуровьескиписал:«приправильныхусловияхгруппымогутбытьоченьумными,азачастуюмогутбытьнамногоумнее,чемдажесамыйумныйчеловеквнутригруппы».Онзаметил,чтоколлективныйразумобычнопоказываетлучшиерезультаты,чемнебольшаягруппаэкспертов,дажеесличленыгруппыневладеютвсемифактамииливедутсебяиррационально,поступаяпо-своему.

Другимисловами,группаслучайныхлюдейвсреднембудетумнеенесколькихэкспертов.Этоттезиспротиворечитздравомусмыслуивыглядитнасмешкойнаднакопленнойвекамимудростью.Экспертывобластичеловеческогоинтеллекта(социологи,антропологи,психологи)встретилиидеиШуровьескидалеконесраспростертымиобъятиями.Онпошелдальше:«добавиввгруппуспециалистов,высделаетеееглупее,адобавивдилетантов,повыситеопятьееинтеллектуальныйуровень.Какилюбойрецепт,этоработаеттолькоприопределенныхобстоятельствах».

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

Этонамерениедалоначалопроцессупопостроениюумных,самоуправляемых,успешныхонлайн-сообществ,которыераззаразомопережалиэкспертныегруппы.ЭтудисциплинуяназвалСоциальнойАрхитектурой,чтопозволяломненекотороевремяназыватьсебя«СоциальнымАрхитектором»(сегодняя—пытающийсяпробитьсяписатель,этозвучитромантичней).

Предисловие

3

Page 4: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

СоциальнаяАрхитектурапоаналогииспривычнойархитектуройявляетсяпроцессомирезультатомпланирования,разработкиистановленияонлайн-сообщества.Социальнаяархитектураввидеонлайн-сообществ—этокультурныеиполитическиесимволыипроизведенияискусствацифровогообщества.21векбудетознаменованзарождениемСоциальныхАрхитекторов.

Успешныеонлайн-сообществаобычнооснованынадоговоренностиовзаимнойвыгоде,подразумеваемойилиявной.Т.е.этовозможностьпостроитьбизнеснамиллиарддолларов,основанныйнадобровольномтрудеучастников,действующихизэгоистическихпобуждений.Частоучастникинеосознаютилинепридаютзначениятому,чтоониявляютсячастьюсообщества.Однакоподоплекалюбогонашегодействия—получениевыгоды.«Краудсорсинг»являетсяэксплуатациейдобровольноготрудадляполученияприбыли.Иэтоработаеттольковтомслучае,когдатолпанасамомделехочетрешитьпроблему,которуювыподбросили,иликоторуюонаобнаружила.

МудрееипостояннеевсякогогосударяМакиавеллинедалобъясненийилиподтвержденийсвоемунаблюдению.Однакопониманиетого,чтоколлективнаяволяявляетсябезошибочнойисправедливой—voxpopuli,voxDei—пронизываетсовременнуюкультуру.Онаподдерживаетвнасверувдемократиюиоправдываетнашитребованияпрозрачностиидоступакинформации.Этоосновасовременнойэкономики,составляющиечастикоторой—свободавыбораиторговли.

Шуровьескиопределилчетыреэлемента,необходимыхдляумнойтолпы:разнообразиемнений,независимостьчленовдруготдруга,децентрализацияиэффективныеспособыагрегироватьмнения.Онописываетобразцовуюумнуютолпукаксостоящуюизмногихнезависимомыслящихиндивидуумов,которыетесносвязаны,которыегеографическиисоциальноразделены,которыебеспристрастныкпредмету,каждомуизкоторыхдоступнымногиеисточникиинформацииикоторыеимеютнекуювозможностьобъединитьсвоииндивидуальныесужденияводноколлективноерешение.

СогласноШуровьескиумныетолпывыносятболееточныеибыстрыерешения,самоорганизуютсядлялучшегоиспользованияресурсовисотрудничаютбезцентральнойвласти.Некоторыепримерыумныхтолп,такиекакВикипедия,чрезвычайноуспешны,несмотрянаинтенсивнуюинепрекращающуюсякритикусосторонынегативистовиатаквандаловиконкурентов.Этиидеинастолько

Предисловие

4

Page 5: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

Естьмногохорошихобъясненийдляглупостимногихтолп,ияисследуюдетальноэтотвопросвсвоейкниге«КультураиИмперия»,откудабылавзятаэтачасть.Малоктопыталсяобъяснитьглупостьтолпысточкизренияколлективногоинтеллекта.Абезясногопониманияправильногодействия,какмыможемнадеятьсяобъяснитьнеправильное?

Поэтомуочевиднаянеудачаколлективногоразумаубеждаетмногихвтом,чтоэтолишьзабавнаятеория,котораянепримениманапрактике.Ивсежееслимыпосмотримнаонлайн-сообщества,напримернате,которыеформируютсявокругпопулярногоopen-sourceпроектапрограммногообеспечениявродеZeroMQ,мыувидимгруппы,оченьпохожиенаописанныетолпыШуровьески.Ипока,можетбыть,сложноопознатьумныетолпывреальнойжизни,кажется,чтоониявляютсядоминирующеймодельюонлайн.Пробыиошибкипозволилицифровомуобществузановооткрытьпринципыумнойтолпыиперенятьихвкачествесвоихбазовыхпринциповдействия.

Решениецифровогообществадревнейпроблемыкоррумпированнойвластиэлегантноиуспешно.Существуютбуквальномиллионысообществ,каждоеизкоторыхполагаетсянавластьсвоихоснователей.Гражданецифровогообществасвободновыбирают,какиевластиуважатьикакиеигнорировать.Основнойфокусзаключаетсявпринятиивластибезнаделенияее«правом»командовать.

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

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

Предисловие

5

Page 6: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

МоепутешествиевобластьСоциальнойАрхитектурыначалосьвконце1990-хгодовсизучениякнигиотом,каккультыэксплуатируютнашисоциальныеинстинкты.Секты—местонеизприятных,конечно.Однаколюдейвнихзатягиваетпотому,чтомывсе—социальныеживотные,которыепоследниймиллионлетрадивыживанияразвивалиинстинктобъединенияиобразованиягрупп.Готовностьуважатьвласть,подчинятьсяправилам,изучатьобщиеязыкииадаптироватьсяподобщееповедениесталодлянасвторойнатурой.Сектыподвергаютсвоихчленовидеологическойобработке,играянаэтихинстинктах.Ониразделяютчленовсихсемьями,исключаютуединение,перегружаютжаргоном,создаютдеспотичноеправление,беспорядочнонаказываютинаграждают.

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

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

Последнеенаблюдениенеобычно.Еслимолотокразбиваетокно,товрядличто-тоизменится,есливыперевернетемолоток.Нонанекоторыхпримерахэтонаглядновидно.ВотоднаизтехникссайтаCIC:«Социальноедавлениевгруппе:подавляйтесомнениеисопротивлениеновымидеям,играянапотребностивпринадлежностикгруппе».Реверс—снижениестоимостиприсоединениякгруппеивыходаизнеебудетспособствоватьвозникновениюновыхидейикритики».Иливот:«Исключениеуединения—способностьдаватьлогическуюоценкубудетснижатьсяприотсутствиивозможностиразмышлятьнаедине».Еереверс:«предоставьтелюдямпространствоивремядляуединения,ионистанутлогичнейразмышлять».

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

Предисловие

6

Page 7: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

В2000г.интернетещенесталдостаточнодешевымдлямасс,иopen-sourceсообществабылималенькими,региональными,сосредоточеннымивокругуниверситетов.Такиеopen-sourceсообществакакDebianFoundationдосихпорфункционируюткакклассическиенекоммерческиеорганизации,каклегальныеюридическиелицассоветомдиректоров,казначеямиипр.

В2005г.ясталучастникомрядасовместныхпроектов.Соднойстороны,ябылвовлеченвпроектFFII,направленныйнаборьбуспатентаминапрограммноеобеспечениевЕвропе.Мы(хорошиепарни)выступаливевропейскомпарламенте,спорилисЕвропейскимпатентнымофисом(плохиепарни),организовывалисеминары,предлагалипоправки,собиралиголосаи,вообщеговоря,участвоваливсильнейшемлоббировании,которомукогда-либоподвергалсяБрюссель.

Сдругойстороны,язанималсяразработкойоткрытыхстандартов,начинаясAdvancedMessageQueuingProtocol(AMQP).Культурныйконтрастмеждуэтимидвумяорганизациямибылоченьсильным.FFIIбылагруппойбезумныхдобровольцев,невероятнокреативных,преисполненныххолодной,жесткойрешительностьюостановитьSAP,Siemens,MicrosoftиNokia(ещеболееплохиепарни)вихстремленииизменитьевропейскоезаконодательствосцельюлегализациисерогорынкапатентовнапрограммноеобеспечение.ВрабочуюгруппуAMQPвходилибанкиикрупныекомпании-разработчикипрограммногообеспечения,которыетожеоказалисьпо-своемубезумны,иприэтомболеенеприглядны.

Оказавшисьокруженнымсовсехсторонбезумием,явдругопятьподумаловажностиисследованийсоциальныхинстинктовисектантскихтехник.СмоимидрузьямиизFFIIмызапускаликомпаниюзакомпанией.Сайты,петиции,рассылкипоэл.почте,конференции…этомунебылоконца.Большинствоизнашихкомпанийнедостигалидостойногомасштаба,лишьнекоторыеизних.Ночтоважнее,втечениетрехлетмыэкспериментировалиисобиралиинформацию.

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

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

Предисловие

7

Page 8: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Определитеубедительнуюмиссию,чтобыпривлечьновичков.Сделайтетак,чтобылюдямбылолегченачинать.Приветствуйтеспорыиконфликты,ведьвнихрождаютсяхорошиеидеи.Систематическиделегируйтеполномочия,создавайтесоперничество.Работайтебольшесдобровольцами,чемснаемнымисотрудниками.Добейтесьразнообразияиразмаха.Пустьлюдивладеютработой,анеработа—людьми.

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

Мойсамыйкрупныйинаиболееуспешныйэкспериментнасегодня,ккоторомуябудучастообращаться—этосообществопрограммногообеспеченияZeroMQ.Оновырослоизкоманды,собиравшейсянаодномизчердаковСловакии,вмировоесообщество,ионоиспользуетсятысячамиорганизаций.Крометого,ZeroMQбылополностьюсозданоируководилосьсвоимсообществом:болеестасоздателейкорневойбиблиотеки,иболеестасвязанныхсэтимпроектов.

Предисловие

8

Page 9: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

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

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

Четкаямиссия–заявленнаяпричинасуществованиягруппы.Свободноеучастие–наскольколегколюдимогутприсоединитьсякгруппе.Прозрачность–насколькооткрытоипубличнопринимаютсярешения.Бесплатныеучастники–какмногоможноплатитьлюдямзаучастие.Свободаработысматериалами(ремиксабельность)–насколькосвободноучастникимогутиспользоватьработудругдруга.Четкостьпротокола–насколькохорошопрописаныправила.Компетентностьвласти–насколькохорошоследятзасоблюдениемправил.Нон-трайбализм–насколькодалекораспространяютсяправагруппынадсвоимиучастниками.Самоорганизация–насколькосвободномогутучастникиопределятьсвоизадачи.Толерантность–какгруппаразбираетсясконфликтами.Измеримыйуспех–какхорошогруппаможетотслеживатьсвойпрогресс.Высокоенаграждение–какгруппавознаграждаетсвоихучастников.Децентрализация–насколькоширокораспределеныучастникигруппы.Свободнаярабочаясреда–наскольколегкосоздаватьновыепроекты.Стандартнаяструктура–насколькообщаяструктурастабильнаипредсказуема.Плавностьобучения–наскольколегконачатьипродолжитьучиться.Позитивность–насколькогруппадвижимапозитивнымицелями.Чувствоюмора–насколькосерьезногруппасебявоспринимает.Минимализм–скольколишнейработыделаетгруппа.Разумноефинансирование–какгруппаборетсязавыживаниевэкономическомплане.

СпасибоСергеюДаньшинузапомощьспереводом.

Мырассмотримэтиинструментыпоочередноиувидим,какониработаютвразныхсообществах.Дляначаланесколькообщихсоветовосозданиисообщества.Будьтепредельночестныссобойисдругими.Главноедлявас–этопреодолетьсобственныепредубежденияипристрастия,аужепотом–те,чтоприсущивашимколлегам.

Глава1-Инструментарий

9

Page 10: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Какимбыинструментомявасниснабдил,вызахотитеадаптироватьегоиподогнатьксобственнымнуждам.Социальнаяархитектураявляетсявсеещемолодойнаукой,имногиеизмоихинструментовбудутслишкомгромоздкимиилинеполными.

Вотлучшийспособ,какпоступить:

Пользуйтесьвашимсобственнымпродуктом.Есливынебудетефанатичнымпользователемпродукциивашейгруппы,считайтесебяполуслепым.Яосозналэто,когдаработалвкомпании-производителепиваNigerianBreweriesв1990-хгодах:наслаждаясьпивом,янаучилсяоцениватьбизнеспопродажепиванамногоглубже.Практикуйтесьиповторяйтепройденное.Экспериментироватьдешево,анеудачинеизбежны.Насамомделе,есливыначнетепроект,аоннеудастся,тониктоинезаметит.Поэтомуначинайтемногопроектовименяйтеилиотлаживайтевашиинструменты,еслионинеработают.Займитесьоперативнойподдержкойпользователей.Вовсехсообществахестьместа,кудаобращаютсяновички,чтобызадатьвопрос.Будьтетам,наблюдайте,почемуновопришедшиетеряются,какиеделаютошибки,инаосновеэтоговноситесоответствующиеправкиввашуразработку.Возможно,онизаблуждаютсянасчетосновногопредназначения.Или,может,имнепонятнаструктура.Хорошийразработчиксимпатизируетсвоимпользователям,сопереживаетипомогаетим.Выпускайтерелизсразуипочаще.ЭтомантраразработчиковсвободногоПО.Этооченьправильно.Выхотитевестиразработкувоткрытуюиполучатькритическиеотзывы,ичемраньше,темлучше.МывZeroMQвыпускалипатчи,кактолькоонибылиготовы.Учитесьипреподавайтепостоянно.Обучениедругихпозволяетвидетьперспективу,аизучениеновогосамомупозволитвдальнейшемиспользоватьновыеинструменты.Социальнаяархитектура–молодаядисциплина,ихотяеекорниуходятвглубьчеловеческойпсихологии,переднейещестоитмноговопросов.

Четкаямиссия

Отправнаяточкасозданиялюбогосообщества–формулировкаегомиссии.Онаопределяетцели,которыемыразделяем,ещедотого,какприсоединитьсякпроекту.Этокакзаголовоксайтаилирекламныйлозунгфильма.Например,заголовокуRedditзвучиттак:«главнаястраницаинтернета»–амбициознаямиссия,которая,темнеменее,выполнена.СлоганФейсбука:«помогаетвамсвязатьсяиподелитьсяслюдьмиввашейжизни».

Глава1-Инструментарий

10

Page 11: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

СОВЕТ:используйтевашумиссиювкачествеслогананасайте,врекламе,впрезентацияхит.д.Есливыинвестируетеденьгиввашесообщество,подумайтеотом,чтобызарегистрироватьформулировкумиссиикакторговуюмарку.

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

Реакциялюдейнамиссиюкомпаниинедолжнабыть«да,этоблагоразумно»,анаоборот:«выжеэтонесерьезно,так?!».МиссияВикипедии–«бесплатнаяэнциклопедия,которуюлюбойможетредактировать»,–хорошийтомупример.Этобылоизначальнойцелью,поэтомувсепрочие,кромесчитанныхидеалистов,отнеслиськэтомукаккчему-тоневозможномуибредовому.НаэтоибылрасчетВикипедии:чтобыэтиидеалистыоднаждывзошлинаборт.Невозможныецелипривлекаютправильныхлюдейкмолодомупроекту.

СОВЕТ:Меняйтемиссиюпомеревзрослениявашегосообщества.Вначалевызахотитепривлечьмолодыхидеалистовипервопроходцев,потом–лидеров,апотом–первыхадептов,широкуюобщественность,дальнейшихпоследователей.Каждаяизэтихгруппстремитсякразному.Понявэто,соответственноизменитемиссию.

Чтобысформулироватьхорошуюмиссию,ориентируйтесьнаоднуосновнуюпроблему,которойпосвященвашпроект.Reddit,например,решаетпроблемутого,какполучитьновостиизинтернетаприслишкомбольшомколичествересурсовсинтереснойинформацией.Его«основнаястраница»представляетсобойцифровуюгазету21-говека.Википедиярешаетпроблемуаккумулированиязнаниймиллиономумов.Слова«любойможетредактировать»–также,каки«Гласнарода–гласБожий»,–говорятотом,чтоеслиивозможнонайтиистину,тотолькосообща.

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

Глава1-Инструментарий

11

Page 12: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ВслучаесZeroMQнашамиссиязвучалатак:«Быстрейшая.Передачасообщений.Всегда».Этохорошееипочтиневозможноерешениепроблемы,насчетсуществованиякотороймывсесоглашались,аименно:доступныенатотмоменттехнологиибылимедленнымиинеповоротливыми.Втожевремя,мысмоимпартнером-основателемМартиномрасходилисьвцелях.Онхотелсоздатьлучшийизвозможныхпрограммныхпродуктов,яжехотелсоздатькрупнейшееизвозможныхсообществ.Померетого,какрослочислопользователей,егодраматическоеизменение,чтосломалосуществующиеприложения,причинилоусиливающуюсяболь.

Вданномслучаемысмоглисделатьвсехсчастливыми(Мартинушел,чтобыработатьнадсозданиемновойбиблиотеки,названной«Nano»).Темнеменее,есливынеможетеразрешитьпротиворечия,касающиесямиссии,онимогутсерьезнонавредитьпроекту.Проектымогутвынестимногиеспоры,авотразногласиямеждуоснователямидовольнотравмоопасны.

СОВЕТ:Еслиоснователисогласны,что«успех»определяетсякак«максимальновозможноеслоучастников»,товпоследующиегодыэтоможетпомочьвсохранениицелеустремленности.Этотакжеоблегчаетизмерениевашегоуспехапомереразвития.

Свободноеучастие

Определившисьсмиссией,вамнужнопротестироватьеевреальноммире.Этозначит,вамнужнодатькраткий,ноубедительныйответнатупроблему,накоторуювынацелились.Яназываюэто«посевом».Этотпроцесспреследуетдвеосновныецели.Во-первых,начатьсобиратьидеалистовипервопроходцев(восновномтех,ктобылнастолькобезумен,чтобыповеритьвам)всообщество.Во-вторых,доказатьилиопровергнутьвашумиссию.

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

СОВЕТ:Привлекитек«посевному»проектувниманиепубликиивдохновляйтелюдейприсоединятьсякнемуссамогоначала.Еслилюдивовлекаютсявпроект,скорееихпродвигайте.Аеслиэтогонепроисходит,тосчитайтеэтознакомтого,чтовашамиссияможетбытьложной.Используйте«посевной»проект,чтобысоздатьсообщество.

Глава1-Инструментарий

12

Page 13: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Когдалюдисоглашаютсяпомогатьвам,нужнообеспечитьимместодлясовместнойработы.Вамнужна«платформадлясотрудничества».Двемоихсамыхлюбимых:WikidotдляинформационныхсообществиGitHubдляпроектовпоразработкеПО.Платформадолжнабытьбесплатной.Снейдолжнобытьлегкоивучебеивработе.Вашпосевнойпроектдолженбытьвиденанонимнымучастникам.Ондолженработатьдлякогоугодно,внезависимостиотегоилиеевозраста,пола,образованияилиместоположения.

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

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

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

Решениемявляетсясвободныйдоступдлявсехзаинтересованных,какойбыбезумнойинепохожейнибылабыихточказрения.Этодаетнамвперспективеширокоеиразностороннеесообщество–предшественникумнойтолпы.ВZeroMQмыникогданеотворачивалисьоттех,ктохотелучаствовать.Явтягиваюлюдей,дажееслиихвкладвобщееделомалилиневерен.Сообществоважнее,чемпродукт.

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

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

Глава1-Инструментарий

13

Page 14: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

время,чтобыоценитьто,чтовыпытаетесьсделать.

Прозрачность

Прозрачностьоченьважнадлябыстрогополучениякритикиидейипрогрессавработе.Еслинескольколюдейизкомандыотчаливаютиработаютнадчем-нибудьвместенекотороевремя,напримерпарудней,ничегострашного,новоткогдаречьидетонеделях,тогдато,чемонизанимаются,следуетпредставитьгруппекаксвершившийсяфакт.Еслиодинчеловектакпоступает,тогруппаможетпростоотмахнутьсяотнего.Ноеслидвоеилибольше–становитсясложнымоткреститьсяотплохихидей.Секретностьинекомпетентностьидутрукаобруку.Группам,работающимвтайне,непостигнутьмудрости.

СОВЕТ:Когдаодинчеловекделаетчто-товтемномуглу–этоэксперимент.Когдадвоеилибольшеделаютчто-товтемномуглу–этотайныйзаговор.

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

Иронично,чтотайнакажетсянеотъемлемойвнекоторыхбизнес-моделях.Прибыльчастоприходитотигнорированияпотребителей.Большинствокоммерческихпредприятий,дажетакиебольшиесообщества,какTwitter,зависятотстрогогоразграничения«их»и«нас».Однакоцифровоеобществолучшевсегорастет,когдамасштабприоритетнейприбылейикогдаотноситсякпренебрежениюкаккпроблеме,требующейрешения.Есливашиклиентынедопускаютсядовашихвнутреннихпроцессов,товамбудетзакрытдоступкпониманию,гдевнихкроютсяошибки.

Бесплатныеучастники

Деньги–забавнаявещь.Слишкоммало–исообществобудетумиратьсголоду(явернуськэтомупозже).Слишкоммного–начнетсяразложение.Необходимопонимать,почемукаждыйизучастниковвообщезанимаетсяэтим.Какиеунихэкономическиемотивы?Дажевдобровольныхсообществахкаждыйучастникпреследуетсвоиинтересы.

МывZeroMQизначальноначалисмалооплачиваемойгруппыичерездвагодапришликдобровольномусообществу,прагматично–еслинесказатьциничнее–умышленнопотративденьгииоказавшисьвынужденнымиуволитьразработчиков.

Глава1-Инструментарий

14

Page 15: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Некоторыеизнихрастворилисьвдругихкомпаниях,некоторыевернулисьвкачествеучастников,ипроектсталболеезахватывающимивеселым,чембылраньше.ЛюдиработалинадZeroMQ,потомучтоимэтобылонужнодлясобственныхпроектов–потративнемноговременинаегоулучшение,онивыигрывалиилиэкономиливразыбольше.

Когдавыработаетенакого-то,тобудетеделатьто,чтоонилионахочет.Когдавыработаетенасебя,выделаетето,чтонужновам.Этоогромнаяразница.Людисденьгами,нобезнавыковиливкуса,–шелухаобщества.МыпрезираемоплачиваемыхучастниковВикипедии,платныхблогеровимодераторовнаReddit,потомучтомызнаем,чтовыражаемыеимимненияпочтипоопределениюложь.Будетлиблогер,проплаченныйГолливудом,критиковатьновыйлетнийблокбастер?

Янеимеюничегопротивнаемныхсотрудников.Однакоесливынацеленынасозданиенаиболеекрупного,наиболееуспешногосообщества,товамнужныучастники,которыйбудутстаратьсяпочестным,понятнымпричинам.ЕсликинорежиссёрприходитнаRedditобсудитьфильм–здорово.Еслиегомаркетологизаходят,чтобыпотеретькритическиекомментарии,этоотвратительно.

СОВЕТ:одинбесплатныйучастникстоитдесятиоплачиваемыхсотрудников.

Свободаработысматериалами(ремиксабельность)

Группетребуетсямногодоговоренностей,чтобыработатьсообща.Яназываюих«протоколами».Наверно,самыйважныйизнихдлятворческогосообщества–возможностьперерабатыватьматериал(ремиксабельность).Будьтомузыка,искусство,изображения,видео,комментарии,программыилиwiki-страницы,встанетследующийвопрос:«Ачтозаавторскаялицензиястоитзаэтимматериалом,икакэтозатронетсообщество?».

Грубоговоря,естьтритипаавторскихлицензий:

А)лицензияlockeddownнепозволяетперерабатыватьматериал.Этостарыйспособвестидела,ионвсеещедоминируетвкоммерческойдеятельности.Б)лицензияfreetotakeпозволяетодностороннююпереработку.Этодоминирующаямодельдлямногихopensourceсообществ.В)лицензияshare-alikeпозволяетдвустороннююпереработку.Этопреобладающаямодельдлясообществбесплатногопрограммногообеспечения,такихкакZeroMQ,идлямногиххудожественныхсообществ(хотяэтоможетбытьинеписанойдоговоренностью).

Глава1-Инструментарий

15

Page 16: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

Всежесообществаработаютлучшестретьеймоделью,т.к.тогдапользователистановятсяучастниками.Слицензиейshare-alikeдиджейсмогбыиспользоватьремикс,ремикшироватьегоещеипревратитьвдискотечныйхит.Знанияиидеитекутвовсехнаправлениях,аневытекаютизсообществавзастойноеболото.Этомощноетечение,иэтоособенноважнодлятехизнас,ктостроитсообществасминимальнымбюджетом.Есливыявляетеськрупнойкомпанией,вкладывающейкучуденегвсообщество,томодельfreetotakeвамподойдетлучше.

СОВЕТ:Есликаждыйучастниквладееттем,чтоонпривнесвсообщество,авыиспользуетелицензиюshare-alike,вамнетребуютсяпереуступкиавторскихправиливозобновлениелицензииотучастников.

Четкостьпротокола

Хорошиепротоколыпозволяютпосетителямучаствоватьбезпредварительногоодобрения.Ониразрешаютдеструктивныеконфликтыипревращаютихвполезныесостязания.То,чтоанархистымогутприсоединятьсякумнойтолпетакжеуспешно,какилюбойдругой,объясняетсятем,чтотолпаможетразрабатыватьсвоисобственныеправила.Обычноэтиправилакасаютсяпереработкиматериала,идентичности,ранговит.д.Неважно,какаяунихформа,хорошиеправилапросты,четки,яснопрописаныивсемиодобрены.

Есливысоздаетепроектвобластипрограммногообеспечения,выможетевзятьсуществующееруководство,например,протоколС4,которыймысделалидляZeroMQ.Илижевыможетеначатьсминимумоминструкцийидобавлятьихпомереопределениятехпроблем,скоторымисталкиваетсясообщество.Кслову,такбылоисруководствомВикипедии.Некоторыеправиладолжныбытьустановленыссамогоначала(например,обавторскихправахиучастии).Другиемогутбытьпридуманыпомеренеобходимости(например,процедураразрешенияконфликтов).Сложные,бесцельныеилинепрописанныеправилаотравляютгруппу.Онисоздаютпространстводляспоров,путаютлюдейиповышаютстоимостьвходавгруппуиливыходаизнее.

СОВЕТ:Пишитеаккуратновашиправила,начинаяслицензиинаконтент,иоценивайте,насколькоонипомогаютлюдям.Изменяйтеихпомеренеобходимости.

Глава1-Инструментарий

16

Page 17: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Компетентностьвласти

Безоргановвластиправиланеимеютсилы.Основателисообществаиосновныеучастникиявляютсяде-фактоихпредставителями.Еслионизлоупотребляютсвоимположением,онитеряютучастников–ипроектумираетлиборазветвляетсявзависимостиотразличныхправил.Властьдолжнабытьмасштабируемая(тоестьбытьспособнойохватыватьдеятельностьгруппылюбогоразмера)идопускатьпередачупомереростаиизменениягруппы.

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

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

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

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

СОВЕТ:Есливыинвестируетеденьгивсообщество,рассмотритевариантиспользованияторговоймаркивСША,чтобыиметьвозможностьпредотвращатьиспользованиедругимилюдьмипохожихимитирующихназваний,которыенеимеютквамотношения.Этостоитоколо750долларов.

Нон-трайбализм

Членстводолжнобытьсимволомобъединения,анеслужитьудостоверением.КакчастоотмечалМистерСпок,эмоциинелогичны.Некоторыегруппыруководствуютсялогическиобоснованнымицелями,вдругихжеправятэмоциональныефакторы,такиекакдавлениесосторонычленовсвоегокруга,стадныйинстинктидажеколлективнаяистерия.Определяющиммоментом,видимо,служатотношениямеждугруппойиееучастниками.Мыможетвыявитьэтовопросом:участники«исключительно

Глава1-Инструментарий

17

Page 18: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

СОВЕТ:Держитесьподальшеотформальныхмоделейчленства,особеннотех,которыестараютсяпревратитьлюдейвсобственностьгруппы.Позволяйтеанонимноеилинеперсонализированноеучастие.Поощряйтелюдейсоздаватьсвоиконкурирующиепроекты–пространстводляэкспериментовидляизучениянового.

Группыиндустриальнойэпохи,словнокульты,владеютсвоимичленами.Сотрудникпринадлежиткомпании.Дажеидеи,которыепришливамвголовуподдушем,–тожесобственностьвашегоработодателя.Акогдагруппавладеетсвоимиучастниками,томотивируетихстрахом,ненавистью,завистьюизлостью,подменяясознательныелогичныемотивы.Страхисключенияширокоиспользуетсядляподчинениялюдейодномустандарту:«Делай,чтояговорю,илияуволютебя!».

СОВЕТ:Дляопределениятого,насколькогруппапохожанаплемя,простоначнитеконкурирующийпроект.Еслиреакциянаэтоотрицательнаяиэмоциональная,вгруппедоминируетродоплеменнаяпарадигма.Вгруппесоздоровойатмосферойаплодисментамивстретятсвоихсоперников.

Самоорганизация

Некоторымлюдямнравится,когдаимговорят,чтоделать.Лучшиеучастникиикомандысамивыбираютсебезадачи.Успешноеобществораспознаетпроблемыисамоорганизуетсядляихрешения.Болеетого,оноделаетэтобыстрееилучше,чемлюбаяиерархическиуправляемаяструктура.Этозначит,чтосообществодолжноприниматьпомощьвлюбойобласти,безограничений.

Распределениезадачсверхувнизявляетсяантипаттерномсприсущимиемумногимислабостями.Оннедаетиндивидуумамдействоватьприобнаруженииимипроблемы.Длянегохарактерныфеоды,гдеработаинеобходимыересурсыпринадлежатотдельнымлюдям.Онсоздаетдлинныекоммуникационныецепочки,которыенепозволяютреагироватьбыстро.Емутребуютсяпрослойкименеджеров,просточтобысоединитьтех,ктопринимаетрешения,стеми,ктобудетвыполнятьработу.

СОВЕТ:Пишитеправила,чтобыповыситькачествоработы,подчеркивающие,чтокаждыйможетработатьнадтем,чтоемуинтересно.

ВсообществеZeroMQмыизбавилисьотназначениязадач.Например,мынепринимализапросыокаких-либоособенныхфункциях.Есликому-тонужнабыласпециальнаяфункция,тоонлибопосылаетнампатч,либопредлагаетоплатить

Глава1-Инструментарий

18

Page 19: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

СОВЕТ:Сообществамтребуетсяиерархияполномочий.Однакоонадолжнабытьподвижнойистрогоделегированной.Тоестьвыбирайтелюдей,скоторымивыработаете,ипозвольтеимвыбиратьтех,скемонибудутработать.Структураполномочий,словножидкийцемент,оназатвердеваетисковываетдвижениялюдей.Любаяструктурастараетсясебязащитить.

Толерантность

Вразношерстнойгруппевозникаютконфликтующиемнения,издороваягруппаэтиконфликтыохватываетиперерабатывает.Критики,иконоборцы,вандалы,шпионыитроллидержатгруппувнапряжении.Онимогутбытькатализаторомвовлеченностиостальныхучастников.Википедияпроцветаетблагодаря,аневопреки,тем,ктокликает«Edit»сцельюпревратитьстатьювмешанину.Этоклассическийантипаттерн,подавляющийидеиивзглядыменьшинства,используяпредпосылку,чтоони«опасны».Ктомужеэтонеизбежноподавляетновыеидеи.Логикаобычновтом,чтослаженностьгруппыважнееееразнообразия.Потомжеполучаетсятак,чтонаошибкинереагируют,алишьещебольшеобособляются.Насамомделе,группаможетбытьважнее,чемрезультатыеедеятельности,еслионамногообразнаиоткрытановымаргументам.Этотрудныйурок,которыйполезениобществувцелом:нетопасныхсуждений,естьопасныеответы.

То,каксообществаразбираютсястроллямиивандалами,этоодно.Разобратьсясфундаментальнымиотличиямимнений–этодругое.Ранееяговорил,чтоконфликтующиедругсдругоммиссиимогутстатьпроблемой.Лучшеерешение,котороеязнаю,–этопревратитьконфликтвсостязание.Кпримеру,браузерGoogleChromeсталболеелегкой,болеебыстройальтернативойFirefox,которыйстановилсяраздутымимедленным.ТогдакомандаFirefoxвзяласьзаделосумом,итеперьFirefoxработаетбыстрее,чемChrome.

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

Измеримыйуспех

Всеэтохорошо:пытатьсяобратитьконфликтвсостязание.Однаковамнеобходимообеспечитьучастниковгруппыинформациейотом,какхорошоонисправляются.Лучшиеинструменты,такиекакGitHub,показываютточноечислолюдей,которые

Глава1-Инструментарий

19

Page 20: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

наблюдаютилиотметилипроектилиначалипроект-ответвление(отраженыразличныеуровниинтересаиприверженности).

Конечноже,Сетьвсегдабылаозабочена«хитами»ианализомтраффика,которыйпоказываетпопулярностьсайтаилистраницы.Этооблегчаетизмерениеуспехаонлайн-проекта.Встарыевременаиндустриальнойэпохикомандыполучалиотзывыосвоейработеотначальства.Чтопревращалосьвужимкипередвластью:васбольшенаградятзапослушность,чемзаприлежность.Делатьначальствосчастливымрадитого,чтобывамповысилизарплату,–нездоровоеотношение.

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

Высокоенаграждение

Существуетмногопричин,покоторымлюдипринимаютучастиевсообществах.Преобладающаямотивация–потребностьввосхищениизадостигнутыйуспех.Какиндивидуумом,такивсоставекоманды.Успехотносительноеявление,поэтомунамтребуетсяметрика,какой-товысокийбалл,накоторыйлюдибудуториентироватьсявсвоихстремлениях.

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

Reddit,какмногиедругиесайты,использует«карму»,котораяпоказывает,сколькоголосовполучилаккаунтзасвоипубликациииповедение.Работаетэтодовольнонеплохо.Некоторыесайтынепоказываютвсюкарму,чтобыпредотвратитьпопыткилюдейобойтисистемуиполучитьболеевысокийбалл.Некоторыесайты,такиекакStackOverflow,докрайностиувлекаются«геймификацией»,используяордена,высокиебаллы,достиженияит.д.Мнекажется,этоотдаетманипуляциямииотвлекаетотмиссиисообщества.Людидолжныприниматьучастие,стремяськуспехупроекта,анекбольшомуколичествуигровыхбаллов.

Социальноеобязательство–делатьгруппыразныхлюдейсчастливыми–задача,приносящаяогромноеудовлетворение,ионанезагрязняетпланету.Индустриальноеобществонацеленонаматериальныенаграды(вышезарплата,большедом,лучшемашина),увязанныесиерархическойструктурой.Оноэффективно,потомучтовсемылюбимбогатствоилиунаскомплекснеполноценности;какаябынибылапричина,желаниесделатьначальствосчастливейзначитпринятиеменьшихрисков.

Глава1-Инструментарий

20

Page 21: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

СОВЕТ:Когдалюдипросятвассделатьчто-то,авынезнаетекак,тогдаобъявитепублично,чтоэто«невозможно».Илипредложитерешениенастольконелепоеибезнадежное,чтонастоящиеэкспертыотвозмущениявозьмутсязадело.

Децентрализация

ВсвоейкнигеСероуиеки(Surowiecki)объясняет,чтокатастрофашаттла«Колумбия»произошлапопричинебюрократиивиерархичнойструктуреуправленияNASA,из-закоторойбылипроигнорированымненияобычныхинженеров.Еслигруппадецентрализована,еечленыболеенезависимы,ониполучаютбольшееразличныхвходныхданных,иониссамогоначаларазнообразны.

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

СОВЕТ:Вамнужнысобрания,чтобыдобитьсяотгруппыработы?Этознактого,чтоувасестьглубокиепроблемывсовместнойработе.Выисключаетелюдей,которыефизическиненаходятсярядом.

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

Свободнаярабочаясреда

Сообществунужнопространстводляроста.Вреалияхинтернетаэтообычносайтилинаборсайтовисопутствующиеструктурывродесписковэл.почты,блоговит.д.Мывидим,чтоэтостановитсяоченьдешевымилидажебесплатнымспособомсоздания«пространства»вцифровомобществе.Вопросвтом,могутлииндивидуумысоздаватьсвоиличныепространствавнутрисообщества.Еслида,будутлиониприноситьбольшепользыобщемупроекту?

Свободасозданияструктурыраздражаетлюдей,которыесчитают,чтоэтовноситхаосибеспорядок.Однакоесливыиспользуетеобычныеструктуры(смотритеследующийпункт),ущербуучастникамотэтогонетникакого.Авотчтовредно,такэтосозданиеструктурыисходяизнеобоснованногомненияоеепользелюдям.КогдаявозглавилассоциациюFFIIв2005г.,предыдущимпрезидентомбылосозданонесколькосотен

Глава1-Инструментарий

21

Page 22: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

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

ВсообществеZeroMQтребуетсялишьодинкликдлясозданияновогопроекта.ВВикипедиивыможетесоздатьновуюстраницу,простокликнувна«создатьстраницу».Обапроектаимеютмеханизмызащитыотслучайногомусора.Википедияпроводитдовольноагрессивнуючисткуновыхстраниц.ВZeroMQестьспециальнаяпроцедурадлявнесенияпроектавофициальнуюорганизациюсообщества.

СОВЕТ:Сделайтесозданиеновыхпроектовдлязарегистрированныхпользователеймаксимальнопростым.Еслипроектсоздаетсяпользователем,тонестоитбеспокоитьсянасчетмусора.Еслионинаходятсявобщемпространстве,товаммогутпотребоватьсяинструментыдляочисткимусораизаброшенныхпроектов.

Стандартнаяструктура

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

Запутанностьотпугиваетлюдей–оченьсложностановитсяразобраться.Решениемявляетсяиспользованиестандартныхструктур,выучивкоторыераз,выможетераспознаватьвсегда.Подойдетнелюбаяструктура.Намбываетсложновыучитьструктурыглубжетрех-четырехуровней.Однакомысрадостьюисследуемоченьширокиесистемыстысячамиилимиллионамиблоков,еслиэтиблокисоответствуютотдельнымзадачамилипроектам.

Представьтесебегород.

Глава1-Инструментарий

22

Page 23: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

GitHubуправляетмиллионамипрограммныххранилищ(«репозиториями»),сгруппированнымипоучетнымзаписямпользователейилиорганизаций,икаждыйобладаетсвоейструктурой(файлы-исходники,документацияит.д.),чтозачастуюзависитотязыка(Java-репозиториииспользуютодинстиль,С-репозитории–другойит.д.).Одинрепозиторийможетнасчитыватьнесколькоучастников,людимогутработатьсразнымколичествомрепозиториев.СообществоZeroMQявляетсяорганизацией,котораясостоитизрастущегочислапроектов.

СОВЕТ:Спроектируйтевашесообществокакгородподдающихсяпоискупроектов,гделюбойможетначатьновыйпроект–проектыпредставляют,наверно,дюжинуработлюдей,иувсехсхожаяструктура,насколькоэтовозможно.Бизнестяготееткзамкам,которыенеизбежнобудутпосвященыВажнымПерсонам,анепроектам,и,конечноже,неосновнымпроблемамбизнеса.Этиорганизациивсегдаогромныинестандартны.Инетникакойвозможностиразобратьсявних,кромекакзапоминатькаждуюихдеталь.Ноитогдавынесможетеслегкостьюпрогуливатьсяпозамку,поэтомумалотолкуизучатьегопланировку.

Плавностьобучения

КогдаZeroMQтольконачинался,этобыллишьодинпроектсединственнойстраницейREADME.Сегодняэтостоилибольшенебольшихпроектов,каждыйизкоторыхимеетсвоюдокументацию,сообществоидинамику.Попастьвужевзрослыйпроектможетбытьтрудно.Какяужесказал,использованиестандартныхструктуржизненнонеобходимо.Болеетого,вампотребуетсяпроследоватьподовольноспецифическойтраекторииприизучении,отлегкогокболеесложному,отстадиипраздногопосетителядоучастника-эксперта.Считайтевашесообществокомпьютернойигрой,гдесложностьуровнейвозрастаетсоразмерносвыигрышем.Людибудутиграть«всоответствиисосвоимуровнем».Есливывседелаетеправильно,выпривлечетемногих.Еслинеправильно,тоэкспертыбудутскучатьналегкомуровне,ановичковотпугнетсложностьнастарте.

СОВЕТ:Используйтеклассическиеинструментыобучения–презентации,видео,ответыначастозадаваемыевопросы(FAQ),обучающиематериалы–чтобылюдимоглиначать.Вамбудетлегче,есливысостоитевсообществе,потомучтотогдавыможетепосмотреть,какиевопросычащевсегозадаютначинающие.

Глава1-Инструментарий

23

Page 24: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Позитивность

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

СОВЕТ:Когдавыговоритеолюдях,продукцииилиорганизациях,будьтевежливыинетеряйтесамоконтроль.Когдавырекламируетепродукциюилисообщество,говоритеопроблемах,которыевырешили,анеотом,чемвылучшеконкурентов.

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

СОВЕТ:Добропожаловатьвсем,заисключениембезнадежныхсмутьянов.Ихнемного,тех,которыепростонемогутнайтисебеместовоткрытом,разнообразномсообществе.Выможетепопроситьтакихлюдейуйти,или,еслинеобходимо,забанитьих.

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

Чувствоюмора

Выкогда-нибудьзадумывались,почемувчеловекезаложенапотребностьшутить,почемулюди,которыеникогданесмеются,кажутсястраннымиинеприветливыми?Моятеориятакова,чтомывсеиспользуемюморкакспособразрядитьситуацию(чтоимееточевидноепреимуществодлявыживания).Людинепобьютшутника–толькоеслишуткастараяилиплохорассказана.Еслисерьезно,тоюморсводитнанеттрайбализмиэмоции,ипозволяетлюдямработатьвместе,дажееслионисильно

Глава1-Инструментарий

24

Page 25: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

СОВЕТ:Чемболеесерьезнуютемузатрагиваетвашесообщение,тембольшевампотребуетсяюмора.ВмоейкнигеоZeroMQмнойнаписаномногоглупойчепухивперемешкустяжелымописаниемтехническойчасти.Многимэтопонравилось.Еслибынеалкоголь,тохмуроевыражениелицаиндустриальнойэкономикиникогдабынесменялосьулыбкой.Онасебяоченьсерьезновоспринимает.Недостатокюмораворганизации–явныйпризнактого,чтовсетамфундаментальноубого.Хужевсего,чтотогдагруппастановитсяуязвимойдляконфликтовирасколов.

Минимализм

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

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

СОВЕТ:Перфекционизмпрепятствуетучастию.Публикациянаполовинуоконченнойисодержащейбагиработы–прекрасныйспособпривлечьлюдейкучастию.Длябольшихэгоэтотруднопринять,ноизъянылучшепривлекаютучастников,чемсовершенныйтруд,которыйпривлекаетпользователей.

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

Одноизмоихсообществ,Digistan,былоразработано,развитоидостиглосвоегорезультата(формированиеновогопоколенияузаконенныхшаблоновиполитическихаргументовдляоткрытыхстандартов)где-тозашестьмесяцев.Всенашипротоколыв

Глава1-Инструментарий

25

Page 26: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ZeroMQосновываютсянаработеDigistan.OpenWebFoundation,занимаясьтемижевопросами,потратилодвагодатольконарегистрациююрлица,определениеуставаивыборсотрудников.

Разумноефинансирование

Еслисредствбудетнедостаточно,сообществоумретотистощения.Еслиихбудетслишкоммного,то,какяужеговорил,онобудетразлагаться.Здесьтребуетсячуткоеравновесие.Мыможеммотивироватьлюдейспомощьюденегдоопределеннойстепени.Послеэтого,толькопсихопатыбудутпоказыватьпропорциональнуюреакцию.Вэтомизаключаетсядефектнаивнойтеориикапитализмаотом,что«чембольшеденег,темлучше».Вмоемделесамымивероломнымиоказывалисьте,комуябольшевсегоплатил.

Первое,чтонужносделатьдлясокращениярасходов,–этоотказатьсяотидеисюрлицами,офисамиисотрудниками,еслитольковыправдавнихненуждаетесь.Онинетолькосъедятлюбыевашисредства,ноонибудутпрепятствоватьвашейработепосозданиютолькоонлайн-сообщества.

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

СОВЕТ:Каждыйраз,собираясьпотратитьденьгинасообщество,поинтересуйтесь,неможетликто-нибудьвампомочьспроблемой.

Глава1-Инструментарий

26

Page 27: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ЭмоциональноевыгораниеволонтеровРанееяподчеркивалценностьдобровольнойработыкакболееаккуратной,честнойитворческойпосравнениюсоплачиваемойработой.Однакоздесьнужносделатьважнуюоговорку.НекоторыеинструментыСоциальнойАрхитектурытаятвсебеопасность.Поставивлюдямзахватывающуюцель,выможетеподтолкнутьихвсторонусаморазрушения.ЭтобылоглавнойпроблемойвFFII(FoundationforaFreeInformationInfrastructure),когдаяпришелтуда,иееусугублялвысокийнакалэмоций,характерныйдляродоплеменнойкорпоративнойкультурыорганизациивтовремя.Многиеключевыеучастникибылиизнуреныиэмоциональноистощены.Непонаслышкезнакомоемнесамомусостояние.

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

Оновыражаетсякакглубокоеотвращениекконкретномупроекту.Мызабрасываемпроектподальше,прекращаемотвечатьнаэл.почтуиможемдажепокинутьсообщество.Остальныеотмечают:«хм,онведетсебякак-тостранно…наверно,расстроенилиустал».Этосостояниепроектоориентированно.Т.е.мывыгораемпоотношениюкоднимпроектам,асдругимивсеможетбытьнормально.Виныхслучаяхнасможетпарализоватьдаженанесколькомесяцев—потоммыопятьначнемработать,ноужезабросивпроективзявшисьзачто-тодругое.Такоеслучаетсяразводин-тригода,взависимостиотвашегохарактераиситуации.Оченьупорные,мотивированныеличностимогутвыдержатьдольше,нокогдасорвутся,будетещехуже.Лечениеесть.Этонаистраннейшийподходяопробовал,когдаудалосьнайтиденегизаплатитьперегоревшимдобровольцамзато,чтоониделалибесплатно.Онивернулисьсчастливымиипродолжилизаниматьсясвоимделом.Недугтакжеможнопредотвратить.Оплачиваемыеработникинестрадаюттакжеотистощения.Конечно,ионимогутвпастьвдепрессию,нообычноихневырубаетвнезапно.

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

Глава2-Заметкинаполях

27

Page 28: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Людимноговкладываютвсвоипрофессии,идутнабольшойриск,особенновмолодостивнадежденанаградупотом.Мыдолгоевремяможемнепридаватьзначенияматериальномувознаграждению,еслимыуверенывтом,чтоследуемвернымпутем.Например,молодойписательилимузыкантготовтерпетьбедностьмногиегоды,еслионсчитает,чтославаибогатствождутеговпереди.

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

Ивотполучаетсятак,чтомолодоймозг,изовсехсилстарающийсяинвестироватьсвоиресурсывправильныевещи,обнаруживаетсебявситуации,когдаснежныйкомлжидостигаеткритическоймассы.Дорогавнезапнозаканчиваетсятупиком.Люди,которыеейследовали,—обманщикииманипуляторы.Миссия—фальшивка.Одобрениясостороныдругих—эмоциональноеманипулирование.Годыусилийидутпрахом,икаждаяследующаяминутастановитсябессмысленнойжертвой.

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

Мынеможемводиночествеработатьнадпроектами.Концентрациявсейответственностинаодномчеловеке,которыйнеработаетсверхмеры,частоприводиткперегоранию.

Проектамтребуетсябизнес-план.Надеждаполучитьматериальноевознаграждениепозволяетмозгумиритьсянекотороевремясотсутствиемвознаграждения.

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

Хорошиеинструментыипрактикипозволяютнамработатьсменьшимстрессомисменьшейзависимостьюотодногочеловека.

Глава2-Заметкинаполях

28

Page 29: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Какзахватить/защитить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

Page 30: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

Сценарийиспользования

Япостараюсьвыразитьсянедвусмысленноосценариииспользования.РечьидетобAndroid:однакомпанияначинаетopen-source-проект,используяегокак«товар-приманку»,намереваясьпроникнутьнарынок,ипроситподдержкиудругих.Этоклассическаястратегия,котораяможетбытьоченьуспешной.Однакоэтоточнонетоже,чтостуденческийпроект-исследованиеилимусорвроде«давайтесделаемсистемурасчетовпозаработнойплатеopen-source»или«пятероизнассобралисьвгаражеирешилисделатьновыйфреймворк».

Здесьестьчастичноесовпадение,иядумаю,полученныевыводыможноприменятьболеешироко(ияточноприменяюихсистематически),опятьже,мойсценарийиспользования–«open-sourceдляпрорыванарынок».

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

Большинствоopen-sourceпроектовпровальные(серьезно,идите,почитайтеокаком-нибудьслучайномпроектенаGitHubиувидите,сколькоизнихадекватных),идажеуспешныевоченьскромномзначенииэтогослова,незначительнысамипосебе.Поканетсерьезногоизменениявласти,проектможетоставатьсяпотенциальнымпрорывомнарынкеоченьдолгоевремя.Онможетвыглядетьоченьстабильнымисчастливым.Чтож,легкобытьдружелюбным,когданаконунестоятденьги.

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

Полесравнымиусловиямиигрынепод«запретом»

Глава2-Заметкинаполях

30

Page 31: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Естьнесколькоспособовзахватить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

Page 32: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Лицензияиполитикаучастияявляютсядвумяполовинкамиоднойголоволомки.

Ктовладеетавторскимиправами?Они«сконцентрированы»уоснователейпроектаилиониразделенымеждувсемиучастниками?Этожизненноважныйвопрос.Еслионисконцентрированы,тоэтотривиальнаязадачапопокупкеавторскихправ,разветвлениюпроекта,изменениюлицензииводностороннемпорядке,—иможнодвигатьсявзакрытомнаправлении.Однакоеслиправараспределены,т.е.многиелюдивладеютработой,совместновладеют,товамнужноодобрениевсех(небольшинства,а100%единодушие)дляизменениялицензии.Аэтологистическиневозможно.

Кстати,еслибывытолькознали,скольколюдеймнепредлагалиденьгизакоммерческуюлицензиюнаZeroMQ,выбылибыпоражены(оченьмного).Предложениепростое:япродаюимлицензию«non-LGPL»,ониплатятмнехорошиеденьгииделаютсвоиверсииZeroMQ.Еслибыяспециальнонепозаботилсяоневозможностиэтоговариантадавным-давно,тоябыбылоченьбогатым.Итеперьмиритьсясбедностьюмнепомогаетосознаниетого,чтоZeroMQпереживетменя.

Давайтеещеразпройдемсяпопроблемеспредложениемкоммерческихлицензийдлясовместнойработы.Представьтесебеклуб,которыйприглашаетди-джеевимикшируетихбиты.Потомклубоставляетзасобойавторскиеправаипродаетихзвукозаписывающейкомпании,котораяделаетсвойальбомремиксов,которыепервоначальныеди-джеиуженемогутпроигрыватьбесплатно.Поэтомуда,ясчитаюdual-GPL/коммерческоелицензированиепорочнымипрактиками.

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

Теперьперейдемкшагупозахватуномердва:наймразработчиков.

«Нокодвсеещесвободен!»,—говорятлюди.Конечно.Возвращаемсяклейблvsди-джей.Пустьлейблнанимаеттолькоодногоди-джея,ключевогосотрудникаииспользуетего,чтобыпротолкнутькоммерческиймиксальбома.Кудапубликатогдапойдет?

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

Глава2-Заметкинаполях

32

Page 33: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

справедливопоотношениюктем,ктоучаствовалвпроектераньше.Аеслинеремиксабельно,товсеостальныеучастникиобнаружат,чтоихинвестициииспользуютсяпротивних.

Предотвращаязахват

Язнаютолькооднумодель,котораяпредотвращаетзахватopen-sourceпроектавобластиПО:

1. Лицензиясемейства«GPL»(илиMPLv2,котораяработаетсхожимобразом).2. Распределенныеавторскиеправа

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

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

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

Однакоеслиприсмотретьсявнимательнее,тостанетпонятно,чтоэтасказканесоответствуетфактам.Историянепоказываетодинокихизобретателей.Онарассказываетнамовезениилюдей,которыеукралиилиприсвоилисебеправособственностинаидеи,надкоторымиработалимногие.Онаполнапримеровпрогениальныхлюдей,которыепослеудачногопопаданиятратятдесятилетиянабесполезныеибезрезультативныепоиски.СамыеизвестныекрупныеизобретателивродеТомасаЭдисонабылихорошивсистематическомпоиске,которыйвыполнялся

Глава2-Заметкинаполях

33

Page 34: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

крупнымикомандами.Этокакзаявить,чтоСтивДжобсизобрелкаждуюпримочку,сделаннуюкомандой«Apple».Этотприятныймифгодитсядлямаркетинга,ноондалекотистины.

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

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

Хотя,вотиальтернативнаятеорияинноваций:

1. Естьбезграничнаяобластьпроблем/решений.Словнообластьравнинихолмов,которыемыпытаемсяпреодолеть.Решенияинтересныхпроблемнаходятсянавершинаххолмов.

2. Областьменяетсястечениемвременивзависимостиотвнешнихобстоятельств.Горымогутпревратитьсявравнины,ановыегорымогутвозникнутьтам,гдеихнебыло,современем.

3. Мыможемточновосприниматьтолькотепроблемы,которыеближекнам.Унаснетвозможностиохватитьвзглядомвсеинамостаетсяполагатьсянанашидогадки.Нашметафорическийландшафточеньтуманен.

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

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

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

7. Нашинтеллектможетускоритьэтотпроцесс,нонезаменитьего.Еслимыумнее—возможномыбудемшагатьбыстрееиличутьдальшевидетьсквозьтуман,ивсе.

Естьнесколькопоследствийэтого:

Глава2-Заметкинаполях

34

Page 35: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Индивидуальнаякреативностьзначитменьше,чемсампроцесс.Болееумныелюдимогутработатьбыстрее,ноонимогутиследоватьвнеправильномнаправлении.Бытьчестнымииобъективныминампомогаетколлективноевидениереальности.Намненужныдорожныекарты,еслиунасхорошоналаженпроцесс.Современем,померетого,какценностьрешенийбудетрасти,будетрастиифункциональность.Мынестолькоизобретаемрешения,сколькооткрываемих.Соболезнованиятворческимнатурам:этовсеголишьобрабатывающийинформациюголем,начищающийсвоесобственноеэгоиозабоченныйподнятиемкармы.Интеллект—этосоциальныйэффект,хотяониощущаетсякакчто-толичное.Человек,отрезанныйотдругих,перестаетдумать.Мынеможемниопределитьпроблемы,ниоценитьихрешениябездругихлюдей.Размериразнообразиесообществаявляетсяключевымфактором.Болеекрупныеиразнообразныесообществаохватываютбольшерелевантныхзадач,решаютихболееточноиделаютэтобыстреемаленькойгруппыэкспертов.

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

КоллективныйИндексИнтеллектаилиКИИ(CII)Ясобираюсьпредложитьинструментпоизмерениюинтеллектасообщества,другимисловами,какточноиэффективносообществоработаетвлюбойвзятыйпериодвремени.Онтакжепоказывает,насколькоприятнобудетучаствоватьвсообществе.

Дляегодемонстрациияранжируюнесколькосетей,организаций,сайтовионлайн-сообществ.Этоненаука,простотворческаяинебрежнаяприкидка.Каквсемизвестно,87%статистикиизобретаетсянаместе,и91%людейпринимаютэтобезвопросов.Явыбралследующиежертвы:

1. Википедия2. Твиттер3. Реддит4. Фейсбук5. Индустриямоды6. Нигерийскийкинематограф,т.н.Нолливуд(Nollywood)

Глава2-Заметкинаполях

35

Page 36: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

7. Адвокатыкакпрофессия8. КиноиндустрияГолливуда9. СетьTheFoxNews10. Военные(вкакой-тослучайнойвосточнойстране)

Янебудусудитьоценностиотдельновзятогосообщества.Этоневозможно,ибудетобманчиво.МиссияТвиттера—«набратьбольшеподписчиков»—звучитслабее,чемуВикипедии«собираемзнаниявсегомира».Однаждысформированная,умнаяигибкаятолпаможетзапростосоздаватьновыемиссии,например«свергнутьдиктатора».Онлайн-сообщество,возможно,ценно(длячеловечества)неблагодарясвоейпродукции,асамопосебе.ВслучаеВикипедииилиZeroMQсложноотделитьтолпуотконтента.АвслучаеТвиттераэтоочевидно.Контент—явлениепреходящееизачастуюбесполезное,атолпа—нет.

Япридумалтакуюоценочнуютаблицу:

Глава2-Заметкинаполях

36

Page 37: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Критерий 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

Page 38: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Критерий 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

Page 39: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

СообществоZeroMQМожемлимыцеленаправленностроитьсообщества?

Меняиногдаспрашивают,чтотакогоособенноговZeroMQ.Наэтоявсегдаотвечаю,чтоZeroMQ—возможнолучшийответ,которыйунасестьназлободневныйвопрос

«Каксоздаватьраспределенныепрограммныесредства,которыетребуютсяотнас21век?».

Но,помимоэтого,ZeroMQвыделяетсяблагодарясвоемусообществу.Чтоиотличаетволковотовец.

Естьтриосновныхopensourceпаттерна.Во-первых,когдакрупнаяфирмавыбрасываетнарыноккод,чтобырасправитсясконкурентами.ЭтомодельApacheFoundation.Во-вторых,когдакрошечныекомандыималенькиекомпаниистроятсвоюмечту.Этонаиболеераспространеннаяopensourceмодель,котораяможетбытьнаиболеекоммерческиуспешна.Инаконец,агрессивныеиразнообразныесообщества,всейтолпойпробирающиесясквозьдебрипроблем.ЭтомодельLinux,ивоткнеймыистремимсявZeroMQ.

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

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

Вэтомразделеярассмотрюнашесообществосразныхсторонивконцеподробнорасскажуонашемдоговореосотрудничестве,которыймыназываем«С4».Вампригодитсяэтаинформациядлявашейсобственнойработы.Крометого,мыуспешноадаптировалиметодZeroMQC4дляпроектовсзакрытымкодом.

АрхитектурасообществаZeroMQ

Глава3-СообществоZeroMQ

39

Page 40: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Вызнаете,что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

Page 41: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

наднашимпрограммнымобеспечением(апод«нами»яимеюввидусообщество,анекомпанию).iMatixподдерживаетсообщество,следязафункционированиемвсего,чтоназывается«ZeroMQ».Мытакжевкладываемденьгиивремявпрограммноеобеспечениеиегоразвертывание.

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

Моякомпаниянепростоохраняетсообщество—мытакжесоздавалисообщество.Мызанималисьэтимцеленаправленно:воригинальномтехническомописанииZeroMQот2007г.указано,чтобылодвапроекта.Одинбылтехнический,нацеленныйнасозданиелучшейсистемыдоставкисообщений.Второйзаключалсявпостроениисообщества,котороемоглобыпривестипрограммноеобеспечениекуспеху.Программноеобеспечениеумирает,носообществоживет.

Каксоздаватьпо-настоящемубольшиеархитектуры

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

Первыйспособ

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

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

Второйспособ

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

Глава3-СообществоZeroMQ

41

Page 42: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ГениальныйипрозорливыйЭбенМоглен(EbenMoglen)однаждысказал,чтолицензиясвободногопрограммногообеспечениясловноконтракт,наосновекоторогостроитсясообщество.Когдаяпервыйразэтоуслышал,околодесятилетназад,уменяпоявиласьидея—можемлимыцеленаправленностроитьсообщества?

Полученныйдесятьлетспустяответ—«да»,болеетого,теперьэтопочтинаука.Яговорю«почти»,потомучтоунасдосихпорнетдостаточногоколичествадоказательствтого,чтолюдиделаютэтоцеленаправленно,нетдокументациииуверенности,чтоэтотпроцессвозможноточновоспроизвести.ИменноэтояипытаюсьисправитьспомощьюСоциальнойАрхитектуры.ZeroMQпоявилсяпослеWikidot,послеDigitalStandardsOrganization(Digistan)ипослеFoundationforaFreeInformationInfrastructure(FFII,негосударственнаяорганизация,котораяборетсяпротивпатентовнапрограммноеобеспечение).Всеэтопоявилосьпослемножестваменееуспешныхсообществ,вродеXitamiиLibero.Вывод,которыйясделализдолгойработысразличнымипроектами,заключаетсявследующем:есливыхотитесоздатьпо-настоящемумасштабноеидолговечноепрограммноеобеспечение,стремитеськпостроениюсообществасвободногопрограммногообеспечения.

Психологияархитектурыпрограммногообеспечения

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

ДиркжанОктман(DirkjanOchtman)обратилмоевниманиенаопределениеархитектурыпрограммногообеспечениявВикипедии:«совокупностьструктур,требуемыхдляпониманиясистемы,котораяобъединяетэлементыпрограммногообеспечения,связимеждунимииихпринадлежность».Дляменяэтабессодержательнаяицикличнаяболтовняслужитхорошимпримеромтого,какунизительномаломызнаемотом,чтонасамомделеважноприсозданиимасштабнойархитектурыпрограммногообеспечения.

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

Глава3-СообществоZeroMQ

42

Page 43: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Основныепроблемывархитектурепрограммногообеспечениякроютсявчеловеческойпсихологии,аневтехнологиях.Нашапсихологияпо-разномуможетвлиятьнанашуработу.Ямогупривестипримерытого,какгруппалюдейсловностановитсяглупеепомеретого,каконарасширяется,иликогдаимприходитсяработать,будучиразделеннымиогромнымрасстоянием.Значитлиэто,чточемменьшекоманда,темонаэффективней?КакжетогдатакоекрупноеглобальноесообществокакZeroMQумудряетсяуспешноработать?

СообществоZeroMQвозниклонеслучайно.Егоконструкциябылацеленаправленноразработана—мойвкладвтеранниедни,когданачердакевБратиславепоявилсякод.Разработкаосновываласьнамоемнаучномпитомце,«СоциальнойАрхитектуре»,которуюВикипедияопределяеткак«сознательнаяразработкасреды,котораяпоощряетпроявлениеопределенныхпаттерновсоциальногоповедениявцеляхдостижениякакой-либоцелиилицелей».Моеопределениеболееконкретно:«процессилипродуктпланирования,разработкиисозданияонлайнсообщества».

ОдинизпринциповСоциальнойАрхитектурызаключаетсявтом,чтоспособнашейорганизацииважнеетого,кеммыявляемся.Однаитажегруппа,организованнаяпо-другому,можетвыдатьсовсемдругиерезультаты.МыкакпирывсетиZeroMQ,инашикоммуникационныепаттернысущественновлияютнанашеповедение.Обычныелюдиприналаженныхсвязяхмогутпревзойтигруппуэкспертов,использующихплохиепаттерныповедения.ЕсливыявляетесьразработчикомкрупногоZeroMQприложения,вампридетсяпомогатьдругимнаходитьправильныепаттернысовместнойработы.Сделайтеэтохорошо,ивашпроектожидаетуспех.Сделайтеэтоплохо,ивашпроектпровалится.

Итак,вотмойкороткийсписокпсихологическихэлементовСоциальнойАрхитектуры:

Глупость:нашаментальнаяшинаимеетпределы,поэтомувкакой-томоментмывсеможемтупить.Архитектурадолжнабытьпростойдляпонимания.Этоправилономеродин:простотаважнеефункциональности,всегда.Есливынеможетевникнутьвструктурусерымхолоднымутромпонедельникадотого,каквыпитькофе,значит,онаслишкомсложна.Эгоистичность:мыдействуемтолькоизэгоистическихпобуждений,поэтомуархитектурадолжнасоздаватьпространствоивозможностьдляэгоистичныхпоступков,откоторыхвыиграютвсе.Эгоистичностьзачастуюявляетсякосвеннойинеявной.Например,ямогупотратитьнесколькочасов,объясняячто-токому-то,потомучтоэтоможетпригодитьсямнесамомупозже.Лень:мыделаеммножествопредположений,которыепотомоказываютсяневерными.Мырадуемся,когдаможемсминимальнымиусилиямиполучитьрезультатилипроверитьпредположениебыстро,поэтомуархитектурадолжнапредусматриватьтакуювозможность.Т.е.онадолжнабытьпростой.

Глава3-СообществоZeroMQ

43

Page 44: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

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

Важностьконтрактовинеограниченнаясобственность

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

Важностьконтрактов

Глава3-СообществоZeroMQ

44

Page 45: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Давайтеобсудимспорный,новажныйвопросотом,какуюлицензиювыбрать.Ябывыделил«BSD»вместесMIT,X11,BSD,Apacheипрочимипохожимилицензиями,и«GPL»сGPLv3,LGPLv3иAGPLv3.Главнымотличиемявляетсяраспространениеправналюбыеверсиифорков,чтозащищаетлюбуюорганизациюотзахватапрограммногообеспечения,итемсамымделаяего«свободным».

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

Выможетеспросить,зачемнамвообщенужныконтрактыприработесopensource?Ведьглавноедоброжелательность,бескорыстнаясовместнаяработалюдей.Выуверены,чтопринцип«лучшеменьшедалучше»всегдаздесьуместен?Незначитли,чтобольшеправил—меньшесвободы?Намнасамомделенужныадвокаты,чтобырассказывать,какнамработатьвместе?Кажетсяциничнымидажеконтрпродуктивнымнасаждатьограниченияиправилавсчастливомopensource,всообществесвободногопрограммногообеспечения.

Нонастоящаянатурачеловекадалеконетакпрекрасна.Мынасамомделениангелыинидьяволы,апростосвоекорыстныепобедители,последниезвеньяединойцепипобедителейдлиннойвмиллиардлет.Вбизнесе,сердечныхделахилиприсовместнойработемылибоборемсяиспорим,либооставляемих.

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

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

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

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

Глава3-СообществоZeroMQ

45

Page 46: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

преимуществболеебогатымиучастниками(которыемогутпозволитьсебеиногдаогромныерасходы).

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

Поэтомуприобсуждениилицензийнапрограммноеобеспечение,когдаречьидетовашемкодеилииспользуемомвамикоде,немногоцинизманеповредит.Незадавайтесьвопросом:«какаялицензияпривлечетбольшепоследователей?»,т.к.ответзависитотформулировкимиссииипроцессаучастия.Спроситесебя:«еслипроектокончитсябоемиразделитсянатричасти,какаялицензияспасетнас?».Или:«есливсюкомандуподкупитвраждебнаяфирмасцельюприсвоениясебекода,какаялицензияубережетнас?».

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

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

ПриведууместнуюздесьисториюоGPL.Хотясообществапрограммистов,работающихсоткрытымкодом,ужебылиширокораспространеныв1980-хгодах,онивсеещеиспользовалипростыелицензии,которыеработалидотогомомента,покапроектненачиналпривлекатьнастоящиеденьги.ВтовремябылсолидныйтекстовыйредакторEmacs,изначальнопостроенномнаLispРичардомСтоллманом.ДругойпрограммистДжеймсГослинг(которыйпотомявилнамJava)переписалEmacsнаСспомощьюсообщников,предполагая,чтоонбудетоткрытым.СталлманвзялэтоткодзаосновудлясвоейСверсии.Гослингпозжепродалкодкомпании,котораявзялаизаблокировалавозможностьдлякогобытонибылораспространениеконкурирующегопродукта.Столлманпосчиталэтупродажусовместнойработыкрайненеэтичнымпоступкоминачалразвиватьмногоразовуюлицензию,котораябызащитиласообществаотподобного.

ВитогеэтовылилосьвУниверсальнуюобщественнуюлицензиюGNU(GNUGeneralPublicLicense),котораяиспользовалатрадиционноеавторскоеправодлязащитывозможностиповторнойпереработкиматерила(ремиксабельности).Этобылэлегантныйприем,которыйперенялиивдругихсферах,например,CreativeCommons

Глава3-СообществоZeroMQ

46

Page 47: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

дляфотографийимузыки.В2007г.вышлавсветверсия3лицензии,котораябылаответомназапоздалыеатакиMicrosoftипрочих.Онапревратиласьвдлинныйисложныйдокумент,нокорпоративныеспециалистыпоавторскомуправухорошознакомысним,инамоейпамятиоченьмалокомпанийосмеливаютсяиспользоватьпрограммноеобеспечениибиблиотекиподлицензиейGPL,приусловии,чтограницыобозначенычетко.

Такимобразом,хорошийконтракт—аясчитаю,чтосовременнаяGPLидеальнадляпрограммногообеспечения—позволяетпрограммистамработатьвместебезпредварительныхсоглашений,организацийилиубежденийвпорядочностиидоброжелательности.Сотрудничатьстановитсядешевле,аконфликтыоборачиваютсяздоровойконкуренцией.GPLнепростоопределяет,чтобудетсфорком,—онапоощряетфоркикакинструментдляэкспериментированияиобучения.Где-тос«болеелиберальной»лицензиейфоркможетпогубитьпроект,ноGPL-проектыразвиваютсяблагодаряфоркам,потомучтоуспешныеэкспериментымогутбытьобратновключены,согласноконтракту,висходныйпродукт.

Да,естьмногопроцветающихBSD-проектовимногомертвыхGPL-проектов.Обобщатьвсегдаплохо.Судьбапроектазависитотмногихпричин.Однаковспортивныхсоревнованияхстоитиспользоватьлюбыепреимущества.

ДругойважнойчертойпротивостоянияBSDиGPLявляется«утечка»—такяназываюеепотому,чтоонанапоминаетмнепроцесснаполненияводойемкости,наднекоторойестьотверстие,небольшое,носущественноедлярезультата.

Выпейменя

Вотвамистория.Онапроизошласостаршимшуриномдвоюродногобратадругамоегоколлегипоработе.Егозвали,ивсеещезовут,Патрик.

Патрикбылспециалистомвобластиинформатикискандидатскойстепеньювобластисетевыхтопологий.ОнпотратилдвагодаисвоисбережениянасозданиеновогопродуктаивыбраллицензиюBSD,т.к.верил,чтоонапринесетемубольшепризнания.Онработалусебяначердаке,ущемляясебявовсем,исгордостьюопубликовалработу.Людиаплодировали,ведьработабылапростофантастическая,егоэл.почтазагуделаактивностью,патчамиисчастливойболтовней.Многиекомпаниирассказывалиему,какмногомиллионовонисэкономили,используяегоработу.Некоторыедажеемузаплатилизаконсультациииобучение.Егоприглашаливыступатьнаоднуконференциюзадругой,хотьбейджикисосвоимименемсобирай.Онначалсвоймаленькийбизнес,нанялдруганаработу,сталмечтатьозаоблачныхвершинах.

Глава3-СообществоZeroMQ

47

Page 48: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Нооднаждыкто-топоказалемуновыйпроект,подлицензиейGPL,которыйпредставлялсобойфоркегоработыснекоторымиулучшениями.Онбылраздражен,расстроенивсеспрашивал,как—друзьяпооткрытомукоду!—каконимоглиподобнымбесстыжимобразомукрастьегокод.Тогдабыломногодолгихрассужденийотом,законноливыпускатьегоBSD-кодподлицензиейGPL.Оказалось,чтода.Онпыталсяигнорироватьновыйпроект,новскорепонял,чтовыходящиекнемуновыепатчиуженельзяслитьсегособственнойработой!

Дальшехуже:GPL-проектсталнабиратьпопулярность,инекоторыеосновныепоследователиПатриканачалиделатьсначаланебольшие,апотомвсеболеесолидныепатчикнему.Иопятьоннемогиспользоватьэтидополнения,итогдаонпочувствовалсебяпокинутым.Патриквпалвдепрессию,егоподружкаушлаотнегоквалютномуброкеру,которого,чтозабавно,зовутПатрис,ионпересталработатьнадпроектомвообще.Ончувствовалсебяпреданнымидослезжалким.Онуволилсвоегодруга,которыйвоспринялэтотяжелоипотомвсегдаоченьнелестноонемотзывался(«closetbanjoplayer»).ВитогеПатрикустроилсянаработунадолжностьпроектногоменеджеравоблачнойкомпаниииксорокагодамсовсемпрекратилпрограммироватьрадиудовольствия.

БедныйПатрик.Мнеегопочтисталожаль.Когдаяспросилего:«ПочемутыневыбралGPL?»,—онответил:«Потомучтоограничивающаявируснаялицензия».«Пустьутебяиестьдокторскаястепеньипустьтыстаршийшуриндвоюродногобратадругамоегоколлегипоработе,нотыидиот,иМоникаправильносделала,чтобросилатебя.Тыопубликовалсвоюработу,предлагаялюдямукрастьтвойкод,акогдалюдисделалиименноэто,тырасстроился.Чтоещехуже,тывелсебялицемерно,ведьпокаониделалиэтотайно,тыбылсчастлив,нокогдаониоткрытозаявилиобэтом,тыпочувствовалсебя,видители,покинутым».

Наблюдатьзатем,кактвоюработузахватилаболеехитраякомандаииспользуетеепротивтебя—пытка,такзачемдопускатьтакуювозможность?Любойпроприетарныйпроект,которыйиспользуетBSD-код,захватываетего.ПубличныйGPL-форк,можетпоказатьсяоскорбительным,нотаквыточнонеподставитесь.

BSD—словнолакомство.Ябуквально(насамомделеметафорически)слышушепот«выпейменя»,такимтихимголоском,которым,бывает,говоритсвамибутылкалучшегопивавмире—аэто,безсомнения,Orval,сваренноедревнимипочтиисчезнувшиморденоммолчаливыхбельгийскихмонаховLesGarsLabasQuiFabriquel'Orval.ЛицензияBSD,какиегоблизкийклонMIT/X11,быласпециальноразработанауниверситетом(КалифорнийскимуниверситетомвБеркли)чтобыбезкорыстолюбивыхпобужденийвыдатьработуилиусилия.Этобылспособпротолкнутьсубсидируемыеразработкипоцененижесебестоимости,ценовойдемпингсцельювыходанарынок.

Глава3-СообществоZeroMQ

48

Page 49: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

BSD—отличноестратегическоерешение,ноподходиттолькокрупным,хорошофинансируемыминститутам,которыемогутпозволитьсебеиспользоватьПервыйспособ.ЛицензияApache—тажеBSD,тольковкостюме.

Длянас,капитановмалогобизнеса,которыепересчитываютсвоисредствакакпоследниепули,утечкаработыилиусилийнеприемлема.Здоровобылобыперекроитьрынок,номынеможемпозволитьсебесубсидироватьнашихконкурентов.СетевойстекBSDпривелкпоявлениюWindowsвинтернете.Мынеможемпозволитьсебебитвыстеми,скеммыпоприродесвоейдолжныбытьсоюзниками.Мынеможемпозволитьсебеошибкифундаментальногобизнеса,потомучтовитогенампридетсяувольнятьлюдей.

Всесводитсякповеденческойэкономикеитеорииигр.Типлицензии,которуюмывыбираем,влияетнаэкономикутех,ктоиспользуетнашуработу.Виндустриипрограммногообеспеченияестьдрузья,врагиипища.BSDвыставляетнасвглазахдругихобедом.Закрытыйкод—врагами(вамнравитсяплатитьлюдямзапрограммы?).ОднакоGPL,заисключениемПатрика,—союзниками.ЛюбойфоркZeroMQявляетсялицензионносовместимымсZeroMQ,дотогомомента,когдамыпоощряемфоркивкачествеценныхинструментовдляэкспериментирования.Да,кажетсянепривычнымнаблюдать,каккто-тозабираетутебяигрушкуивозитсясней,но—выможетевлюбоймоментвзятьееобратно.

Процесс

Есливыдосихпорсоглашалисьсомной—отлично!Теперьяобъяснюсампроцесспостроенияopensourceсообщества.ВоткакмыпостроилииливырастилииличутковвелисообществоZeroMQвмир.

Вашацелькаклидерасообщества—мотивироватьлюдейдобратьсятудаиисследовать,убедитьих,чтоэтобезопаснодлянихидляокружающих,награждатьихвслучаеуспешныхоткрытийигарантироватьим,чтосвоимзнаниемонимогутподелитьсясдругими(непотому,чтомыпросимих,инепотому,чтоонищедрые,апотому,чтотаковЗакон).

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

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

Глава3-СообществоZeroMQ

49

Page 50: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

Безумство,красотаипростота

Вамнужнатакаяцель,котораябудетдостаточнобезумнойипростой,чтобывытащитьлюдейизкроватиутром.Вашесообществодолжнопривлекатьлучшихлюдей,аэтотребуетчего-тоособенного.ВслучаесZeroMQмыговорили,чтомысобираемсясоздать«Быстрейшую.Передачусообщений.Всегда»,иэтопримерхорошегомотиватора.Еслибымысказали,чтомысобираемсясделать«изящныйтранспортныйуровень,которыйсоединитвседвижущиесяэлементывашегопредприятиядешевоигибко»,мыбыпровалились.

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

Ваштруддолженбытьпростымдляпонимания,использованияиприсоединения.Слишкоммногиепроектыобремененыпрепонамидляприсоединениякним:поставьтесебянаместодругогочеловекаиувидьтепричины,покоторымонпришелквамнасайт,думая«хм,интересныйпроект,но…»,ипотомушел.Выхотите,чтобыониосталисьипопробовали,хотябыраз.ИспользуйтеGitHubипоставьтетамтрекерзадач.

Есливыправильновсеэтосделаете,вашесообществобудетумным,ночтоболееважно,онобудетинтеллектуальноигеографическиразнообразно.Этонасамомделеважно.Группасхожемыслящихэкспертовнесможетхорошоисследоватьландшафтпроблемы.Ониимеюттенденциюдопускатьбольшиеошибки.Разнообразиевсегдапревалируетнадобразованностью.

Незнакомец,позвольтепредставитьвамНезнакомца

Какчастодвоелюдейдолжнысогласовыватьсвоидействиявслучаесовместнойработы?Вбольшинствеорганизаций,оченьчасто.Новыможетесвестикнулюэтунеобходимость,итогдалюдисмогутработать,даженевстретившисьниразулично,непринявучастиевтелеконференции,вделовойпоездке,необсудивРолииОбязанностивокружениинеприличнобольшойкучибутылокдешевогокорейскогорисовоговина.

Глава3-СообществоZeroMQ

50

Page 51: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Вампотребуютсяхорошонаписанныеправила,разработанныекем-нибудьциничным,вродеменя,чтобыпризватьнезнакомцевквзаимовыгодномусотрудничествувместотого,чтобыконфликтовать.GPLбудетхорошимстартом.GitHubисегостратегией«форк-слияние»будутхорошимпродолжением.Апотомвампотребуетсячто-товроденашейкнигиправилС4дляконтролятого,какнасамомделеосуществляетсяработа.

С4,аяиспользуюеетеперьдлякаждогоновогоopensourceпроекта,содержитдетальныеипроверенныеответынабольшинствотипичныхошибок,которыесовершаютлюди:например,такойгрех,какработаофлайнвукромномместесдругими«потомучтоэтобыстрее».Прозрачностьимеетключевоезначениядляобретениядоверия,безчеговсвоюочередьнебудетмасштаба.Пустькаждоеизменениебудетнавидутакже,какивесьпроцесс,итогдавысможетеполностьюдоверятьрезультатам.

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

Неограниченнаясобственность

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

Идеидешевы.Авотчтоявляетсясобственностью,такэтотатяжелаяработа,которыемыделаем,создаваярынок.«Какпотопал,такиполопал»—этоправильнаямодельдлявдохновениялюдейнатруднуюработу.Будьтоморальныйавторитетвпроекте,деньгизаконсультации,продажаторговоймаркибогатойикрупнойкомпании:есливысделалиэто,выэтимвладеете.Нонасамомделевашглавныйактив,которыйопределяетвашпотенциал—«посещаемость»,участникиввашемпроекте.

Дляэтогопотребуетсянеограниченноеколичествосвободногопространства.Ксчастью,GitHubрешилэтупроблемузанас,такчтонасмертномодреябудуемублагодарен(вжизнислишкоммноговещей,зачтояблагодарен,ивсездесьнеперечислить,т.к.унасестьтолькостостраницилиоколотого,ноэтооднаизтакихвещей).

Глава3-СообществоZeroMQ

51

Page 52: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

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

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

Во-первых,простопотому,чтобольшинстволюдейслишкоммилые,намтребуетсянекоесимволическоелидерствоиливладельцы,которыебудутвыступатьконечнымиарбитрамивслучаевозникновенияконфликта.Обычноэтооснователисообщества.Явидел,каксэтимуправляетсясамоизбраннаягруппа«старших»,ностарикислишкомлюбятпоболтать.Явидел,каксообществараскалываются,сталкиваясьсвопросом«ктоглавный?»,исоздаютюридическиелицассоветомдиректоров,которыйтолькоусугубляетспорыоконтроле.Можеттакполучается,т.к.кажется,чтоесть,чтоделить.Нооднимизнастоящихпреимуществсвободногопрограммногообеспеченияявляетсяегоремиксабельность,поэтомувместотого,чтобыдратьсязапирог,простоотщипните«вилкой»кусочек.

Во-вторых,сообществамтребуютсяправилажизни,иещеюрист,способныйэтиправиласформулироватьизаписатьих.Правилакритическиважны—будучихорошосоставленными,ониисключаюттрения.Анеправильносоставленные,илиигнорируемые,приведуткраздорамисложностям,которыеотпугнутбольшуючасть,оставивспорящуюгруппувоглавегорящегодома.ЯсампробовалсоздатьуниверсальныеправиладляZeroMQипредыдущихсообществ,поэтому,наверно,намнетакужинужныюристы.

В-третьих,сообществамнужнанекотораяфинансоваяподдержка.Этиострыерифыпотопилинеодинкорабль.Есливыдержитесообществонасухомпайке,онобудетболеекреативным,ноключевыеучастникибудутэмоциональновыгорать.Есливывольетевнегослишкоммногоденег,топривлечетепрофессионалов,которыеникогданескажут«нет»,исообществопотеряетсвоеразнообразиеикреативность.Есливысоздадитеобщийфонднараздачу,толюдибудутбороться(ияростно)занего.В

Глава3-СообществоZeroMQ

52

Page 53: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ZeroMQмы(iMatix)тратилинашиденьгиивремянамаркетингипродвижение(вродеэтойкниги),атакженабазовыевещи,например,наисправлениебагов,релизыисайты.

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

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

Лучшимрешением,ккоторомуяпришел,являетсясочетаниедвухпунктов.Первый—этоGPL,т.к.онаобеспечиваетвозможностьповторнойобработкиматериала(ремиксабельность).Неважно,насколькоплохимбудетруководство,неважно,насколькоупорноонобудетстаратьсяприватизироватьизахватитьработусообщества—еслионаподлицензиейGPL,тоработапростоуйдетинайдетсеберуководителейполучше.Прежде,чемвыскажете«любойopen-sourceпредлагаеттожесамое»,подумайте.ЯмогупокончитьспроектомслицензиейBSD,нанявключевыхучастниковипрекративвыпускновыхпатчей.Но,дажеимеямиллиарддолларов,янемогуубитьпроектслицензиейGPL.Второйпункт—отношениекруководствуспозициифилософиианархизма,котороепроявляетсявтом,чтомывыбираемруководство,ононаминевладеет.

Глава3-СообществоZeroMQ

53

Page 54: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ПротоколдляколлаборацииC4«Этоэссенциятридцатилетнегоопытыразработкипрограммногообеспечения.»

ПроцессZeroMQ:C4КогдамыговоримоZeroMQ,мыиногдаимеемввидуlibzmq—основнуюбиблиотеку.Вначале2012годамысинтезировалипроцессlibzmqвформальныйимногоразовыйпротоколдлясовместнойработы,которыймыназвали“Контрактомнаразработкуколлективногокода”илиC4.Выможетерассматриватьэтокакслойнадлицензией(например,MPLv2).Этонашиправила,ияобъяснюпричинывозникновениякаждогоизних.

C4—этоэволюциямоделиGitHubFork+Pull.Выможетеподумать,чтояпоклонникgitиGitHub.Иэтоточно:этидваинструментаоказалиположительноевлияниенанашуработувпоследниегоды,особеннокогдаречьидетосозданиисообщества.

Язык

Ключевыеслова«ДОЛЖЕН»,«НЕДОЛЖЕН»,«ТРЕБУЕТСЯ»,«ДОЛЖЕН»,«НЕДОЛЖЕН»,«СЛЕДУЕТ»,«НЕСЛЕДУЕТ»,«РЕКОМЕНДУЕТСЯ»,«МОЖЕТ»и«ДОПОЛНИТЕЛЬНО»вэтомдокументеследуетинтерпретироватьтак,какописановRFC2119.

НачинаясRFC2119,втекстепроC4четкоуказано,чтооннамеренвыступатьвкачествепротокола,анекакслучайнонаписанныйнаборрекомендаций.Протокол—этодоговормеждусторонами,которыйопределяетправаиобязанностикаждойстороны.Онимогутбытьзнакомывсети,илимогутбытьнезнакомцами,работающимиводномпроекте.

Ядумаю,чтоC4—этопервыйпримертого,каккто-топыталсякодифицироватьнормативысообществакакформальнуюимногоразовуюспецификациюпротокола.Раньшенашиправилабылираспространенынанесколькихстраницахвикиибыливомногомспецифичныдляlibzmq.Ноопытучитнас,чточемболееформальные,точныеимногоразовыеправила,темлегчестановитсянезнакомыммеждусобойлюдямсотрудничать.Аменьшееколичестворазногласийозначаетболеемасштабируемоесообщество.ВовремяC4унастакжебылонекотороенесогласиевпроектеlibzmqнадтем,какойпроцессмыиспользовали.Невсечувствовалисебя

Глава4-ПротоколдляколлаборацииC4

54

Page 55: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

ИспользоватьС4легко:просторазместитесвойпроектнаGitHub,заставьтедругогочеловекаприсоединитьсяиоткройтефункциюpullrequest.ВсвоемREADMEпоместитессылкунаC4,ивсе.Мысделалиэтовцеломрядепроектов,и,похоже,этоработает.Янеразиспытывалприятноеудивление,применяяэтиправилаксвоейсобственнойработе,напримервпроектеCZMQ.Никтоизнаснебесподобеннастолько,чтомогбыработатьбезостальных.

Цели

СпецификацияC4предназначенадляобеспеченияоптимальнойнеоднократноймоделисотрудничествадляпроектовсоткрытымисходнымкодом.

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

Естьпричина,покоторойярассматриваюисториюсозданияздесь:какосновательсообщества,выпросителюдейинвестироватьввашусобственность,товарныйзнакибрендинг.Всвоюочередь,какмыипоступаемвслучаесZeroMQ,выможетеиспользоватьэтотбрендинг,чтобыустановитьпланкукачества.Когдавызагружаетепродуктмаркированный«ZeroMQ»,вызнаете,чтоонбылвыпущенпоопределеннымстандартам.Этоосновноеправилокачества:запишитесвойпроцесс;иначевынесможетеегоулучшить.Нашипроцессынеидеальны,ониникогдаинестануттаковыми.Нолюбойнедостатоквнихможетбытьисправленипротестирован.

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

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

Глава4-ПротоколдляколлаборацииC4

55

Page 56: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

Уменьшениезависимостиотключевыхлицпутемраспределениятребуемыхнаборовнавыковпоразнымспециалистам,чтобыналюбуюобластьприходилсявысокийуровенькомпетенции.

Возможно,худшейпроблемой,скотороймыстолкнулисьвlibzmq,былазависимостьотлюдей,которыемоглипонятькод,управлятьветкамиGitHubиделатьчистыерелизы—всеводноитожевремя.Этопохоженапоискспортсменов,которыемогутбегатьмарафоныиспринты,плавать,атакжеподниматьвес.Мы,люди,можембытьоченьхороши,соблюдаяспециализацию.Проситьнасбытьдействительнохорошимивдвухпротиворечивыхвещахнелучшаяидея:эторезкосократитчислокандидатов,чтоплоходлялюбогопроекта.Унасбылаэтапроблемавlibzmqв2009годуилиоколотого,ионабыларешенапутемразделенияролиМейнтейнеранадве:одинчеловекделаетпатчи,адругойвыпускаетрелизы.

Обеспечениеболеебыстройиточнойразработкипроектапутемразвитияпроцессапринятиярешений.

Этотеория—неполностьюдоказанная,ноинесфальсифицированная.Чембольшесообществоичислолюдей,которыемогутучаствоватьвдискуссиях,неопасаясьбытьподвергнутымикритикеилиувольнению,тембыстрееиточнееразрабатываетсяпрограммноеобеспечение.Скоростьздесьдовольносубъективна.Быстроедвижениевнеправильномнаправлениинепростобесполезно,оносильнонаноситущербпроекту(амыиспыталимногочеговlibzmq,преждечемперешлинаC4).

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

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

Уменьшениевнутреннейсложностирепозиториев,чтоприводиткоблегчениюдляучастияконтрибьюторовиуменьшениюобъемаошибок.

Глава4-ПротоколдляколлаборацииC4

56

Page 57: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Любопытноенаблюдение:люди,которыепреуспеваютвсложныхситуациях,любятповышатьградусзапутанности,потомучтотогдаонисохраняютсвоювысокуюценность.ЭтоэффектКобры(загуглитеэто).Gitсделалветвилегкимииоставилнассослишкомраспространеннымсиндромом«gitпрост,есливыпонимаете,чтоветвьgit—этопростосложенноепятимерноелептонноепространство,котороеимеетоторваннуюисториюбезпромежуточногокеша».Разработчикинедолжнычувствоватьсебяглупымииз-засвоихинструментов.Явиделслишкоммноговысококлассныхразработчиков,запутавшихсявструктурахрепозиторияинепринимающихобщепринятуюмудростьоветвяхgit.Мыскоровернемся,чтобыразобратьсясgit-ветвями,дорогойчитатель.

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

Вконечномсчете,всемы—экономическиесущества,иощущение,что«мывладеемэтим,инашаработаникогданеможетбытьиспользованапротивнас»,значительнооблегчаетлюдямжизнь,чтобыинвестироватьвпроектсоткрытымисходнымкодом,такойкакZeroMQ.Иэтонеможетбытьпросточувство,этодолжнобытьреальностью.Существуетцелыйрядаспектовдлясозданияколлективнойсобственности,мырассмотримиходинзадругим,когдамыпройдемсяпоC4.

Основныеположения

ПроектДОЛЖЕНиспользоватьраспределеннуюсистемууправленияверсиямиgit.

УGitестьсвоинедостатки.ЕгоAPI-интерфейскоманднойстрокиужаснонепоследовательный,иунегосложная,неряшливаявнутренняямодель,которойонтычетвамвлицополюбомуповоду.Но,несмотрянато,чтоонделаетвсевозможное,чтобызаставитьсвоихпользователейчувствоватьсебяглупо,gitделаетсвоюработудействительнооченьхорошо.Болеепрагматично,яобнаружил,чтоесливыдержитесьподальшеотопределенныхобластей(ветвей!),людибыстроучатсяgitинесовершаютмногоошибок.Этоподходитдляменя.

ПроектДОЛЖЕНбытьразмещеннаgithub.comилиегоэквиваленте,называемомздесь«Платформа».

Яуверен,чтооднаждыкакая-нибудькрупнаяфирмакупитGitHubисломаетее,инаееместовстанетдругаяплатформа.ДосихпорGithubобслуживаетпочтиидеальныйнаборминимальных,быстрых,простыхинструментов.Янаправилтудасотнилюдей,ивсеонидосихпортам,словномухи,застрявшиевблюдцесмедом.

ПроектДОЛЖЕНиспользоватьсистемууправленияпроектами.

Глава4-ПротоколдляколлаборацииC4

57

Page 58: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Мыдопустилиошибкувlibzmq,перейдянаJira,потомучтомытогдаещененаучилисьправильноиспользоватьтрекерGitHub.Jira—отличныйпримертого,какпревратитьчто-тополезноевзапутанныйбеспорядок,потомучтобизнесзависитотпродажибольшегоколичества«функций».НодаженекритикуяJira,сохранениетрекеразадачнатойжеплатформеозначает,чтонаодинпользовательскийинтерфейс,которыйпридетсяучить,станетменьше,однимлогиномстанетменьше,появитсяплавнаяинтеграциямеждупроектамиипатчами.

ПроектДОЛЖЕНиметьчеткодокументированныерекомендациипостилюкода.

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

«Участник(Contributor)»—эточеловек,которыйхочетпредоставитьпатч,являющийсянаборомкоммитов,которыерешаютчеткоопределенныепроблемы.«Мейнтейнер(Maintainer)»—эточеловек,которыйобъединяетпатчивпроекте.Мейнтейнерынеявляютсяразработчиками;ихработазаключаетсявсоблюдениипроцессаразработки.

Теперьмыпереходимкопределениямсторониразделениюролей,которыеизбавилинасотпагубнойструктурнойзависимостиотредкихлюдей.Этохорошоработаетвlibzmq,но,каквыувидите,этозависитотостальнойчастипроцесса.C4—нескатерть-самобранка,вампонадобитсявесьпроцесс(иличто-тооченьпохожее),чтобывсенерассыпалосьначасти.

УчастникиНЕДОЛЖНЫиметьвозможностькоммититьврепозиторий,еслионинеявляютсятакжеМейнтейнерами.МейнтейнерыДОЛЖНЫиметьвозможностькоммититьврепозиторий.

Чегомыхотелиизбежать,такэтотого,чтобылюдипроталкивалисвоиизменениянепосредственновмастер-ветку.Этобылсамыйбольшойисточникпроблемвlibzmqисторически:большиемассысырогокода,настабилизациюкоторыхпотребовалисьбымесяцыилигоды.ВконечномитогемыследовалидругимпроектамZeroMQ,такимкакPyZMQ,сиспользованиемзапросовназагрузку.Мыпошлидальшеиуказали,чтовсеизменениядолжныидтипотомужепути.Никакихисключенийдля«особыхлюдей».

Каждый,безразличияилидискриминации,ДОЛЖЕНиметьравноеправонавозможностьстатьУчастникомвсоответствиисусловиямиэтогоконтракта.

Мыдолжныбылиуказатьэтопрямо.Раньшебылотак:сторонникиlibzmqотказывалисьотпатчейпростопотому,чтоимэтоненравилось.Теперьэтоможетпоказатьсяразумнымдляавторабиблиотеки(хотяlibzmqнебыл

Глава4-ПротоколдляколлаборацииC4

58

Page 59: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

написаноднимчеловеком),нодавайтевспомнимонашейцелисозданияработы,котораяпринадлежиткакможнобольшемуколичествулюдей.Говорить«Мнененравитсявашпатч,поэтомуясобираюсьегоотклонить»,этоэквивалентновысказыванию:«Яутверждаю,чтовладеюэтим,иядумаю,чтоялучшетебя,иятебенедоверяю».Этотоксичныесообщениядлятех,ктодумаетстатьвашимисоинвесторами.

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

Лицензированиеисобственность

ПроектДОЛЖЕНиспользоватьтакуюжелицензию,какMPLv2,иливариантGPLv3(GPL,LGPL,AGPL).

Яужеобъяснил,какполнаяремиксабельность(возможностьповторнойработысматериалом)создаетлучшиймасштаб,ипочемуMPLv2илиGPLиихвариантыкажутсяоптимальнымконтрактомнаремиксабельноепрограммноеобеспечение.Есливыкрупныйбизнес,нацеленныйнато,чтобысбрасыватькоднарынке,вамненуженC4,нотогдаваминетделадосообщества.

Всевкладывисходныйкодпроекта(«патчи»)ДОЛЖНЫиспользоватьтужелицензию,чтоидляпроекта.

Этоустраняетнеобходимостьвкакой-либоконкретнойлицензииилисоглашенииобучастиивразработкепатчей.ВыделаетефоркMPLv2илиGPLкода,публикуетесвоюпеределаннуюверсиюнаGitHub,ивыиликто-либоещеможетеотправитьэтокакисправлениекисходномукоду.BSDэтогонедопускает.Любаяработа,содержащаяBSD-код,можеттакжесодержатьнелицензионныйпроприетарныйкод,поэтомувамнужноразрешениеотавторакода,преждечемвысможетеегопеределывать.

Всепатчипринадлежатихавторам.НЕДОЛЖЕНприсутствоватьникакойпроцессприсвоенияавторскихправ.

Здесьмыподходимкосновнойпричинетого,чтолюдиуверенывсвоемвкладевZeroMQ:логическиневозможнокупитьавторскиеправанасозданиеконкурентасзакрытымисходнымкодомдляZeroMQ.iMatixтоженеможетэтогосделать.Ичембольшелюдейпосылаютпатчи,темсложнееэтостановится.ZeroMQнепростосвободениоткрытсегодня—этаегоособенностьпозволитемуоставатьсятаким

Глава4-ПротоколдляколлаборацииC4

59

Page 60: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

всегда.Обратитевнимание,чтоэтонеотноситсяковсемпроектамMPLv2/GPL,многиеизкоторыхпо-прежнемутребуютвозвратаавторскихправсвоиммейнтейнерам.

КаждыйУчастникДОЛЖЕНбытьответственнымзаидентификациюсебявСпискеучастниковпроекта.

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

Требованиякпатчу

ВэтомразделемыопределяемобязательстваУчастника:вчастности,чтопредставляетсобой«годный»патч,чтобыуМейнтенеровбылиправила,всоответствиискоторымионимогутприниматьрешенияопринятииилиотклонениипатча.

МейнтейнерыиУчастникиДОЛЖНЫиметьучетнуюзаписьнаПлатформеиДОЛЖНЫиспользоватьсвоенастоящееимяилиизвестныйпсевдоним.

Вхудшемслучае,когдакто-торазместилвредныйкод(запатентованныйилипринадлежащийкому-тодругому),мыдолжныуметьотслеживать,ктоэтосделаликогда,чтобымымоглиудалитькод.Указыватьнастоящиеимяилиизвестныйпсевдоним—этотеоретическаястратегияпоснижениюрискапоявленияфиктивныхпатчей.Мынезнаем,работаетлиэто,потомучтоунасещенебылопроблемсэтим.

ПатчДОЛЖЕНпредставлятьсобойминимальноерешениеконкретнойидентифицированнойисогласованнойпроблемы.

ЭтореализацияпринципаОриентированнойнапростотуразработки,прокоторыйярасскажувэтойглавепозже.Однаявнаяпроблема—одноминимальноерешение,применение,тестирование,повторение.

ПатчДОЛЖЕНпридерживатьсяправилстилякодапроекта(styleguidelines),еслиониопределены.

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

ПатчДОЛЖЕНпридерживатьсяруководящихпринципов«РазработкапубличныхИнтерфейсов»,определенныхниже.

Глава4-ПротоколдляколлаборацииC4

60

Page 61: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Ах,боль,боль.Янеговорюотомвремени,когдамнебыловосемьлет,иянаступилнадоскусторчащемизнее4-дюймовымгвоздем.Этобылоещеничего.Яговорюо2010-2011годах,когдаунасбылонесколькопараллельныхрелизовZeroMQ,каждыйизкоторыхимелразныенесовместимыеAPIилипроводныепротоколы.Этобылиупражнениявплохихправилах,бессмысленнособлюдаемых,которыеисегоднявсеещепричиняютнамболь.Правилогласило:«ЕсливыизменитеAPIилипротокол,выДОЛЖНЫсоздатьновуюосновнуюверсию».Проткнитемоюногугвоздем,этоменееболезненно.

Однимизбольшихизменений,которыемысделалисC4,являетсязапретподобногосанкционированногосаботажа.Удивительно,ноэтодаженесложно.Мыпростонеразрешаемнарушатьсуществующиепубличныеконтракты,иточка,еслитольковсенесогласятсясэтим,тогдада.КаксказалЛинусТорвальдс23декабря2012года:«МЫНЕНАРУШАЕМПОЛЬЗОВАТЕЛЬСКОЕПРОСТРАНСТВО!»

ПатчНЕДОЛЖЕНвключатьнетривиальныйкодиздругихпроектов,еслитолькоУчастникнеявляетсяизначальноавторомэтогокода.

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

ПатчДОЛЖЕНчеткокомпилироватьсяипроходитьсамотестированиепроекта,покрайнеймере,наосновнойцелевойплатформе.

Длякросс-платформенныхпроектовсправедливоусловие,чтобыпатчработалвсредеразработки,используемойУчастником.

СообщениекоммитаДОЛЖНОсостоятьизоднойкороткой(менее50символов)строки,вкоторойзадаетсяпроблема(«Проблема:...»),закоторойследуетпустаястрока,азатемпредлагаемоерешение(«Решение:...»)).

Этохорошийформатдлясообщенийкоммита,которыйподходитдляэл.почты(перваястрокастановитсятемой,аостальнаячасть—теломписьма).

«Корректныйпатч»—этопатч,которыйудовлетворяетвышеуказаннымтребованиям.

Есливдругэтонепонятно,возвращаемсякформулировкамиопределениям.

Глава4-ПротоколдляколлаборацииC4

61

Page 62: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Процессразработки

Вэтомразделемыпоэтапноописываемпроцессразработки.

ИзменениявпроектеДОЛЖНЫрегулироватьсяалгоритмомточноговыявленияпроблемипримененияминимальныхточныхрешенийэтихпроблем.

Этоэссенциятридцатилетнегоопытыразработкипрограммногообеспечения.Этокрайнепростойподходкразработке:делайтеминимальныеточныерешенияреальныхпроблем,нибольше,нименьше.ВZeroMQунаснебыломестазапросамдополнительныхфункций.Отношениякдополнительнымфункциямкаккбагамсмущалонекоторыхновичков.Ноэтоработало,инетольковopen-source.Формулировкапроблемы,которуюмыпытаемсярешить,сучетомкаждогоотдельногоизменения,являетсяглавнымприпринятиирешенияотом,нужноливнедрятьизменениеилинет.

Чтобызапроситьизменения,пользовательДОЛЖЕНзарегистрироватьпроблемунаПлатформе.

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

ПользовательилиУчастникДОЛЖНЫописатьпроблему,скоторойонистолкнулись.

«Проблема:намнужнафункцияX.Решение:сделатьэто»—воттакнеправильно.«Проблема:пользовательнеможетвыполнятьпростыезадачиAилиB,кромекакспомощьюсложногообхода.Решение:сделатьфункциюX»являетсядостойнымобъяснением.Т.к.каждый,скемякогда-либоработал,долженбылусвоитьэто,тостоитещеразповторить:сначалаопределяйтереальнуюпроблему,атолькозатемеерешение.

ПользовательилиУчастникДОЛЖНЫстремитьсякконсенсусуотносительноточностиихнаблюденияиценностирешенияпроблемы.

Ипосколькумногиеочевидныепроблемыиллюзорны,ясноизлагаяпроблему,мыдаемдругимвозможностьисправитьнашулогику.«ВыиспользуететолькоAиB,потомучтофункцияCненадежна.Решение:сделайтефункциюCработоспособной».

ПользователиНЕДОЛЖНЫрегистрироватьзапросынановыевозможности,идеи,предложенияилилюбыерешенияпроблем,которыеявнонезадокументированыинедоказуемы.

Глава4-ПротоколдляколлаборацииC4

62

Page 63: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Существуетнесколькопричиннерегистрироватьидеи,предложенияилизапросыфункций.Понашемуопыту,онипростонакапливаютсявтрекерезадач,покаихкто-нибудьнеудалит.Лучше,когдамырассматриваемвсеизменениякакрешенияпроблем,ведьтогдамысможемтрезворасставлятьприоритеты.Либопроблемареальна,икто-тохочетеерешитьсейчас,либоеенетвповестке.Поэтомуспискамжеланий—нет.

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

Мнебыоченьхотелось,чтобытрекерGitHubпростоперечислилвсепроблемы,которыемырешиливкаждомрелизе.Сегоднянамприходитсяписатьэтовручную.Есливыразмещаетеномерпроблемывкаждомкоммите,иеслииспользоватьтрекерGitHub,окоторыймы,ксожалению,ещенесделалидляZeroMQ,этуисториюрелизовлегчеделатьмеханически.

Чтобыработатьнадпроблемой,УчастникДОЛЖЕНсделатьфоркрепозиторияпроекта,азатемработатьсэтойкопией.

ЗдесьмыобъясняеммодельGitHubfork+pullrequest,чтобывновьприбывшимприходилосьизучатьтолькоодинпроцесс(С4),чтобыстатьучастником.

Чтобыотправитьпатч,УчастникДОЛЖЕНсоздатьPullRequestвпроект.

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

УчастникНЕДОЛЖЕНпроизводитькоммитынепосредственновпроект.

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

Чтобыобсудитьпатч,людиМОГУТкомментироватькоммитыиPullRequest’ынаПлатформеиливдругомместе.

Случайнораспределенныедискуссиимогутсбиватьстолку,ноGitHubрешаетэтодлявсехтекущихучастников,отправляяэлектронныеписьматем,ктодолженследитьзатем,чтопроисходит.УнасбылтотжеопытитожерешениевWikidot,ионоработает.Нетникакихдоказательствтого,чтообсуждениевразныхместахимееткакой-либонегативныйэффект.

Глава4-ПротоколдляколлаборацииC4

63

Page 64: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Чтобыпринятьилиотклонитьпатч,МейнтейнерДОЛЖЕНиспользоватьинтерфейсплатформы.

Работачерезвеб-интерфейсGitHubозначает,чтоPullRequest’ырегистрируютсякакпроблемысрабочимпроцессомиобсуждением.Яуверен,чтоестьиболеесложныеспособыработы.Всеусложнитьоченьпросто,авотзапростотойстоятогромныеусилия.

МейнтейнерНЕДОЛЖЕНприниматьсвойсобственныйпатч.

Былоправило,котороемыопределилимноголетназад,чтобыостановитьвыгораниелюдей:неменеедвухчеловекнапроект.Проектыодногочеловека,какправило,заканчиваютсяслезамиили,покрайнеймере,горькойтишиной.Унасдовольномногоданныховыгорании,почемуэтопроисходитикакегопредотвратить(дажевылечить).Ярасскажуобэтомпозжевэтойглаве,потомучто,есливыработаетесоткрытымисходнымкодом,вамнужнознатьорисках.Правило«неприниматьсвойсобственныйпатч»преследуетдвецели.Во-первых,есливыхотите,чтобывашпроектбылсертифицированC4,вамнужновзаимодействоватьхотябысоднимчеловеком,которыймогбыпомочь.Еслиниктонехочетвампомочь,возможно,вамнужнопереосмыслитьсвойпроект.Во-вторых,контрользакаждымпатчемделаетегонамногоболееудовлетворительным,удерживаетнасвправильномнаправлениииостанавливаетнас,еслимынарушаемправилаиз-заспешкиилилени.

МейнтейнерыНЕДОЛЖНЫделатьоценочныесужденияотносительнокорректныхпатчей.

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

МейнтейнерамСЛЕДУЕТбыстроприниматьисправления.

Существуеткритерий,которыйяназываюпериодожиданияизменений,которыйравенпериодуотопределенияпроблемыдотестированияеерешения.Чембыстрее—темлучше.ЕслиМейнтейнерынемогутреагироватьнаPullRequest’ытакбыстро,каклюдиотнихтогоожидают,значитониневыполняютсвоюработу(илиимнужнобольшерук).

МейнтейнерыМОГУТприниматьнекорректныеисправленияотдругихУчастниковсцелью:(а)прекращениябесплодныхдискуссий,(б)улавливаниянеправильныхпатчейвистории,(в)привлеченияУчастниковкулучшениюкачестваихпатчей.

Глава4-ПротоколдляколлаборацииC4

64

Page 65: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

Обычнаяпрактика(пессимистичноеслияние,ПС)–ждать,поканебудетоконченодлительноеинтеграционноетестирование(CI),потомвыполнитьревизиюкода,потомпротестироватьпатчвотдельнойветке,ипозжеотписатьавторуотзыв.Авторможетисправитьпатч,итогдациклтест/ревизиязапускаетсяснова.Наэтойстадиимейнтейнерможетсделать(ичастоделает)ценноесуждениевроде«мнененравится,каквыэтосделали»или«этонесоответствуетнашемувидениюпроекта».

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

ПСхарактернодлябольшинствапроектов,ияуверен,чтовбольшинствеслучаевнеправильно.

Начнусперечисленияпроблем,которыесоздаетПС:

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

Глава4-ПротоколдляколлаборацииC4

65

Page 66: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Бремяработыложитсянаотдельныхучастников,чтоироничноигрустновopensource.Мыхотимработатьвместе,ноприэтомнамговорятправитьнашуработусамим.

Атеперьпосмотрим,каквсеработаетприОптимистичномслиянии(ОС).Дляначаланеобходимопонять,чтоневсепатчиилиучастникиодинаковы.Внашихopensourceпроектахмынаблюдалиследующиечетырегруппы:

1. Хорошиеучастники,которыезнаютправилаипишутпрекрасно,идеальныепатчи.2. Хорошиеучастники,которыеделаютошибкиипишутполезные,новсежебитые

патчи.3. Посредственныеучастники,создающиепатчи,которыениктонезамечаетилине

придаетзначения.4. Участники-тролли,которыеигнорируютправилаикоторыепишутвредоносные

патчи.

ПСутверждает,чтовсепатчивредоносные,поканедоказанообратное(4).Анасамомделебольшинствопатчейполезныистояттого,чтобызанятьсяихулучшением(2).

ПосмотримнасценарииПСиОС:

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

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

3. ПС:мынаблюдаемсловеснуювойнуивсеудивляются,почемусообществотакоевраждебное.ОС:посредственныйучастникповсеместноигнорируется.Еслипатчтребуетдоработки,тоэтопроизойдетбыстро.Участниктеряетинтерес,ипроисходитоткатпатча.

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

ВлюбомслучаеуОСрезультатлучше,чемуПС.

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

Глава4-ПротоколдляколлаборацииC4

66

Page 67: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Пользователь,создавшийзадачу,ДОЛЖЕНзакрытьзадачупослепроверкиисправления.

Когдаодинчеловекоткрываетзадачу,адругойработаетнадней,лучшепозволитпервомучеловекузакрытьзадачу.Этобудетдвойнойпроверкойтого,чтозадачабыларешенаправильно.

Любойучастник,которыйимеетоценочныесужденияопатче,ДОЛЖЕНвыразитьихчерезсвоисобственныепатчи.

Посути,цельюздесьявляетсяпозволитьпользователямпробоватьпатчи,анетратитьвремявспорах,обсуждая«за»и«против».Наскольколегкосделатьпатч,настольколегкоегооткатитьиприменитьдругой.Выможетепредположить,чтоэтоприведетк«войнепатчей»,нотакогонеслучалось.Унасбылонесколькослучаеввработесlibzmq,когдапатчиодногоучастникауничтожалисьдругимучастником,которыйчувствовал,чтоэкспериментнедвигаетсявправильномнаправлении.Этолегче,чемпытатьсядостигнутьконсенсуса.

МейнтейнерыДОЛЖНЫзакрыватьзадачипользователей,которыеостаютсябездействийвтечениенеприемлемодолгогопериодавремени.

Держитетрекерзадачвчистоте.

Веткиирелизы

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

Этопроцесс,которыймыобъясняемвэтомразделе.

ПроектДОЛЖЕНиметьоднуветку(«мастер»),котораявсегдасодержитпоследнююверсию,иДОЛЖЕНвсегдакомпилироваться.

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

ВпроектеНЕДОЛЖНЫиспользоваться«topicbranch»покакой-либопричине.ВперсональныхветкахМОГУТбытьиспользованы«topicbranch».

Вскореявернуськветкам.Вкратце(или«tl;dr»,какговорятвинтернете),веткиделаютрепозиторийсложнымиразреженным,требуютединогласия–всеэтодорого,иэтогоследуетизбегать.

Длясозданиястабильногорелиза,Мейнтейнердолжениспользоватьтэгврепозитории.СтабильныерелизывсегдаДОЛЖНЫбытьотделеныотмастер-ветки.

Глава4-ПротоколдляколлаборацииC4

67

Page 68: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Эволюцияпубличныхконтрактов

Под«публичнымиконтрактами»яподразумеваю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

Page 69: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

приложений?Никтоникогданезаявлялэтокакзадачу.ИскажениецитатыСтоллмана:«вашасвободасоздаватьидеальнаямирзаканчиваетсявдюймеотмоегоприложения».

Патч,вводящийновыефункции,ДОЛЖЕНделатьэтосиспользованиемновыхимен(новуюдоговоренность).

ВZeroMQмыразилидвасталкивалисьсновымифункциями,которыеиспользовалистарыеимена(илихуже–имена,которыеещеиспользовалисьгде-то).ВZeroMQv.3.0былнедавнопредставленныйсокет«ROUTER»,которыйбылполностьюдругим,нежелисуществующийсокет«ROUTER»в2.х.Господи,фейспалм,почему?Причина:очевидно,дажеумныхлюдейиногдастоитконтролировать,чтобыонинесовершалиглупыхпоступков.

НовыеконтрактыДОЛЖНЫмаркироватьсякак«черновик»(«draft»),покаонинестанутстабильнымиинебудутиспользоватьсяреальнымипользователями.

СтарыеконтрактыДОЛЖНЫсистематическиотмечатьсякак«устаревшие»(«deprecated»).

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

СтарыеконтрактыДОЛЖНЫсистематическиотмечатьсякак«устаревшие»(«deprecated»)изаменятьсяихновымианалогамипомеренеобходимости.

Попрошествиидостаточногоколичествавремени,устаревшиеконтрактыДОЛЖНЫбытьудалены.

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

ИменаустаревшихконтрактовНЕДОЛЖНЫповторноиспользоватьсяновымиконтрактами.

Ах,да,помнюрадостьоттого,чтовZeroMQv3.xпереименовалитоповыефункцииAPI(zmq_send[3]иzmq_recv[3])ивыбросилистарыеназванияновыхметодов,которыебыликрайненесовместимы(икоторые,яподозреваю,малоктоиспользовал).Вы,должнобыть,опятьзапутались,ударилисебяполбу,ноэтореальното,что

Глава4-ПротоколдляколлаборацииC4

69

Page 70: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

произошло,иябылтакжевиновен,какивсеостальные.Ведь,вконцеконцов,мыжесменилиномерверсии!Единственнаяпользаэтогоопытабылавтом,чтомывывелиэтоправило.

Администрированиепроекта

УчредителипроектаДОЛЖНЫвыступатьвкачествеАдминистраторовпонаборуМейнтейнеров.

Кто-тодолженуправлятьпроектом,иимеетсмысл,чтоучредителидолжныначатьсэтого.

АдминистраторыДОЛЖНЫобеспечитьсвоюсобственнуюпреемственность,продвигаянаиболееэффективныхМейнтейнеров.

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

НовыйУчастник,которыйделаетправильныепатчи,которыйчеткопонимаетцелипроекта,ипроцессразработкиДОЛЖЕНбытьприглашенстатьМейнтейнером.

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

АдминистраторыДОЛЖНЫотстранятьМейнтейнеров,неактивныхвтечениедлительногопериодавремени,илинеоднократнонарушившихизложенныйпроцессразработки.

ЭтобылопредложениеЯнаБарбера:намнуженспособубиратьнеактивныхМейнтейнеров.ПервоначальноМейнтейнерыбылисамоизбранными,ноэтозатрудняетудалениенарушителейспокойствия(которыередки,ноненеизвестны).

АдминистраторыДОЛЖНЫблокировать«плохихучастников»,которыевызываютстрессипричиняютбольдругимлюдям,участвующимвпроекте.Этодолжнобытьсделанопослепубличногообсуждения,свозможностьюдлявсехсторонговорить.«Плохойучастник»—этотот,ктонеоднократноигнорируетправилаикультурупроекта,выставляетбеспочвенныеаргументы,производитвраждебныеилиоскорбительныедействия,икоторыйнеможетсамостоятельнокорректироватьсвоеповедение,когдадругиепросятегосделатьэто.

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

Глава4-ПротоколдляколлаборацииC4

70

Page 71: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

Глава4-ПротоколдляколлаборацииC4

71

Page 72: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Дизайн,разработка,инновации«Размериразнообразиесообществаявляетсяключевымфактором.»

Давайтерассмотриминновации,которыеВикипедияопределяеткак«развитиеновыхценностейпосредствомрешений,которыеотвечаютновымтребованиям,неявнымпотребностямилипотребностямстарыхклиентовилирынковвновыхспособахдобавлениястоимости».Насамомделеэтозначитрешатьпроблемыболеедешевымспособом.Звучитпросто,ноисториирухнувшихтехнологическихгигантовговорятобобратном.Япостараюсьобъяснить,почемукомандычастопонимаютэтонеправильно,ипредложуспособ,какнужносоздаватьчто-тоинновационное.

Историядвухмостов

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

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

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

Глава5-Дизайн,разработка,инновации

72

Page 73: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

КакZeroMQпотерялсвоюдорожнуюкарту

КогдаяпредставлялZeroMQнаконференцииMix-ITвЛионе(Франция)вначале2012г.,менянесколькоразспросилипро«дорожнуюкарту».Мойответбыл:нетбольшедорожнойкарты.Унасонибыли,имыихликвидировали.Вместонесколькихэкспертов,пытающихсяопределитьследующиешаги,мыпозволилисобытиямразвиватьсяестественнымпутем.Аудиториинеоченьпонравилсямойответ.Слишкомнепо-французски.

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

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

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

ВитогемыстолкнулисьстравматическимиизменениямивZeroMQ,откоторыхдорожныекартынаснеуберегли,несмотрянакучусилислов,потраченныхнато,чтобы«делатьвсеправильно».РезультатомэтогосталинесовместимыеизменениявAPIипротоколах.Былоясно,чтонамнуженновыйподход,определяющийпроцессвнесенияизменений.Разработчикампрограммногообеспеченияненравитсяидеяотом,чтомощные,эффективныерешениямогутпоявлятьсябезтого,чтобыумныеразработчикиихтщательновыверялииобдумывали.ИвсежетогдавЛионениктоне

Глава5-Дизайн,разработка,инновации

73

Page 74: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

поставилбыподвопросэволюцию.Этостранноииронично,поэтомудалееяещепоразмышляюобэтомявлении,ведьнаегоосновесообществоZeroMQразвиваетсясначала2012года.

Вглавенствующейтеорииинновацийговоритсяотом,чтогениальныеиндивидуумы,обдумавпроблемнуюситуацию,выдаютточноеиаккуратноерешение.Иногдаунихслучаютсяозарениявстиле«эврика!»—ирешениеготово.Изобретательисампроцессизобретенияредкие,драгоценные,единоличные.Историязнаетмногихтакихгероев-одиночек.Мыобязаныимнашимсовременныммиром.

Однакоприглядевшисьвнимательней,выувидите,чтотуткое-чтонесходится.Историянеповествуетободинокихизобретателях.Онарассказываетнамолюдях,которымповезло,которыеукралиилиприсвоилисебеавторствонадидеями,появившимисяврезультатетрудамногихдругихлюдей.Онарассказываетнамогениальныхлюдях,которыесделалиудачныйход,апотомпроводилидесятилетиявбезрезультативныхибессмысленныхпоисках.ТакиекрупныеиизвестныеизобретателикакТомасЭдисоннасамомделебылихорошивсистематизацииразнообразныхисследований,выполняемыхбольшимигруппамиученых.Этопохоженаутверждениеотом,чтоСтивДжобспридумалкаждыйдевайс,созданныйApple.Неплохоймиф,хорошдлямаркетинга,ноабсолютнобессмысленныйспрактическойточкизрениядлянауки.

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

Поэтому,вотальтернативнаятеорияинноваций:

1. Естьбезграничнаяобластьпроблем/решений.2. Областьменяетсястечениемвременивзависимостиотвнешнихобстоятельств.3. Мыможемточновосприниматьтолькотепроблемы,которыенамблизки.4. Мыможемоценитьприбыльность/затратностьпроблемы,используярынок

решений.

Глава5-Дизайн,разработка,инновации

74

Page 75: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

5. Естьоптимальноерешениедлялюбойрешаемойпроблемы.6. Мыможемдостичьэтогооптимальногорешенияэвристическимимеханическим

путем.7. Нашинтеллектможетускоритьэтотпроцесс,нонезаменитьего.

Изэтогоследует:

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

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

Можемлимыприменитьвышеописаннуютеориюнапрактике?Вконце2011г.яначалдокументироватьС4ипохожиеконтрактыииспользоватьихвZeroMQивпроектахсзакрытомкодом.Лежащийвосновепроцессяназываю«Ориентированнойнапростотуразработкой»,илисокращенноОПР(«SimplicityOrientedDesign»,SOD).Этовоспроизводимыйспособразработкипростыхиэлегантныхпродуктов.Онорганизуетлюдейвгибкиецепочкипоставщиковрешений,которыемогутбыстроидешевосориентироватьсявпроблемнойобласти.Ониделаютэто,создавая,тестируяисохраняяминимальныеприемлемыерешения,называемые«патчами»,илиотказываясьотних.Жизнеспособныепродуктысостоятиздлиннойчередыпатчей,применяемыходинповерхдругого.

Глава5-Дизайн,разработка,инновации

75

Page 76: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Во-первых,ОПРсущественнапотому,чтотакмыразвиваемZeroMQ.Онатакжеявляетсябазойдляпроцессаразработки,которыймыиспользуемприсозданиикрупныхприложенийZeroMQ.Конечно,выможетеиспользоватьлюбуюсофтвернуюархитектурнуюметодологиюсZeroMQ.

Чтобылучшепонятьто,какмыпришликОПР,давайтерассмотримальтернативы.

Trash-OrientedDesign

Наиболеепопулярнымтипомразработкивкрупныхорганизацияхявляется«Trash-OrientedDesign».TODосновываетсянаубеждении,чтодлятого,чтобыделатьденьгинамнужныкрутыеидеи.Этоупорновсплывающаячушьявляетсямощнымкостылемдлятех,ктолишенвоображения.Теориягласиттак:идеиредки,поэтомувесьфокусвтом,чтобысхватитьих.Словнодалекиеотмузыкилюдивосторгаютсягитаристом,непонимая,чтовеликиеталантынастолькодешевы,чтоонибуквальноиграютнаулицахзакопейки.

ОсновнымвыхлопомTODявляетсядорогостоящее«мышление»:концепции,инженернаядокументацияипродукция,котораяотправляетсяпрямикомвмусорноеведро.Получаетсяэтотак:приходятТворческиеЛюдисдлиннымсписком«мыможемсделатьXuY».Явиделбесконечнодетализированныеспискивсехтехудивительныхвещей,которыемогбыделатьпродукт.Мывсебылиповиннывэтом.Кактолькосвершиласьтворческаяработапогенерацииидей,тоделолишьзаисполнениемих.

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

Этиразработкипередаютсяразработчикам,которыечешутзатылокигадают,комувголовупришлаэтачушь.Ониначинаютспорить,новедьпроектировщикиспустилисьсОлимпа,и,вконцеконцов,несмертнымразработчикамспоритьстворческимилюдьмиидорогостоящимиконсультантами.

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

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

Глава5-Дизайн,разработка,инновации

76

Page 77: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

понемногупродуктначинаетвыглядетьлучше.

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

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

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

TODмогбыбытькарикатурой,еслибынебылтакраспространен.Околодевятнадцатииздвадцатипродуктов,готовыхквыпускунарынокбольшимикомпаниями,ждетпровал(да,87%статистикиделаетсянаместе).Издвадцатилишьодинвозможнопреуспеет,даитоблагодаряагрессивнойрекламеислабостиконкурентов.

ОсновнаяморальTODясна,нотрудноусвояема:идеидешевы.Безисключений.Несуществуетгениальныхидей.Любой,ктоначинаетразговорсословами«О!Ещемыможемсделатьвотэто!»долженбытьпобитсрвениемстранствующихевангелистов.Этотожесамое,чтосидетьвкафеуподножиягоры,питьгорячийшоколадиговоритьдругим:«Эй,уменяестькласснаяидея,мыведьможемвзобратьсянаэтугору!Ипостроитьтамнавершинешале!Сдвумясаунами!Исадом!Эй,аещемыможемобеспечитьегоэлектричествомспомощьюсолнечныхбатарей!Чувак,этожекруто!Вкакойцветмыегопокрасим?Взеленый!Нет,всиний!Ок,идитеисделайтеэто,аяпокапобудутутизаймусьтаблицамииграфиками!».

Дляхорошегоначалауспешногопроцессаразработкисоберитереальныепроблемы,скоторымисталкиваютсялюди.Вторымшагомбудетоценкаэтихпроблемспомощьюосновноговопроса«Восколькообойдетсярешениеэтойпроблемы?».Послеэтогоможносделатьсписокпроблем,которыестоитрешать.Хорошиерешенияреальныхпроблембудутуспешнымпродуктом.Ихуспехбудетзависетьоттого,насколькохорошиидешевырешения,инаскольковажнапроблема(и,ксожалению,насколькобольшиерасходынамаркетингможносебепозволить).Ноихуспехбудеттакжезависетьоттого,сколькоусилийтребуетихприменение,другимисловаминасколькопростымионибудут.

Глава5-Дизайн,разработка,инновации

77

Page 78: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Теперь,сразивдраконаабсолютнойбесполезности,атакуемдемонасложности.

Complexity-OrientedDesign

Понастоящемухорошиекомандыразработчиковималенькиекомпаниимогутобычнозаниматьсясозданиемприличныхпродуктов.Нобольшаячастьпродуктоввсеравнополучитсяслишкомсложнымиименееуспешными,чеммоглибыбыть.Этовсепотому,чтокомандыспециалистов,дажелучшиеизних,частоупрямопрактикуютОриентированнуюнасложностьразработку,(Complexity-OrientedDesign,COD),какяееназываю.Иработаетонатак:

Менеджментправильноидентифицируетнекоторыеинтересныеисложныепроблемы,привлекательныесэкономическойточкизрения.Воттут-тооникакразипопадаютнаколеюТOD.Командасэнтузиазмомначинаетсоздаватьпрототипыиработатьнадядром.Всеэтоработает,какибылозадумано,икоманда,загоревшисьещебольше,углубляетсявнапряженнуюразработкуиобсуждениеархитектуры,созданиеэлегантныхсхем,прекрасныхистройных.Менеджментвозвращаетсяивоодушевляеткомандунарешениеещеболеесложныхпроблем.Намсвойственноприравниватьзатратыкстоимости,поэтомучемсложнееидорожерешениепроблемы,тембольшезанегоможнобудетвыручить—такимкажется.Командасостоитизинженеров,которыелюбятсоздаватьштуки,ионивступаютвдело.Онисоздаютисоздаютисоздают,икончаетсявсеэтомассивнойпрекрасноспроектированнойсложностью.Рынокпризнакомствеспродуктом,чешетзаухомиспрашивает:«Что,серьезно,иэтолучшеерешение,которыевынашли?».Да,людииспользуютпродукцию,еслиприэтомимнепридетсятратитьсвоисобственныеденьгинаподъемнагорумануалов.Менеджментполучаетпозитивныеоткликиотсвоихкрупныхклиентов,которыеразделяютмнениеотом,чточемвышестоимость(обученияииспользования),темвышеценность,ипродолжаеттолкатьпроцесс.Вэтовремягде-товмиремаленькаякомандазанимаетсярешениемтакойжепроблемы,используялучшийподход,ичерезгодразноситсложившеесяположениенарынкенамелкиеосколки.

ДляCODхарактерныкоманды,которыеодержимырешениемнеправильныхпроблемикоторыеподверженыколлективноймании.

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

Глава5-Дизайн,разработка,инновации

78

Page 79: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ещепотенциальныхпроблем.Ониспорят:«Ачто,есликто-тозахочетсделатьХ?»,ноониникогданеспрашиваютсебя:«СкольконасамомделестоитсделатьХ?».

ХорошимпримеромCODнапрактикеоказалсяBluetooth,сложный,сизлишне-усложненнойконструкциейкомплектпротоколов,которыепользователиненавидят.Онпродолжаетсуществоватьтолькопотому,чтовсплошьзапатентованнойотраслинетреальныхальтернатив.Bluetoothпрекраснозащищен,чтопочтибесполезнодлябесконтактногопротокола.ВтожевремяемунедостаетстандартногоAPIдляразработчиков,чтозначит,егореальнонакладноиспользоватьвприложениях.Наканалегрупповыхдискуссий#zeromqучастникWintreоднаждынаписал,каконбылвзбешен,обнаружив,чтовXMMS2быларабочаяpluginсистема,нооннемогпроигрыватьмузыку.

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

ОсновныеурокиCODпросты,ногорькинавкус:

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

SimplicityOrientedDesign

Наконец,мыподошликредкойиценнойОриентированнойнапростотуразработке(SimplicityOrientedDesign,SOD).Этотпроцессначинаетсясреализации:мынезнаем,чтомыдолжнысделать,поканеначнемделатьчто-то.Выдвижениеидейиликрупныхпроектовнепростобесполезно,амешаетразрабатыватьпо-настоящемуточныерешения.Действительнолакомыезадачиспрятаны,какзаветныеоазисы,илюбаядеятельность,кромеразыскиванияих,лишьбольшеокутываетихтуманом.Вамнужнобытьмобильным,двигатьсябыстроиналегке.

SODработаетследующимобразом:

Глава5-Дизайн,разработка,инновации

79

Page 80: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Мысоставляемсписокинтересныхпроблем(наблюдаязатем,каклюдииспользуюттехнологиюилидругиепродукты)ирасполагаемихотпростыхксложным,рассматриваяиопределяяспособыиспользования.Мыберемсамуюпростую,самуюдраматичнуюпроблемуиищемдлянееминимальноеколичествоприемлемыхрешений,или«патчей».Каждыйпатчрешаетименноисходнуюивсемиодобреннуюпроблемунаиболееоптимальнымспособом.Приоценкепатчеймыруководствуемсяследующимвопросом:«Можемлимынайтиболеепростоерешениепроблемы?»Мыможемизмеритьсложностьколичествомконцепцийимоделей,скоторымипользователюпридетсяознакомитьсяилиперебиратьнаугаддляиспользованияпатча.Чемменьше,темлучше.Идеальныйпатчрешаетпроблему,нетребуяничегоотпользователя.Развитиенашегопродуктазаключаетсявсозданиипатча,которыйрешаетпроблему«доказательстваконцепции»икоторыйпотомвстраиваетсявединуюлиниюболеезрелыхпродуктов,состоящихизсотентысячпатчейодинповерхдругого.Мынеделаемничего,чтонеявлялосьбыпатчем.Мыпринуждаемкэтомуформальнымиправилами,которыетребуют,чтобыкаждоедействиеилиобязанностьбылипривязаныкосновнойиодобреннойвсемизадаче,четкосформулированнойизадокументированной.Мывыстраиваемнашипроектыкакцепочкупоставщиковрешений,гдекаждыйпроектможетобеспечитьзадачисвоим«поставщикам»иполучитьвответпатчи.Цепочкапоставщиковявляется«стоп-краном»,потомучтокогдалюдинетерпеливождутответа,намволейневолейприходитсяработатьвузкихвременныхрамках.Индивидуумымогутработатьнадлюбымпроектомиделатьпатчидляважныхпоихмнениюпроблем.Никтоизнихне«владеет»проектами,онимогутлишьпринуждатькследованиюформальнымправилам.Уотдельновзятогопроектаможетбытьмноговариаций,каждыйможетобрастатьразнымипатчами,конкурирующимимеждусобой.Проектыэкспортируютформальныеизадокументированныеинтерфейсы,поэтомупроекты-исходники(клиентские)находятсявневеденииопроделываемойработе.Приэтомонимогутсоревноватьсязавниманиепроектов-клиентов,создаваябесплатныйиконкурентныйрынок.Мыпривязываемнашуцепочкупоставоккреальнымпользователямивнешнимклиентам,имыведемвесьпроцессбыстрымицикламистем,чтобыпроблема,полученнаяотпользователейсосторонымоглабытьпроанализирована,оцененаирешенапатчемзанесколькочасов.Вкаждыймомент,начинаяспервогопатча,нашпродуктготовквыпуску.Этоважно,потомучтобольшаячастьпатчейбудетнеправильными(10-30%),итолько

Глава5-Дизайн,разработка,инновации

80

Page 81: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

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

Людиотмечают,чтоутакихалгоритмовестьограничения.Можнозациклитьсянарешениилокальныхзадач.Нотакустроенажизнь:собираеммаленькиепостепенныеулучшениядлительноевремя.Несуществуетгениальныхразработчиков.Мыснижаемриск,связанныйслокальностьюпроблем,охватываявсюобласть,ивообщеэтоспорныйвопрос.Отограниченийнеуйти,оникакзаконыфизики.Теориягласит,что

именнотакработаютинновации,поэтомулучшепринятьэтоиработатьсэтим,анеруководствоватьсяверойвмагию.

Осознаввосходящийхарактеринноваций,выпоймете,почемунекоторыекоманды,компанииилипродуктызастреваютввымышленнойстранеуменьшающихсяперспектив.Унихпростоотсутствуетразнообразиеиколлективнаямудростьдлянахождениялучшихвершин,ккоторымстремиться.КогдаNokiaзакрылисвоиopen-sourceпроекты,ониперекрылисебекислород.

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

Вopensourceпроектахмыделаемэтуработупублично.Неттакогомомента«адавайтеоткроемкод».Когдатакделают,по-моему,этоговоритотом,чтолюдинепонимаютсмыслopensourceпроектов—вовлечьпользователейввашеисследованиеипостроитьсообществовокругосновнойархитектуры.

Стратагемыдляуспехаopensourceпроектов

Шаблоныдляуспеха

Глава5-Дизайн,разработка,инновации

81

Page 82: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Этоглавассериейшаблоновповедениядлядостиженияуспехавразработкепрограммногообеспечения.Онистремятсявключитьвсё,чтоотделяетуспехотславнойтрагическойнеудачи.Онибылинаписанызаодинденькак“религиозно-маниакальныедогматы”руководителеми“всёостальноебезумное”—коллегой.Дляменяониявляютсянаукой.НоотноситеськЛенивымперфекционистамидругиминструментамтак,каквыотноситеськобычныминструментам—заточитеих,используйтеивыбросите,еслиподвернетсячто-тополучше.

ЛенивыйперфекционистНикогданесоздавайтеничего,чтонеявляетсяточнымминимальнымрешениемпроблемы,которуюмыможемопределитьидолжнырешить.

Ленивыйперфекционисттратитсвоесвободноевремянаблюдаязадругимиивыявляязадачи,которыенужнорешить.Онищетпонимания,всегдаспрашивая“Вчемреальнаяпроблема?”,затемдвижетсяточноиминимально,создаваяилизаставляядругихсоздаватьпригодноедляиспользованиярешениедляоднойконкретнойзадачи.Ониспользуетилипоручаетдругимиспользоватьэтирешения,иповторяетэтодотехпор,поканезакончатсянерешенныепроблемы,иливремяиденьги.

ДоброжелательныйтиранУправлениебольшимвойскомпроисходитпотомужепринципу,чтоинесколькимилюдьми,этопростовопросразделенияихнаменьшиегруппы.—Сунь-Цзы

Доброжелательныйтиранделитбольшиепроблемынамелкиеиотдаётихразнымгруппам,чтобысосредоточиться.Онразбиваетзадачимеждуэтимигруппами,какAPIилирешения“внепротокола”,очемярасскажувследующейглаве.Доброжелательныйтиранстроитцепочку,котораяначинаетсяспроблемизаканчиваетсянахождениемрешения.Онбезжалостенвтом,какработаетэтацепочка,нонеговоритлюдямчтоикаконидолжныделать.

НебоиЗемляИдеальнаякомандасостоитиздвухчастей-сторон:однадлянаписаниякода,другаядляобратнойсвязи.

Глава5-Дизайн,разработка,инновации

82

Page 83: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

НебоиЗемляработаютвместекакединоецелое,внепосредственнойблизости,ноформальноониобщаютсячерезрешениепроблем.Небополучаетинформациюопроблемахотдругихпользователей,атакжевходесобственногоиспользованияпродукта,и“питает”еюЗемлю.Землябыстроотвечаеттестируярешения.НебоиЗемлямогуткоммуницироватьчерездесяткизапросовежедневно.Небообщаетсясдругимипользователями,аЗемля—сдругимиразработчиками.НебоиЗемлямогутбытьдвумяразнымилюдьмиилидвумянебольшимигруппамилюдей.

ОткрытаядверьТочностьзнанийприходитизразнообразия.

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

СмеющийсяклоунСовершенствоисключаетучастие.

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

ЗаботливыйгенералНичегонепланируйте.Разрабатывайтестратегиюитактику,анеставьтецели.

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

Социальныйинженер

Глава5-Дизайн,разработка,инновации

83

Page 84: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Есливызнаетесвоеговрагаизнаетесебя,вамненужнобоятьсяистасражений.—Сунь-Цзы

Социальныйинженерчитаетсердцаиумытех,скемонработает.Онспрашиваеткаждого“Чтозаставляеттебясердиться,волноваться,чувствоватьсебявбезопасности,бытьсчастливым,аргументироватьсвоюточкузренияилиспорить?”Онизучаеткапризыипредрасположенности.Сэтимизнаниямионможетпоощрятьтех,ктоявляетсяполезным,ипрепятствоватьтем,ктотаковымнеявляется.Социальныйинженерникогданедействуетосновываясьнасвоихсобственныхэмоциях.

ПреданныйсадовникТотпобедит,чьяармиявоодушевленаединымдухомвовсехсвоихрядах.—Сунь-Цзы

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

БродягаПослепересеченияреки,выдолжныоказатьсявдалекеотнее.—Сунь-Цзы

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

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

Глава5-Дизайн,разработка,инновации

84

Page 85: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

ФлешмобВодаформируетсвойкурсвзависимостиотгрунта,покоторомупротекает.—Сунь-Цзы

Флешмобыобъединяютсявместевпространствеивременипомеренеобходимости,азатемэтиобъединенияоченьбыстроисчезают.Физическаяблизостьимеетбольшоезначениедлясвязисвысокойпропускнойспособностью.Носовременемэтосоздаеттехническиегетто,гдеЗемляотделяетсяотНеба.Флешмобстараетсясобратьмного“частыхпассажиров”.

Канарейка-дозорныйБоль,какправило,неявляетсяхорошимзнаком.

Канарейка-дозорныйизмеряеткачествоорганизациипоегособственномууровнюстраданийипонаблюдаемомууровнюудовлетворениятех,скемонработает.Онприводитновыхучастниковворганизации,чтобытеммоглипоказатьещесырые“страданияневиновных”.Онможетиспользоватьалкоголь,чтобызаставитьдругихрассказатьосвоихболевыхточках.Онспрашиваетдругихисамогосебя:“Высчастливыучаствоватьвэтомпроцессе,иеслинет,топочему?”Когдаорганизацияпроцессапричиняетбольемуилидругим,онрассматриваетэтокакпроблему,котораядолжнабытьрешена.Людидолжнынаслаждатьсясвоейработой.

ВиселицаНикогданемешайдругимсовершатьошибки.

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

Глава5-Дизайн,разработка,инновации

85

Page 86: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

ИсторикСохранениеобщихзаписейможетбытьутомительным,ноэтоединственныйспособизбежатьсговора.

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

ПровокаторКогдачеловекзнает,чтобудетповешенчерездвенедели,этоневероятноконцентрируетмысли.—СэмуэльДжонсон

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

МистикКогдалюдиспорятилижалуются—простоотправьтеимцитатуСунь-Цзы.—МиккоКоппанен

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

Глава5-Дизайн,разработка,инновации

86

Page 87: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Глава5-Дизайн,разработка,инновации

87

Page 88: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ЖивыеСистемы«ЖивойСистемой»называетсятакаясистема,котораяразвиваетсявестественнойсреде,самостоятельноприспосабливаяськновымусловиям.ЖивыеСистемымогутсуществоватьдовольнодолгоевремя,легкоадаптируяськлюбымизменениям,являясь,такимобразом,чрезвычайноэффективными.Вотличиеотних,“СпланированныеСистемы”являются,какправило,неустойчивыми,плохореагирующиминаизмененияи,какследствие,недолговечными.ВэтойстатьеярасскажуоЖивойСистеменапримерепрограммногообеспеченияиобщества,атакжерасскажуотом,каксоздатьподобнуюсистему.

Почему“ЖивыеСистемы”

СогласноВикипедии,«ЖивыеСистемы»—этосущности,состоящиеизсамоорганизующихсяэлементов,активновзаимодействующихсокружающейсредой.Этисистемыподдерживаютсяблагодаряпотокаминформации,энергииивеществ.”ДанныйтерминбылпредложенпсихологомДжеймсомГриеромМиллеромдляобозначенияконцепцийжизни.

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

Хочусказать,что“психологияпрограммногообеспечения—этопсихологиялюдей”.

Сегоднябольшинствопрограммныхпродуктовхорошоспланированы,ноонинестановятся«ЖивымиСистемами».Онинеумолимопроваливаютсянастадиидоставки,будучипроданнымисилойилиобманом.Длятого,чтобыпрограммноеобеспечениестало«ЖивойСистемой»,онодолжноиспользоватьсяорганизацией,котораяегоразрабатывает,итогдаоно“живет”или«умирает»вместесэтойорганизацией.«Организация»можетбытьчем-тобольшим,чемкомпанияиликоманда.Онаможетвключатьвсебятысячикоманд,предприятий,клиентовипоставщиков,состоящихвнеобъяснимых,нореальнозначимыхсвязях.

Ничтонедемонстрируетэтотакнаглядно,какинтернет,которыйявляется«ЖивойСистемой»программногообеспечения,людей,предприятийидругихорганизаций.Организация,создавшаяинтернет,представляетсобойничтоиноекаксамопосебе

Глава6-Живыесистемы

88

Page 89: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

человеческоеобщество.Существуетмножество«ЖивыхСистем»,достаточнопосмотретьвокруг.Этоудивительнопростаяистина:чемлучшекачествосоздаваемыхнамикрупномасштабныхсистемпрограммногообеспечения,тембольшеонинапоминаютокружающуюнасреальность.

Существуюттакжеспланированныесистемы,которыепредставляютсобойполнуюпротивоположностьЖивымСистемам.Гораздолегчеспланироватьсистему,чемвыраститьее.Однакопланынеминуемостроятсяналожныхпредположенияхинедальновидныхрешениях.СпланированныеСистемывкаком-тосмыслевыглядятпривлекательнымииэффективными,однако,онинеизбежнотерпятпоражение.Вжизниможновстретитьмногоподобныхпримеров,скажем,кооперативноехозяйство,спланированныегорода,MicrosoftWindows8итакдалее.

Впрограммномбизнесеэторазделениенаживоеиспланированноелучшевсегоотраженовпротивостояниисвободногоизакрытогопрограммногообеспечения.Свободноепрограммноеобеспечение(иегобратоткрытыйисходныйкод)обычноформируетсяприреальномиспользовании,втовремякакзакрытыйисходныйкодобычноспланирован.Этоявляетсяглавнойпричинойтого,почемуянеработаюсзакрытымисходнымкодом:его“смерть”скораиожидаема.Япредпочитаю,чтобымояработасохраняласьтакдолго,какэтотольковозможно.

Ясделаюнесколькорезкихзаявлений,начинаяс:самыеуспешныекрупномасштабныесистемыпрограммногообеспечения—“ЖивыеСистемы”.Так,вусловияхконкурентногорынка,живаясистемабезусловнопобедитспланированную.Онагораздобыстрее,дешевлеиточнеевыявитирешитсерьезныепроблемы.ЕсливосновевашегобизнесалежитСпланированнаяСистема,тоонуязвим,таккаквамнесправитьсясатакамиЖивойСистемы.

Второезаявлениесостоитвтом,чтовсевышесказанноетакжеотноситсякорганизациям.ЕсливашакомпанияпредставляетсобойСпланированнуюСистему—онаужемертва.ВтовремякакесливашакомпанияработаеткакЖиваяСистема,оназайметдоминирующуюпозициюнарынке.Интересното,что,когдадвеЖивыеСистемыпересекаются,онинеконфликтуют.Скорее,ониспециализируютсявразныхобластях,азатемсливаются,чтобыобразоватьединуюЖивуюСистему.КонкуренцияиконфликтобычноработаютнаблагоЖивымСистемам,дажееслиприэтомстрадаютееотдельныекомпоненты.

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

Глава6-Живыесистемы

89

Page 90: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

ЧтоизсебяпредставляютЖивыеСистемы

ЖиваяСистемасостоитизслабосвязанныхкомпонентов.Онанаходитсявнепространства(такимобразом,“распределена”)ивремени(такимобразом,«асинхронна”).Этозначит,чтомногиепроцессыпроисходятвнеожиданныхместах,внепредсказуемоевремя.Дляглавногоплановикаэтопредставляетсяопаснымхаосом.

ВСпланированнойСистеме,наоборот,времяиместоожидаемыхсобытийсловнопредписанысценарием.Основноевниманиеуделяется“управлениюиконтролю”,гдерешенияпринимаютсяцентрализованноисообщаясьсоструктурой.СпланированныеСистемывсегдаиерархичны,таккактакаяструктурапредставляетсобойнаиболееоптимальныйспособбыстрогораспространенияинформацииопринятыхрешенияхотверховкнизам.

СпланированнуюСистемумыстроим,аживая—развиваетсясама.Мояцель—понятьинаучить,какискусственносоздатьживуюсистему.Яизучаюфакторыразвития,моделиуходаидвижущиесилысаморазвивающейсясистемы.Насамомделеяговорюосозданииискусственнойжизнииискусственногоразума,новформе,непривычнойдляисследователейискусственногоинтеллекта.Ясчитаю,чтоотдельныекомпоненты—включаявасименя—немогутбыть“умными”,еслитольковузкомиповерхностномсмысле:ведьинтеллектэтосвойство,присущеетолькосистемам.

ЖивыеСистемыхарактеризуютсяотсутствиемцентральногопланированияилипринятиярешений.Посмотритенапроектпоразработкепрограммногообеспеченияиспросите“ктодизайнер?”Еслитаместьконкретныйдизайнер(аонпочтивсегдаесть)—будьтоотдельныйчеловекилиорганизация,тоэтоСпланированнаяСистема.ВЖивойСистеменетнидизайнеров,ниплановработы,никаких-либоопределенныхплановнабудущее,кромекак“выживатьиразвиваться”.

ЖиваяСистемабольшепохожанасвободныйрынокАдамаСмита,чемнапятилеткуСталина.Экономика,политика,психологиятакжеважны—наверное,дажеболееважны—впроцессеразвитияЖивойСистемы,какитехнологии.Свободныйрынокзависитоттакихключевыхположенийкак:четкиезаконы,стандарты,контрактыисправедливоеуправление.РаботаЖивойСистемызависитотэтихжеположений.

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

Глава6-Живыесистемы

90

Page 91: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

лицензиянаисходныйкодилиполитикавкладов.Справедливыйрынокпозволяетлюбомусоздаватьновоепредприятиеиконкурироватьсдругими.Длясозданияреальнойконкуренции(тоестьсвободноговыбораклиентов),клиентымогутзапрашиватьчеткиеконтракты,которыевпрограммномобеспеченииявляютсязадокументированныепрограммныеинтерфейсыприложенийипротоколы.

ДНКЖивыхСистемэто,посути,наборрегулируемыхконтрактов.Так,интернетразвиваетсяизнабораРабочихПредложений(RFCs(protocolscalledRequestsforComments)),которыерегулируютсяИнженернымСоветомИнтернета(InternetEngineeringTaskForce(IETF)).“Живыегорода”развиваютсяблагодаряуголовномуигражданскомуправу,установленныхстандартовотносительноводы,энергиииотходов,транспортаитакдалее.

Еслибывсестратегиибыличестными,необходимостивуправлении,регулированиинебылобыивовсе.ОднакокаждаяЖиваяСистемауязвимапередмошенничеством.Естьопределеннаягруппалюдей,которыеобманывают—систематическииливзависимостиотситуации.Зная,какработаетрынок,онивсегдабудутпытатьсяобернутьситуациювсвоюпользу,дажееслиэтоплохоскажетсядляостальных.Онибудутлгать,красть,обманывать,запугиватьипринуждатьит.д.

Непроявляясопротивленияподобномумошенничеству,рынокбудетстрадатьивсясистемараноилипоздноумрет.Централизованнаявласть—одинизспособовзащитыотмошенничества.Однакоионазначительноуязвима:мошенникимогутидажечастозахватываютвластьсами.ВЖивыхСистемахонимогутзахватитьтолькоуправляющих,чтоипроисходитпостоянно,насамомделе.

ПризахватемошенникамиуправляющихреальнойЖивойСистемы,обычнойреакциейявляетсяотстранение,повозможности.ВоткрытыхисходныхкодахсистемПОестьвозможностьсоздатьответвлениеипродолжитьработатьподлучшимуправлением.Вотпочемуответвлениепредоставляетсущественнуюсвободу,анеозначаетпоражение.Посколькуответвлениетакжеможетиспользоватьсякакспособзахвата,свободныелицензии(GPLидругие)лучшиедляЖивыхСистемвпланепрограммногообеспечения.

РостЖивыхСистем—процесспостоянныйиестественный.Этоихглавнаяотличительнаячерта—отсутствиебольшихзатратусилийнаихсоздание.Здесьже,однако,выбудетенаблюдатьнебольшиеизменения.Этоможетпоказатьсяскучнымибесперспективным.Темнеменее,этолучшийметодвыживания.ЖиваяСистемадолжнаделатьдвевещи.Во-первых,онадолжнарешатьрядвопросовотносительноприбыли.Во-вторых,современемонадолжнаменятьсяиадаптироваться,следуязаизменениями,происходящимивокружающемвмире.

Глава6-Живыесистемы

91

Page 92: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ЧтокасаетсяСпланированнойСистемы,топодстроитьееподменяющийсяокружающиймироченьсложно,частодаженевозможно.Ресурсыопределяютвласть.ПоэтомуСпланированныеСистемыактивноиагрессивнопротивятсяизменениям,отрицаютих,акогдабезизмененийуженеобойтись—ониперестаютсуществовать.

ЖиваяжеСистемаполучаеттольковыгодуотизменений.Длянеенеимеетзначения,когдазаниматьсяизучениемландшафта—“сегодня”или“завтра.Онаразвиваетсяблагодарянепрерывномуобучению.Чтобыдействительноуничтожитьее,выдолжнынанестиейбольшойущерб,чтотяжелосделать,еслиЖиваяСистемаужеуспешнаисильноразвита.

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

Итак,таккакЖивыеСистемыучатсявсемуивливаютсявновыесферыгораздобыстрееисвыгодойдлясебя,онибудутстремитьсяктому,чтобыпроцветатьидоминировать,уничтожаялюбыеконкурентныеСпланированныеСистемы.Онибыстрореагируют,перемещаяресурсывтеобласти,вкоторыхонинужнее.Ипосколькуимненужныникакиеуказаниядействий,онимогутизменятьсядолюбогоразмера.Отсутствиекоординированияозначаетничемнеограниченныймасштаб.

КомпонентыЖивойСистемы

ДавайтеобратимсякотдельнымкомпонентамЖивойСистемы.Помните,чтоЖиваяСистемапохожанарынок,гдекомпонентыконкурируютзапредоставлениеопределенныхуслуг.Компонентыживойсистемыобладаютопределеннымичертами,которыеотличаютихоткомпонентовспланированныхсистем.УкаждогокомпонентаЖивойСистемыестьопределеннаягруппавладельцыиинвесторы,изакаждымкомпонентомзакрепленаотдельнаягруппа(втовремякаквСпланированнойСистемеукаждогокомпонентоводниитежевладельцы).Компонентыобъединяютсявсетипоставщиковиклиентов,данные,именаиадресакоторыхвсегдадоступныдляудобстваклиента.Легкимспособомсмошенничатьявляетсяподменавысококачественногокомпонентанизкопробным.Поэтомууправляющемуорганувозможнопридетсяобеспечитьсоблюдениеидентификациипрофиляизащититьидентификационныеданные.

Глава6-Живыесистемы

92

Page 93: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

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

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

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

Компонентыабстрагированы,чтоозначает,чтоонимогутсамипосебеявлятьсяцелымисистемами.Например,веб-адресможетпредставлятьсобойотдельную,небольшуючастьпрограммногообеспечения(одинвеб-сервер)иликрупнуюинфраструктуру(интернет-бизнес).Всвоюочередь,толькоотвладельцевкаждойгруппызависит,какуюсистемуонибудутсоздавать—ЖивуюилиСпланированную.ЖиваяСистемасможетблагополучнопринятьвсебякомпонентыСпланированнойСистемы.Обратныйпроцесс,однако,невозможен.

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

Глава6-Живыесистемы

93

Page 94: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Насамомделе,собраниясихповесткамидняипротоколамипредставляютсобойолицетворениеобщегоизменяющегосясостояния,откоторогозависитСпланированнаяСистема.СпланированныеСистемынемогутфункционироватьбезсистематическогопредварительногосоглашения.ПрипараллельномпроектированииПОмыиспользуем“блокировки”длядостиженияподобногорезультата.Доказано,чтосистемаПО,использующаяблокировкидлятого,чтобыподелитьсясостояниемкомпонентов,небудетразвиваться.ВыможетепопытатьсясоздатьраспределенноепрограммноеобеспечениенаподобиеСпланированноеСистемы:поначалувсеработаетхорошо,нопочтииливовсенерастет.ВтовремякакхотьзапускЖивойСистемыизанимаетнемногобольшевремени,еепоследующийростбезграничен.

Вконечномсчете,компонентыявляются“ленивыми”иситуативно-обусловленными.Ониработаюттолькотогда,когдаестьзадачи,требующиерешения,ирастутиразвиваютсятолькотогда,когдадляэтогоестьвсеновые,выгодныевозможности.Этоозначает,чтокомпонентымогутбытьпростымииминималистичными.Крометого,онимогутрешить“проблемуландшафта”гораздоболееточно,безлишнихпрепятствийипредрассудков.ВСпланированнойСистеме,наоборот,компонентысоздаютсязаранее,исходяизпрогнозированиябудущихпроблемили,влучшемслучае,опытапрошлых.

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

ПротоколыЖивойСистемы

МеждукомпонентамиЖивойСистемысуществуютопределенныесвязи.Каждаясвязьпредставляетсобойкомбинациюизпотокаинформации,знанийилиобращений,вобоихнаправлениях.Лучшимспособомдлямоделированияданныхотношенийявляютсядискретныесобытияили“сообщения”,которыенесутвсебеопределенныйнаборсвязей,взаимоотношений,которыймыиназываем“протоколами”.ВестественныхЖивыхСистемахмытакжеможемнаблюдатьсообщенияипротоколы.Клетки,например,поддерживаютсвязьмеждусобойпосредствомхимическихсообщений.Мы,люди,общаемсяспомощьюнаборапротоколов,лежащихвосновенашейречи.Например,иерархии,вкоторыхмужчинызанимаютдоминирующееположение,являютсяхарактернойособенностьючеловеческогообщества,свидетельствуяотом,чтопротоколыуправленияиконтроля,накоторыхэтииерархии

Глава6-Живыесистемы

94

Page 95: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

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

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

Мывидимтакжепротоколы“одинкодному”,гдедвакомпонентаобмениваютсязнаниями,заданиями,запросамиитакдалее.Такиепротоколыболееофициальныеивидеалеполностьюасинхронны.Менееофициальныепротоколыформируютсядольше,создавая,такимобразом,всеобщую“задержку”.Еслия,например,готовлю,пиццуиядолженузнатьпрокаждыйингредиент,естественно,этозайметбольшевремени.“Вылюбитегрибы?”,“какнасчетчеснока?”,“Хорошо,какойсортсыравыпредпочитаете?”.

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

Длясозданияэффективныхасинхронныхсистемнамнужныочередиистратегическоепланированиеочередности.Видеале,мывсегдасталкиваемсясочередями,когдаожидаемсообщенияистараемсякакможноскорееперенаправитьихполучателю,вцеляхизбежаниязадержек.Намнеобходимыстратегиидляработысполнымиочередями(пространствонебесконечно):можнопростоудалитьстарыесообщенияилиприостановитьотправкусообщений(толькоэтоработаетдлядиалогов“одинкодному”,анедля“одинкомногим”).Намможетпонадобитсяочередивходящихсообщений,одназапоток,испособностьждатьсообщениянаэтойочереди.

Протоколы—неотъемлемаячастьЖивойСистемы.Онивыполняютофициальныеконтракты.Еслияспрашиваю“Вылюбитечеснок?”,вкачествеответаяожидаюлибода,либонет.Разговоропогодевданномслучаебудетнарушениемконтракта.КогдамыразвиваемнашиЖивыеСистемы,мыдолжнызафиксироватьпротоколы,чтобыизучитьегоизаверить.Ичемпрощеичетчеонбудет,темлучше.Сложные,неоднозначныепротоколытяжелыкакдляизучения,такидляреализациииневписываютсявконцепциюсвободногорынка.

Глава6-Живыесистемы

95

Page 96: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

НекоторыеЖивыеСистемыполагаютсянадовериеииндентификационныеномера,инесмотрятнато,заверенликонтракт.Этодопустимо,нонаоченькороткийсрок,особенноприобменезнаниями,ведьонитожеуязвимыпередмошенниками.Вкачествеальтернативыможнообеспечитьпроцессподтверждениякаждогоконтрактаспомощьюмета-контрактов.Такаяпрактикачастоявляетсядажеболеепродуктивнойдляторговли.Любойтаксистхороший,покаонподвозитнаспоправильномуадресуинезапрашиваетслишкомвысокуюцену.Однакомыходимполучатьновостиизпроверенныхисточников.

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

Примеризпрактики:библиотекаZeroMQисообщество

ZeroMQсообщество—этоЖиваяСистемалюдей,котораястроитЖивуюСистемупрограммногообеспечения(подборкапрограммногообеспеченияподтемженазванием).ХотяяизначальноразрабатывалZeroMQсообществосбольшинствомсвойствЖивойСистемы,онавышлатольков2012,отказавшисьотуслугсвоихглавныхпланировщиков.

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

ПроектыZeroMQсвязанывцепочкипоставокофициальнымиотношенияминаосновеAPIиwire-протоколами.НетолькооформлениеэтихAPIипротоколов,ноиобеспечениеконтроляихэффективностизанимаеточеньмноговремени.Насамомделе,мыобычнонедокументируемвнутренниекомпоненты,атольковнешниеAPI.

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

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

Глава6-Живыесистемы

96

Page 97: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

лицензиямиявляютсяLGPLv3илиMPLv2,гарантирующие,чтоответвлениявсегдазащищены(разработкимогутсовершатьсявобоихнаправлениях).

УправляющейгруппойвZeroMQсообществеявляетсягруппа,возглавляемаяiMatix,фирмой,котораяразработалапервоеПО.Особоуправлять,впринципе,нетнеобходимости,заисключениемтого,чтобыпрекратитьзлоупотреблениеименем“ZeroMQ”.Четкогодокументальногооформленияпротоколовдостаточно,чтобыклиентымоглипроверятьсвоихпоставщиков.

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

ПолнаятрансформацияZeroMQвЖивуюСистемуоказаласьсложнымпроцессом,посколькупервоначальнонебылоникакихшансовнауспех.ОсновнаячастьпроектовбесплатногоПОвсеещезависитоттщательногопланирования.Нарушениестандартныхпроцедурказалосьоченьстранным,еслинебезумным.Потеряглавныхвкладчиков—которыепредоставлялитеполномочия,накоторыхосновывалосьцентральноепланирование,—казалась,вперспективе,катастрофой.

ОднакоZeroMQбыстрымитемпамирасшириласьвпространствеипроцветало.Мыопроверглитеориюотом,чтоцентрализованноепланированиеоченьважнодлякачества.Насамомделе,мывыяснили,чтобезцентрализованногопланированияпрограммноеобеспечениеулучшилосьпокачествуиточности.ДоэтогоZeroMQбылакрайненестабильной,экспериментальнойинеотвечалапотребностямпользователей,онасталадостаточностабильной,надежнойиблизкойктому,чегохотятпользователи.

СегодняZeroMQявляетсяпримеромтого,какдолжнаправильноработатьЖиваяСистема.Онапредоставляетбольшуюценностькакхранилищеданных,таккакпредпринималисьмногочисленныепопыткизаменитьее,какпредыдущимиглавнымипланировщиками,такидругимикомандами.Примечательно,чтокаждаяСпланированнаяСистема,котораяпретендоваланато,чтобыбыть“лучше,чемZeroMQ”потерпелакрах,тогдакаккаждаяЖиваяСистема,котораяначиналаконкурироватьсZeroMQ,вконцеконцовстановиласьеечастью.

ТрансформациявЖивуюСистему

МожнолипревратитьСпланированнуюСистемувЖивую?Предположим,чтоунасестьтехническоеправо(соглашениеотдостаточногоколичестваучастниковилизаконноеправо—наличиелицензии);каковытогдапрактическиетребования?

Глава6-Живыесистемы

97

Page 98: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

Самымсложнымбудетполучитьправильныйразмеркомпонентов.Этоозначает,чтопридетсяотбрасыватьвсторонуужесуществующиекомпонентыисоздаватьновые.Этоможетобернутьсякатастрофой,еслисделатьподобноесовсемикомпонентамисразу.Поэтому,прибольшемколичествекомпонентов,выдолжныначатьводнойобласти,выполнитьперепроектированиеипотомужеразвиватьсформировавшуюсяврезультатекультуру.

Размеркомпонентовобычнозависитотлюдей,такчтоподходящийэтотакой“скоторыммоглибыработатьнескольколюдей”.МасштабЖивойСистемысвязанстем,чтотудадобавляетсявсебольшекомпонентов,которыемогутиспользоватьизамещатьдругдругакакугодно,безувеличениясвоихразмеров.Компонентслишкоммаленький,когдаоннеможетсампосебеобеспечитьчто-иликого-либо,ислишкомбольшой,когдаоннеможетсфокусироватьсяначем-тоодном.

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

ПонесколькимпричинамянастоятельнорекомендуютакуюобщуюлицензиюкакLGPL(моятеория:есливыпользуетесьслабенькойлицензиейкак,например,ApacheилиBSD,увасточнонеполучитсясоздатьЖивуюСистему).

РанеезапускподобнойЖивойСистемыосложнялсятем,чтосамоорганизующиесяПОэкосистемыненаходилинадлежащегоотражениявдокументах,даивообщеплохопринимались.Намнехваталоэмпирическихданных,демонстрирующих,чтотакиепроцессы,какC4.1могутработать,неговоряужеотом,чтомогутработатьтакхорошо.Насколькоязнаю,тотконтрактбылпервымконтрактомвПОдляЖивыхСистем.

ЭкономикаЖивыхСистем

Какжезарабатыватьденьгинасвободномпрограммномобеспечении?Мнечастозадаютэтотвопрос.Явсегдадаюразныйответ,взависимостиоттого,скемяимеюдело—сотдельнымчеловеком,небольшойфирмой,крупнойфирмой.

КлючомкпониманиюЖивыхСистемявляетсято,чтоони,вобщем-то,ипредставляютсобойэкономику.Ниодинкомпонентненаходитсявсистемепростотак.Однаковыбормеждуэгоизмомиальтруизмом—ложнаядилемма.ВосновеЖивойСистемылежитито,идругое.Этобазоваятеорияэкономики:будучиэгоистамивспециализациииторговле,мысоздаемобщееблагополучие.Этосуперспособностьчеловека:масштабнаяспециализацияиторговлямеждуотдельнымилюдьми,семьями,поколениями,деревнями,городамиицелымирегионами.

Глава6-Живыесистемы

98

Page 99: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ЖиваяСистемапринадлежиткаждомуееучастнику,поэтомуееценностьгораздосложнееизмерить,втовремякакСпланированнаяСистема,которойвладеютнескольколюдейиз“верхов”,представляетсобойопределеннуювидимуюценностькакдлясвоихвладельцев,такидлястороннихнаблюдателей.ОднакообщаяценностьЖивойСистемывсегдабудетпревосходитьлюбуюконкурирующуюейСпланированнуюСистему.ЖиваяСистемаможетприноситьневероятнуюприбыль,котораяделитсямеждувсемиееучастниками.

Вотипервыйответ:ЖиваяСистемаможетуничтожитьконкурирующиеСпланированныеСистемыитемсамымприсвоитьчастьскрытыхпреждеценностей.Мынаблюдаемподобныевещивреальнойжизни:когдасвободныерыночныеэкономикипревосходятплановыеэкономики,чтоприводиткоттокуквалифицированныхработниковизпоследнейвпользупервой.

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

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

Заключение

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

КомпонентыЖивойСистемывзаимодействуютасинхронно,рассылаясообщенияповсейсистеме,поразличнымсхемам.Этипотокисообщенийвформепротоколовявляютсяобязательными.Чемточнеепротокол,темлегчеклиентамбудетвыбратьпоставщиков,темэффективнейрынок.

Глава6-Живыесистемы

99

Page 100: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

УЖивойСистемынетглавноговладельца,которыйбыосуществлялконтроль,однако,таммогутвыбиратьсявластидляуправления(определенияиобеспеченияисполнения)контрактами.Унеенетниоднойточкиотказа.Вместотого,чтобывосприниматьнеполадки,неудачикакчто-тоэкстраординарноеилито,чегоследуетизбегать,ЖиваяСистемаучитсянаних.Неисправныйкомпонентзаменяетсянаисправный.

ЖивыеСистемыразвиваютсяпутемобучения,соединяясьвцепипоставок,которыесвязываюткомпонентысвнешнейсредой,окружающиммиром.МыможемизмеритьэффективностьЖивойСистемы,посмотревнапериодожиданиясмоментапоступлениявсистемупроблемыидоееразрешения.ВСпланированныхСистемахпериодыожиданиямогутдлитьсягодами,вхорошоадаптирующихсяЖивыхСистемах—несколькочасов.

Такимобразом,будучирациональноорганизованными,ЖивыеСистемыточнооцениваютстепеньсложностипроблемыиобъемзатратнанеерешение.ВотличиеотСпланированныхСистем,ихспособырешенияпроблемоснованынареальныхданных,аненапредположениях,догадкахиустаревшихданных,чтопозволяетимработатьточнее,быстрееидешевлепосравнениюсоСпланированнымиСистемами.

ЧтобысоздатькрупномасштабнуюЖивуюСистемувпрограммномобеспечении,создайтетакуюжесистемуизлюдей.Онибудутсотрудничать,развиваться,правильнофункционироватьитемсамымдоминироватьналюбомрынке.ВтовремякакконкурирующиеСпланированныеСистемыбудуттерпетьпоражение,разрушаясь,функционируяпоотдельности,конкурирующиеЖивыеСистемыбудутстремитьсяктому,чтобыспециализироватьсявразличныхсферах,авследствиесливатьсяводнубольшуюединуюЖивуюСистему.

Глава6-Живыесистемы

100

Page 101: Social Architecture [RU] - Ibragimov Ruslan · 2020-06-01 · даже самый умный человек внутри группы». Он заметил, что коллективный

ПослесловиеЭтакнигарассказываетдлиннуюисторию,котораяначалась,когдаяпрочиталразмышленияСтоллманаонаписанииегопервогосвободногопрограммногообеспечения.В2005годумыстроилионлайновыесообществасознательноиагрессивновполитическихцелях.Тогдамысистематизировалитеориюиприменялиеесноваиснова.В2007годуяиспользовалэтизнаниядлясозданиябольшогосообществадляплатформыWikidot.com,вкоторуюявложилкапитал,ибылгенеральнымдиректором.В2009годуяиспользовалэтизнаниякачествеосновыдлясообществаZeroMQ,ик2011годуполностьюсжегстарыенеуклюжиепаттерныизаменилихмодернизированнымисовременнымитехниками.

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

Послесловие

101