Чем дальше в лес, тем глубжее осознаётся мощь некоторых средств координирования человеческих усилий.
Например, такая штука как CVS (Concurrent Versions System) позволяет нескольким людям одновременно править разные части одного и того же файла. При этом предполагается, что эти части независимы. В программировании этим никого уже не удивишь. Но интересно наблюдать двух человек, с пыхтением исправляющих одну и ту же статью за несколько часов до дедлайна. Один вставляет картинки, другой - сноски и ссылки на литературу.
Пока эта система заточена под исправление текстов. Однако можно представить себе аналог CVS будущего: фотограф ретуширует картинку, а редактор её одновременно вырезает под размер газетной полосы :) Или аранжировщик добавляет в партитуру новый солирующий голос, а его студент пока возится с ритм-секцией, расставляет барабаны и тарелки.
Например, такая штука как CVS (Concurrent Versions System) позволяет нескольким людям одновременно править разные части одного и того же файла. При этом предполагается, что эти части независимы. В программировании этим никого уже не удивишь. Но интересно наблюдать двух человек, с пыхтением исправляющих одну и ту же статью за несколько часов до дедлайна. Один вставляет картинки, другой - сноски и ссылки на литературу.
Пока эта система заточена под исправление текстов. Однако можно представить себе аналог CVS будущего: фотограф ретуширует картинку, а редактор её одновременно вырезает под размер газетной полосы :) Или аранжировщик добавляет в партитуру новый солирующий голос, а его студент пока возится с ритм-секцией, расставляет барабаны и тарелки.
no subject
Date: 2005-02-08 10:42 am (UTC)Думаю, что в недалёком будущем любой файл будет сопровождаться историей его изменения в некотором стандартном формате - это позволит делать "бесконечное Undo" даже после записи файла. Пример: работа в издательских системах. Фотограф откадрировал фотографию и наложил на неё некоторую последовательность фильтров. А редактору она не понравилась - взял да и отмотал назад, по-другому откадрировал, наложил свои фильтры. Да мало ли...
Используя такие "истории изменения" можно сделать ещё более надёжную и унифицированную CVS, которая будет свободна от необходимости угадывать.
no subject
Date: 2005-02-08 11:13 pm (UTC)ГЫ-ГЫ-ГЫ! :)
[падает со стула, бьётся в рыданиях]
не рыдай :)
Date: 2005-02-09 03:16 am (UTC)Re: не рыдай :)
Date: 2005-02-09 05:09 am (UTC)Мне глубоко безразлично (в разумных пределах) с какой скоростью он этот дифф делает.
У меня всего пять метров исходников, самый большой восемдесят кил.
А вот когда он вместо нормального замёрдживания начинает рздирать методы на половине и перемешивать как попало... это мне не нравится. Совсем.
И делает он так достаточно часто. Так что править вдвоём один и тот же исходник таки не рекомендуется :)
ЗЫ не про diff, а про cvs. Если кто-то наредактировал что-то, а другой тот же файл переименовал.
Угадай, что получится :)
ЗЗЫ cvs, таки да, рулит. Не смотря на.
no subject
Date: 2005-02-09 06:24 am (UTC)То, что ты описал (про раздирание методов) - является именно результатом употребления diff'а. Мне кажется, этот эффект уйдёт, когда редактор будет сопровождать файл историей изменения, таким образом делая diff ненужной примочкой.
Хотя проблему можно решить и иначе - наоборот, наворотив diff - встроив в него парзеры всех известных языков. Но вот надо ли? :)
no subject
Date: 2005-02-09 06:35 am (UTC)А то, как с той секретаршей, которая печатала две тысячи триста знаков в минуту :)
Сопровождение файла историей -- дело полезное. Собственно, CVS этим самым и занимается :) Хранит историю изменений. Только тогда либо придётся вводить какую-то неплоскую структуру файлов в файловой системе, или новые сложные форматы (помнишь виселицу?) для просто записываемых нынче данных. И специальный парзер в том же CVSе, который будет уметь разбираться со всем этим.
мета-история :)
Date: 2005-02-09 07:04 am (UTC)Виселицу помню, как же :) Но минимум человек просто нужно на ней вешать, а то не добиться прогресса. Принцип Оккама тоже иногда приходится нарушать по той же причине :)
Думаю, что проблема "подшивания истории" решаема. В существующем Макинтоше файлы по сути - двойные (собственно, содержание и ресурсы). NB: Это не призыв переходить к неплоским файлам, просто возможность реализовать необходимый нам механизм в рамках существующей системы.
Но я бы предложил сопровождать один файл другим, плоским файлом. Примерно как видео-фильм сопровождается файлом субтитров. Дёшево и удобно.
Ведь история изменения естественно разбивается на линейную последовательность событий. Вот эти события мы и запишем по порядку. Так, чтобы их можно было скормить породившему его редактору с целью применения. Фотошопу скормим последовательность фильтров с параметрами. Текстовому редактору - последовательность изменений в тексте. Wave-редактору - последовательность wave-преобразований, и так далее.
Главное - чтобы редактор сам умел прикладывать порождённые собой "патчи". Всё, что остаётся реализовать на уровне CVS - это некий weakly-restricted мета-формат событий "обобщённого вида", в рамках которого события будут описываться уже с точки зрения надобности каждому специфическому пакету. CVS будет парзить этот формат, а дальше делегировать патчи пакетам, которые в состоянии понять суть содержимого.
Re: мета-история :)
Date: 2005-02-09 07:14 am (UTC)Правда, придётся на машине с CVS иметь ещё по экзепляру каждого используемого в проекте софта.
Это может оказаться неудобным. В основном по экономическим соображениям :( %)
И по соображениям переносимости.
Подшивать метаданные умеет не только мак.
В NTFS тоже есть дополнительные data streams.
Но переносимость всего этого пока хромает.
Re: мета-история :)
Date: 2005-02-09 08:21 am (UTC)Да. Или его "слепой" (скриптовой) компоненты.
Но переносимость всего этого пока хромает.
Именно поэтому я и предлагаю файл сопровождения в простом текстовом формате. Можно на основе XML, чтобы, если и придётся городить, то только схему.