2012-04-10

Антон Васильев о Shelr.tv, ненастоящих эмуляторах терминала и виме внутри емакса

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

А теперь представьте, что вам потребовалось продемонстрировать преимущества консольных приложений над графическими. Глупо записывать видеопоток о плюсах терминала, если для его просмотра понадобится плеер с графическим интерфейсом. Нужно записать символьный поток, и здесь нам на помощь приходит сервис Shelr.tv с одноимённым инструментом для создания шеллкастов. Интервью с автором проекта читайте в свежем номере «Краплёной колоды».


Представься, пожалуйста, и расскажи, чем занимаешься. По традиции спрошу и про твоё первое знакомство с open source.
Привет. Меня зовут Антон Васильев. И я программирую компьютеры. С open source впервые столкнулся около 10 лет назад, когда сосед по подъезду дал мне диск с дистрибутивом Fedora :)

Первая доза бесплатно :-)
У себя в блоге ты рекомендуешь GNU/Linux в качестве «правильной платформы» для разработки на Ruby и RoR, Vim и Emacs — в качестве редактора, git — как основную систему контроля версий. Какими ещё инструментами ты активно пользуешься во время работы?
gnome-terminal и /usr/bin/* :)

Вот актуальный top:
$ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn
343 git
150 cd
110 e (это alias для emacs-client)
41 cat
34 ls
34 bundle
33 shelr
32 rake
30 vi
25 tree
24 rm
23 sudo
21 gem
21 foreman
18 rspec
18 cp
16 echo
14 htop
12 dput
...

Как возникла идея записывать «кунг-фу» в терминале? Это попытка отделиться от жанра скринкастов или желание сделать тематический youtube для гиков?
Один из моих знакомых (Andrey "sshd" Petrenko) попросил меня помочь с простой задачкой: логгирование всех походов по ssh. Я поигрался с утилитой script и тут же родилась идея :)


Какой ты видишь аудиторию сервиса?
Я думаю, преимущественно это разработчики и администраторы Unix-подобных систем.

В каком виде shelr хранит записи консольных пассажей? Обязательно ли пользоваться shelr.tv, чтобы поделиться шеллкастом с приятелями?

Все достаточно просто. Каждая запись хранится в отдельной директории вида ~/.local/share/shelr/TIMESTAMP. Обычно там хранятся три файла:

  • typescript - непосредственный вывод с tty;
  • timing - информация для анимации;
  • meta - метаданные: размер терминала, заголовок, тэги и прочее.

Чтобы поделиться записью с приятелями, минуя shelr.tv, достаточно воспользоваться командой:
shelr dump last

Она создаст в текущей директории файл shelr-record.json, который можно отправить по почте или выложить на свой сервер. Проигрывается файл с помощью команды:
shelr play http://example.com/cool-record.json

В своём докладе на мартовской встрече MLUG ты упомянул о плачевном состоянии эмуляторов терминала на JS. Мол, у каждого свои недостатки, часть функций реализована с помощью хаков. С чем этом связано, на твой взгляд?
Я думаю, в первую очередь — с общей культурой разработчиков на JavaScript. Ситуация со временем меняется, и я очень надеюсь, что количество говнокода на JS будет падать :)
Ну и не так уж всё плохо на самом деле. За последний год их появилось несколько. Мой велосипед: vt.js, автор jslinux написал свой... (Фабрис Беллард помимо прочего и отец-основатель QEMU — справедливое примечание virens'а). Есть ещё несколько реализаций, но часть из них при ближайшем рассмотрении совсем не являются эмуляторами терминала :)

Звучит интригующе. Чем же они являются на самом деле?
Некоторые всего-лишь рендерят html, генерируемый сервером, некоторые никак не реагируют на ANSI Escape последовательности. Одним словом, дешёвые подделки :)

Если на чаши весов поставить ascii.io и shelr.tv, на чьей стороне будем наблюдать перевес?
Об этом лучше судить пользователям :) Я пока не нашёл на ascii чего-то такого, чего нет на shelr.tv. Идея установки через curl понравилась, но я обычно опасаюсь однострочников, которые просят пароль для sudo ;)

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

Помню раньше ты был апологетом использования vim. Теперь, насколько мне известно, перешёл на в лагерь емаксеров. Думаю, читателям любопытно, чем вызвана смена редактора. С какими трудностями довелось столкнуться? Не мучает ли ностальгия? :-)

Vim — замечательный редактор, и я продолжаю им пользоваться... просто сейчас мой vim написан на elisp и запускается в Emacs OS :) Мне всегда хотелось добавить к vim чего-нибудь своего, но никогда не было желания изучать vimscript. Emacs позволяет писать расширения на великом lisp-e и, с моей точки зрения, для разработчика расширений он предоставляет куда больше плюшек, чем vim. Хочу порекомендовать всем пользователям vim, которым не хватает мощи emacs, присмотреться к evil-mode — реализации vim внутри emacs :)

Спасибо за ответы. Жди наплыва ниндзя на shelr.tv :-)
Я хотел бы сказать спасибо людям которые помогали советами, поддержкой, плюсами, пакетированием и пулл реквестами:

  • Max Gonzih (pkgbuild для Arch Linux и советы);
  • Alexander Kolesen (ebuild для Gentoo);
  • Vasiliy Ermolovich (патчи и чистка кода);
  • Друзьям из MLUG за советы и идеи
  • Всем, кто твитил и рассказывал про сервис.


И сервис, и клиент распространяются по свободной лицензии (GPL, AGPL), и я буду рад видеть в нашей формирующейся команде новых участников!
Проект на гитхабе:
github.com/antono/shelr
github.com/antono/shelr.tv

Shelr.tv в твиттере:
twitter.com/shelr_tv

Успехов!
Спасибо!

8 комментариев: ответить

10.04.2012, 02:13   virens комментирует...

Интересный пост, спасибо Акулович.

Реквестирую больше подробностей об установке. Asciio намного лучше в этом, так как не тянет за собой руби. Процедура установки на asciio тоже не айс, так как просит sudo-шный пароль...

Но идея интересная.

10.04.2012, 03:09   Alex комментирует...

Сайт -- это очень хорошо.

А вот из-за переизобретения велосипеда с shelr миллионы учебных скриптов, собранных командами script/scriptreplay, окажутся за бортом. Бесценный, накопленный тысячелетиями опыт сисадминов разных эпох теперь просто не попадёт на сайт.

10.04.2012, 08:16   Unknown комментирует...

+alexei, покажите где лежат эти миллионы учебных скриптов и они окажутся на shelr.tv :) Никаких велосипедов нет, shelr использует script или ttyrec (на OSX) для записи и воспроизведения. Формат ttyrec переводится в формат typescript как более простой и удобный для обработки. Если нужно я сделаю опцию дампа shelr-record.js в typescript :)

10.04.2012, 13:53   virens комментирует...

Да, ещё:

1. автору shekr.tv хорошо бы улучшить сайт, в частности сделать что-то с установкой его программы (инструкции! ну и не ставить же руби ради этой поделки), как загрузить видео на сайт.
2. запись голоса - это ОЧЕНЬ было бы здорово.

И вообще, стоит добавить, что , автор jslinux написал свой... - этого автора зовут Фабрис Беллард, и это не абы кто, а автор QEMU. Он в общем Человек и Параход. Акулыч, я бы добавил это в пост сноской.

11.04.2012, 12:03   drakulavich комментирует...

@Sergey Avseyev
> Почему если видео, то сразу графический интерфейс? А как же framebuffer и mplayer вообще?
Это всё понятно. Но читать матрицу через framebuffer будет тяжеловато, а для mplayer как-никак нужны иксы.

@virens
> Asciio намного лучше в этом, так как не тянет за собой руби.
Есть такое дело. Зависимость, скажем прямо, увесистая :-)

@alexei
> Бесценный, накопленный тысячелетиями опыт сисадминов разных эпох теперь просто не попадёт на сайт.
Присоединяюсь к просьбе Антона. Покажите, где эти скрижали хранятся?

@virens
> этого автора зовут Фабрис Беллард, и это не абы кто, а автор QEMU. Он в общем Человек и Параход.
Спасибо за уточнение, Миша. Добавил в пост примечание.

> автору shekr.tv хорошо бы улучшить сайт, в частности сделать что-то с установкой его программы
Вроде всё на месте: shelr.tv/about

11.04.2012, 21:51   iv_vl комментирует...

@virens
> ну и не ставить же руби ради этой поделки
Исходя из этой точки зрения, весь софт в линуксе должен быть сишный или внезапно... питоновский. Хотя руби и в правду редкий гость на десктопах, разве такой уж он жирный?

12.04.2012, 10:47   Unknown комментирует...

Руби не такой уж и жирный :) Чесно, не понимаю экономии 20 метров на жестком диске :)

15.04.2012, 23:11   sshd комментирует...

не только ходить по ssh но и телнет =)

Отправить комментарий