При разработке программ мы обычно храним код в системе контроля версий (например svn). Изменяется код, изменяется интерфейс, и конечно изменяется документация. Было бы удобно хранить описания или рабочие записки в виде текстовых файлов в том же репозитории, что и код. В таком случае мы всегда сможем иметь документацию, относящуюся к разным веткам и версиям нашего проекта. Именно это и было поводом написать Bulldoc.
Многие программы и системы имеют на своих сайтах актуальную документацию, однако ее нельзя скачать к себе на локальный компьютер в сколь либо удобном виде. Сюда же относятся и wiki-системы, которые удобно быстро поставить, но неудобно архивировать или раздавать в виде скачиваемого файла. Желание дать возможность пользователям скачивать документацию в удобном виде — статичном многостраничном html, html-все-в-одном файле, chm, а также дать возможность оставлять комментарии было вторым поводом написать Bulldoc.
Многие программисты ведут блоги. В блогах мы пишем много разного — от коротких сообщений, вроде «Как хочется пива» до статей в нескольких частях с прологом и эпилогом. Стараемся поддерживать рубрикацию наших записей с помощью тегов. Блог хорош тем, что туда можно выложить интересную мысль, которая еще не оформилась в виде полноценной статьи. Однако часто хочется объединить несколько постов в один, когда мысль оформится. Страшно подумать, но когда-нибудь из нашего блога могла бы получиться самая настоящая книжка. Эта мечта была третьим поводом написать Bulldoc
Как обычно, каждое из пожеланий уже где-то реализовано. Но нет всего вместе или это не очень удобно. Так, например, держать документацию в файлах позволяет Microsoft HTML Help Compiler. Из файлов документации мы можем собрать chm-файл для нужной нам ветки или версии программы, мы можем положить этот файл на сайт в раздел "Скачать". Но мы не можем вставить туда автоматическую подсветку синтаксиса, мы не можем положить эти файлы на сайт в виде html без active-x компонента. Мы не сможем добавить пользовательские комментарии. Формат Docbook тоже близок к желаемому, но XSLT трансформации сложны, подсветка синтаксиса — хоть и решаемая, но проблема.
Рассказав о мотивации, приступим к тому, что получилось в реализации, и упомянем то, что пока не сделано, но планируется. Красным цветом отметим то, что еще не доделано.
Имеется возможность выбрать кодировку для заголовков html страниц и язык для системных сообщений и служебных пунктов меню (поддерживаются языки-кодировки: русский-windows1251, русский-utf8 и английский)