Web-наблюдатель. Как разрабатывался сервис

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


    Все началось с митингов, которые были вызваны результатами выборов в Думу. Я (Алексей Поимцев), а также еще несколько ребят — Настя Дёмина ademina, Арсен Казибеков ArKaz и Оля Суворова за пару часов создали страничку helpwall.info, раскрутили ее через социальные сети, собрали волонтеров, которые были готовы помогать попавшим в беду митингующим, но к счастью наши труды оказались невостребованными — митинги прошли мирно и без эксцессов. Но останавливаться на достигнутом не хотелось и очень кстати на глаза попался пост Ильи Сегаловича iseg, в котором среди различных идей я уловил идею создания электронного дневника наблюдателя на выборах. Забросив идею в ленту в Facebook я стал ждать фидбэка от френдов и ребята достаточно быстро откликнулись. Первыми в проект включились Арсен Казибеков, Тимофей Цветков 2kan, Дима Валетин и Илья Обшадко, чуть позже — Сергей Небольсин, Настя Дёмина, Таня Мисютина, Леша Ефимов, Сергей Ерошенков, Костя Баев, Коля Сескин, Антон Бондарев и Леша Трофименко. Также неоценимую помощь оказали Андрей Бузин и Гриша Мелконьянц из Голоса.

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

    — сбор данных о нарушениях
    — подача жалоб + предоставление данных юристам
    — отслеживание статуса судебных преследований нарушителей



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

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



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

    В день выборов Арсен Казибеков, Настя Дёмина, Костя Баев и Илья Сегалович работали наблюдателями на выборах, а я, Тимофей Цветков, Сергей Небольсин, Леша Ефимов, Антон Бондарев, Леша Трофименко и Коля Сескин обеспечивали работу приложения на сервере и на ходу дописывали недостающие куски кода. Разошлись мы в 4 утра дико уставшие.

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

    Вы можете сами ознакомиться со статистикой и итоговыми протоколами.

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

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

    А вот кто участвовал в разработке

    Координация проекта — Алексей Поимцев (Двигатель Прогресса) и Илья Сегалович (Яндекс)
    ServerSide — Тимофей Цветков (Evil Martians), Сергей Небольсин(Prophotos), Алексей Трофименко (Eviterra), Николай Сескин (Evrone)
    Frontend — Константин Баев, Сергей Ерошенков
    Дизайн, UI — Татьяна Мисютина(Evil Martians), Антон Бондарев(Evrone)
    Mobile — Илья Обшадко (XMP soft), Дмитрий Валетин (R Style), Алексей Ефимов (Яндекс)
    PR — Анастасия Дёмина (Digital October), Арсен Казибеков (Smart Wall и Krona Mobile)

    Отдельное спасибо всем кто принимал участие в тестировании — Евгений Данилов aradan и другие эксперты.

    Ну и немного ссылок по теме:
    Сайт Наблюдателя — webnabludatel.org
    Статья в Новой Газете — www.novayagazeta.ru/news/54190.html
    Статья в РИА Новости — www.ria.ru/vybor2012_hod_vyborov/20120214/565765738.html
    Статья в Digit — www.digit.ru/technology/20120214/389252760.html
    Статья в Financial Times — blogs.ft.com/beyond-brics/2012/03/02/russia-apping-the-elections
    Интервью Алексея Поимцева и Ильи Сегалович на «Дожде» — tvrain.ru/teleshow/govorite_s_toney_samsonovoy/sozdateli_veb_nablyudatelya_o_svoem_proekte-180292
    Алена Попова и Алексей Поимцев о приложении — alenapopova.ru/egov/webnabludatel-org-ili-elektronnyj-dnevnik-nablyudatelya.html
    Презентация Алексея на конференции Мобифест 2012 — www.slideshare.net/alexeypoimtsev/mobi-fest-2012-presentation
    Обсуждение проекта в ror2ru сообществе — groups.google.com/forum/?fromgroups#!topic/ror2ru/35t9exGbvW0

    Если у вас есть вопросы — спрашивайте и я с удовольствием постараюсь на них ответить.

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

    UPD 1: Забыл упомянуть, что в связи с большим количеством моделей Android-телефонов у нас отсутствовала возможность протестировать приложение на всех устройствах. Мы заметили, что некоторые устройства отправляли некорректные данные — например Тимофей Цветков заметил, что некоторые аппараты отправляли сообщения со статусом в далеком будущем и написал rake task для исправления этого, но также не исключены другие погрешности.

    UPD 2: «Веб-наблюдатель» выдвинут на звание Лучшего технологического проекта на благо общества в рамках Deutsche Welle Blog Awards. Если вам нравится проект — вы можете проголосовать за него тут thebobs.com/russian/category/2012/best-use-of-technology-for-social-good-2012

    UPD 3: При разработке мы использовали следующие инструменты
    — сервер — Ubuntu 10.4 на AWS
    — БД — PostgreSQL
    — сервер приложений — Ruby on Rails 3.2.1 + Unicorn + Nginx
    — IDE — RubyMine, Xcode, Eclipse
    — Операционные системы — преимущественно OSX Lion на 15" MBP :)))
    — Мониторинг — ScoutApp + NewRelic + AirBrake
    — Командная работа (таски + обсуждения) — BaseCamp
    — Исходный код — github
    — Задачи разработчикам PivotalTracker (мало) + Github Issues + BaseCamp + Skype + email + телефон + личное общение
    — Количество выпитого кофе — при подсчете выскочил эксцепшн, полностью понять смысл не можем, но что-то о том, что слишком много :)
    Share post

    Similar posts

    Comments 48

      +16
      Знаю, что на хабре за политоту банят, но лично я вам очень благодарен за ваш великий труд.
      Вы сделали больше, чем бóльшая часть страны. Половина даже проголосовать не соизволили.
        +4
        Спасибо :)
          +1
          Очень печально, что пост про не менее полезный и качественный проект 4-marta-2012.org был удален с хабра, а автор забанен за «Пост на политическую тему». Какая-то странная избирательная политика у администрации хабра…
            0
            К сожалению я не видел поста и не могу судить. Этот пост я пытался написать как историю разработки проекта, а никоим образом не призыв идти голосовать за ту или иную партию или против того самого кандидата, за которого никто из нашей команды не голосовал :) Возможно — у администрации были свои предпосылки.
            • UFO just landed and posted this here
            +4
            Спасибо вам за «шулерометр».
              +3
              Пожалуйста :) рады вас радовать :) Надеюсь новый проект, над которым сейчас идет работа также окажется полезным обществу :)
              0
              Приложения за сколько по времени написали?
                +2
                Ориентировочно — 3-4 недели.
                0
                А чего команду тестированию не указали?
                  0
                  Тестировали все участники команды :) А вообще — использовали TestFlight для того, чтобы дать возможность потестировать еще и друзьям и партнерам.
                    0
                    Я в курсе ;)
                    Ибо принимал довольно активное участие в тестировании.
                    Считаю, что можно было и поблагодарить тех, кто кроме меня тестировал :)
                      0
                      Жень, только iOS тестировали 36 человек и разумеется всех не отследить, кто ставил, кто присылал отчеты и через кого эти отчеты приходили :) Не вопрос — укажу, что ты принимал участие в тестировании приложения :)
                        0
                        done
                          0
                          thanks
                    0
                    И как же он разрабатывался?
                      0
                      В большой спешке :) Что именно интересует — инструменты, процесс, фрэймворки-библиотеки, количество выпитого кофе и потраченных нервов?
                        0
                        Инструменты, процесс, фрэймворки-библиотеки, количество выпитого кофе тоже интересует.
                          +2
                          Постараюсь сегодня вечером обновить пост с этой информацией.
                      0
                      А что по судебным решениям по нарушениям, ведется какой-то мониторинг, статистика? А то после думских выборов Яблоко грозилось сделать портал с нарушениями и судебными решениями по ним — молчок. После президентских собрали нарушения, а движения по судам, что самое главное, как-то не видно.
                        0
                        Статистика есть на сайте. Собранные данные мы отправили в Слон, Гракон, Голос, Дождь, Навальному — они с ними работают. У нас в планах тоже было сделать трекинг по нарушениям, но убрали из скопа, так как ресурсов катастрофически не хватало.
                        +1
                        Основная функция приложения была не в том чтобы собрать материал по нарушениям, который потом можно было передать в суд. Мы понимали, что в суде мы у едросов ничего не выиграем. Мы хотели препятствовать нарушению именнов том месте где это преступление могло быть совершено. Это как замок на дверь поставить и не дать украсть, чем собирать отпечатки и видеодоказательства после кражи
                          +4
                          Я — Настя Дёмина, пресс-секретарь проекта. Хабр не любит политоту, поэтому публиковать результаты здесь не будем, но вы можете посмотреть отчет с аналитикой здесь — dl.dropbox.com/u/43931110/Results.pdf (PDF файл из моего личного Дропбокса). Там помимо статистики есть ссылка на фото протоколов, если кому нужно. Если есть какие-либо вопросы, можно задавать их еще и мне)
                            0
                            webnabludatel.org/user/1012

                            мне на 3 моих письма координатору проекта на info@webnabludatel.org
                            никто так и не ответил
                            других контактов на сайте нет

                            а между тем мой отчет на сайт выгружаться не захотел КАТЕГОРИЧЕСКИ
                            и кнопки «выгрузить все материалы повторно» на сайте просто нет
                            и рассказывается о том что якобы на моем участке «нарушений не было»… ага не было…
                              0
                              Сообщите мне ваш номер участка и регион, пожалуйста. Если хотите — можно на почту anastasia.demina@gmail.com.
                              Очевидно, что произошла какая-то ошибка: либо в приложении, либо с вашим интернет-соединением или устройством. Искать злой умысел здесь не стоит)
                            0
                            webnabludatel.org/user/1012

                            мне на 3 моих письма координатору проекта на info@webnabludatel.org
                            никто так и не ответил
                            других контактов на сайте нет

                            а между тем мой отчет на сайт выгружаться не захотел КАТЕГОРИЧЕСКИ
                            и кнопки «выгрузить все материалы повторно» на сайте просто нет
                            и рассказывается о том что якобы на моем участке «нарушений не было»… ага не было…
                              0
                              Сообщите мне ваш номер участка и регион, пожалуйста. Если хотите — можно на почту anastasia.demina@gmail.com.
                              Очевидно, что произошла какая-то ошибка: либо в приложении, либо с вашим интернет-соединением или устройством. Искать злой умысел здесь не стоит)
                                0
                                участок 707 — Челябинск

                                я злой умысел не ищу
                                интернет соединения могло ПРОСТО НЕ БЫТЬ
                                я просто пытаюсь добиться того чтобы в приложении появилась кнопка «выгрузить ВСЕ собранные данные заново»…

                                webnabludatel.reformal.ru/proj/?ia=266306

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

                                По поводу ответов на письма — мы старались ответить на как можно болшее число писем, но справиться с потоком писем, тестированием, доработкой приложения, общением с прессой и наблюдателями — очень тяжело. Рассчитываем на ваше понимание.
                                  0
                                  у меня был
                                  iphone 3gs jailbreak
                                  ios4.1 (не вижму пока смысла обновлять)

                                  коннект 3g был ОЧЕНЬ прерывистый кроме того я выключал аппарат чтобы батарейку зря не жрал…

                                    0
                                    Странно — ios мы протестировали на 3g 4.2.1 + iphone 4 5.0 и проблем не было. jailbreak-нутые телефоны мы не тестировали, не исключено что там могут быть свои проблемы. Приложение для телефона по зашитой в него логике отправляло данные на сервер с некоторой периодичностью (надо спросить ios-разработчика с какой частотой он ставил отправку данных в случае недоступности сервера) + серверное приложение принимало остатки отчетов до вечера 6 марта. Не исключаю вероятности того, что jailbreak мог как-то повлиять на отправляемые данные, надо уточнить.
                                      0
                                      вы меня вообще слышите??

                                      если бы в приложении была отдельная кнопка «отправить все данные скопом»
                                      или «запостить все нарушения в facebook как html отчет»

                                      все было бы гораздо проще
                                        0
                                        Мне кажется я уже писал о том, что у нас были ограничения по срокам и ресурсам. Даже если бы мы доработали iOS приложение с учетом предлагаемых вами фичеров, то не факт, что мы бы успели протолкнуть его в аппсторе. Да, вы можете конечно аппелировать к jailbreak-у, но поверьте — далеко не все его ставят. В нашей команде никто не делал jailbreak для своих iphone, все предпочитают устанавливать приложения стандартным путем. Кроме того — никто и не предполагал, что у вас и может быть у кого-то еще из наблюдателей возможна подобная проблема.
                                          0
                                          давайте про jailbreak вообще больше ничего говорить не будем… а то вы к этому аспекту цепляетесь непонятно зачем…

                                          я ставил приложение с appstore как и вы
                                          jailbreak телефон для вашего приложения НИЧЕМ не отличается от обычного телефона…

                                          возможно проблема в более старой версии iOS
                                          но приложение работало СТАБИЛЬНО и не вылетало… проблемы были именно с client-server взаимодействием

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

                                          какая проблема? проблема того что за МКАД интернета может не быть ;)?
                                          ну вроде как раз с этим вы пытались бороться…
                                          я вот смотрю в исходники серверной части
                                          github.com/webnabludatel/webnabludatel_server/blob/master/app/controllers/api/v1/media_items_controller.rb

                                          (возможно не туда смотрю, ну тогда поправьте)

                                          понимаю что сделано все было по уму

                                          я думаю что у МНОГИХ наблюдателей такая проблема была… просто далеко не все из них про эту проблему захотели рассказать

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

                                    0
                                    давайте я объясню
                                    если бы была кнопка «отправить весь отчет еще раз»
                                    все эти проблемы с «некорректный отчет»
                                    исчезли бы сами собой

                                    я понимаю что отчет с 0.5-1 часом iOS видео весил бы довольно много… но не настолько чтобы его нельзя было закачать
                                      0
                                      отчет отправлялся автоматически по факту появления доступа в интернет — пришли домой, подключились к wifi — он отправился. чем вас не устраивает такой вариант?

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

                                        тем что он не работает
                                        если это не так, покажите мне мой отчет на вашем сайте, вместо глумливой надписи «отчет не отправлялся»

                                        > кроме того — исходные коды были доступны изначально. их можно было изучать и коммитить любую дополнительную функциональность

                                        =)) про приложение я узнал за два дня до выборов
                                        как вы думаете
                                        у меня было два свободных дня чтобы выучить obj-c и начать слать pull request в проект в котором мантейнеры обо мне ничего не знают??
                                          0
                                          см. апдейты — в настоящий момент мы перевели сайт в статический режим. Если это настолько критично — мы можем «выцепить» всю присланные вами сообщения (отправлялся не отчет целиком, а произведенные изменения в чеклисте) и показать вам их, чтобы вы могли ознакомиться с тем, что именно ваш телефон отправлял на сервер. Разумеется нам бы не хотелось это делать просто так, чтобы не тратить свое и ваше время, поэтому давайте договоримся так — если вы согласны проанализировать почему с вашего телефона отправлялись некорректные сообщения на сервер, то всю необходимую информацию мы предоставим, также по мере возможности постараемся ответить на любые вопросы по коду. Если же вы не собираетесь погружаться в проблему, то зачем тогда весь этот спор?

                                          Еще раз хочу сказать — мы протестировали приложение на тех конфигурациях устройств, которые были нам доступны, но мы не всемогущи. Очевидно, что некоторые устройства (некоторые модели андроидных телефонов, возможно jailbreak-нутые iphone) отправляют данные на сервер некорректно по той или иной причине (мы не знаем почему — поскольку таких девайсов у нас нет). Если хотите изучить вопрос — исходные коды доступны и мы вам поможем, если нет — предлагаю принять как факт возможность некоторого расхождения в данных, передаваемых непротестированными устройствами и прекратить прения.
                                            0
                                            отлично давайте логи… мне правда интересно

                                            вам сказать мой device UUID??

                                            =) еще раз, к работе самого прилоежния на телефоне нет никаких притензий
                                            просто было очень обидно продержать телефон в wifi режиме с 4 и 5 числа
                                            и не получить в итоге на сайте надпись «сообщения не отправлялись»
                                              0
                                              Пришлите мне ваш UDID на почту пожалуйста (alec сабака alec-c4 точка ком) и мы посмотрим какие сообщениея приходили отвашего телефона.
                                                0
                                                отослал, дальше я думаю общаться надо в привате
                                  0
                                  В ночь перед выборами получил письмо, что можно скачивать софтинку для Андроида. Программа очень помогла — не столько ради чеклиста, я его и так наизусть знал, сколько ради справочника по законам. Спасибо вам, Граждане.
                                    0
                                    Вам спасибо за участие на выборах :)
                                    0
                                    По просьбам трудящихся разместил апдейты :)
                                      0
                                      Спасибо вас всем большое за проделанную работу от члена УИК с ПРГ!!! :)
                                      Очень помогло 4-го марта.
                                        0
                                        От РосВыборов тоже спасибо)
                                          0
                                          you're welcome :)

                                        Only users with full accounts can post comments. Log in, please.