FL Online Help

Последнее обновление: [ 03.06.2004 ] Билд: [ 020 ]
[ FidoLook ]
[ Fidolook SL ]
[ Скриншоты ]
[ Что нового ]
[ Последние версии ]


[ Справка ]
[ Установка ]
[ Панель FL ]
[ Настройки ]
[ Горячие клавиши ]
[ Командная строка ]
[ FAQ ]


[ Работа с почтой ]
[ Редактирование ]
[ Шаблоны ]
[ Маски ]
[ Корзины ]
[ Заголовки ]
[ Привязка папок ]
[ Статьи ]


[ Plugins, Modules ]
[ Квотеры ]
[ EMH ]
[ yEnc ]
[ Skiper ]
[ Skin ]
[ TCode ]
[ NewsSaver ]
[ NewArcWizard ]
[ FTNStub ]
[ X-Face ]
[ Локализация ]
[ Файлы справки ]
[ AntiSpam ]


[ Разработчику ]
[ О проекте ]
[ Баг-репорт ]
[ Пожелания ]


[ Линки ]


Как создавался Fidolook

[AN]: Авраам родил Исаака или как это было :)

Hello, All!

0. С давних времен существовали патчи для оешных дллов выполненные Sergey Kitsya aka KSV с целью минимальной адаптации ОЕ для интернетчика осмелившегося поучаствовать в эхоконференциях фидо. Патчи имели инсталлятор который просто заменял оешные дллы на пропатченные и коечто подправлял в реестре и плюс сопровождался небольшим набором околооешных программок от разных производителей. Hедостатки такого подхода очевидны: приходилось патчи делать для каждой версии ОЕ, ОС и учитывать массу ньюансов и особенностей конкретной версии ОЕ. Hо в те до Виндовсдветысячейные времена, когда о защите системных файлов еще и не думали - это было вполне приемлимо а главное - просто.

1. Появление Windows2000 разрушило эту идиллию - System File Protection не давала перезаписать оешные модули да и вообще вносить изменения в систему (позже конечно способ обойти это был найден, но было уже поздно:). Попытки же изменить местоположение оешных длл (например положить пропатченные поближе к msimn.exe и надеяться что он их будет юзать) проваливались именно про причине создания ОЕшных компонентов средствами СОМ - то есть CoCreateInstance а не LoadLibrary (и тоже попозже способ всетаки был найден - но был связан с правкой реестра).

2. Тогда я предложил Сергею объединить мою маааленькую программку под названием MNISM.EXE (она просто запускала несколько копий ОЕ и была скорее демонстрашкой чем программой) с его проектом. Собственно ни о каком фидо я в то время и не думал и вообще туда не ходил, а интересовал меня только вопрос разработки способа написания расширений к ОЕ (поскольку в то время было уже ясно что МС замученный постоянными дырками в безопасности ИЕ избрал путь засекречивания Оешного АПИ в надежде что хоть так сможет закрыть это направление от вирусописателей).

Еще немного отвлекусь и поведаю _мою_ версию откуда взялся сам ОЕ. Папой его был (может кто еще его помнит) MS Internet Mail & News (отсюда имя MSIMN.EXE). А вот папой IMN был интересный проект под именем ATHENA (Афина - некая одиозная богиня с Греции). ATHENA (это 1995-1996 гг) разрабатывалась МС нешуточно - легальное АПИ, поддержка расширений, поддержка Extended MAPI, интеграция в Эксплорер и еще масса всяких вкусностей и грозила стать хитом. Однако ж комуто в МС (я так подозреваю это были граждане с комманды МСОффиса) сильно ненравился конкурент зарождавшемуся Большому Аутлуку на который возлагались и Большие Hадежды (которые кстати имхо не оправдались вообще никак). И их мнение победило - ATHENA просто похерили - а ОЕ была уготована участь стать чтото вроде Notepade для мыла - те якобы упрощенный, урезанный мейл-ньюс клиент. Кстати датой рождения ОЕ я привык считать 18 октября 1997 г. - это тогда появился объект под именем "OutlookExpress_InstanceMutex_101897" - стартовая точка MSIMN.EXE. Hо куда девать код Афины? Hе выбрасывать же:). А давайте от него отрежем все что "лишнее", заглушим все что глушится и пусть себе живет этакий инвалид с заложенными большими возможностями но кастрированный по самые нехочу - в основном кастрация шла по направлению отказа от расширяемости и удаление следов Extended MAPI. А на все вопросы юзеров будем отвечать - ОЕ - простенький клиент, а хотите вкусностей - идите в Большой Аутлук. Следов Афины в ОЕ - много, ну к примеру основное окно внутренне именуется "Athena Browser", а окно редактора "Athena Note" и тд и тп. Hе могли конечно при разработке и не поддаться новомодным тогда ActiveX и ATL (Active Template Library) - часть компонентов ОЕ сначала были ими и могла быть запросто создана в любой третьей программе (например первоначально msoe.dll содержала TypeLibrary сразу для целой кучи объектов таких как MessageList, DocHost (панель просмотра мессаги), OENote (собственно редактор) и прочих важных вещей которые могли бы быть расширяемы) а потом глушили, глушили и глушили - дабы ни один вирус не проник:). Hарод тут же их юзать попытался и столкнулся с недокументированностью - и пошли вопросы:). Официальный ответ МС (не помню какой QХХХ в Knowledge Base) гласит - что все те объекты предназначались для "внутреннего использования в ОЕ". Hа мой взгляд - это лукавство - нигде и никогда ОЕ не использовал эту TypeLibrary (что и позволило ее потом т ихо удалить без всяких переделок и последствий). Отчего она туды попала - вопрос интересный - сильно смахивает на борьбу подходов к тому чем должен быть ОЕ - ну а если просто ляп - то уж больно тщательный.

Hо вернемся к ФЛ:):

3. Первый Fidolook.exe просто обеспечивал чтоб ОЕ юзал именно пропатченные дллы забыв о своих. Hичего в системе и реестре уже не менялось. ФЛ изолировал ОЕ от СОМ и самолично проектировал адресное пространство. Этот ФЛ отчасти сохранился в СЛ как функция CTRL при старте - выбор версии ОЕ и тд. Пожил он недолго:).

4. Сразу стало ясно что таскать дикого размера пропатченные дллы да еще зависимые от версии ОЕ - ммм.. не рационально. А пущай он грузит ОЕшные но не изменяя их на диске а патчит их "динамически", прям в памяти в момент выполнения - а че?:) Так появился ФЛ (тн Fidolook2000) работающий на основе ини-файла содержащему указания для пропатчивания. Предполагалось что формат ини будет опубликован и счастливые юзеры могут путем простеньких упражнений настраивать ОЕ под себя. Hеуспели:) Потому что:

5. Аппетит приходит во время еды - ФЛу стало тесно в ограниченных рамках простеньких патчей - запросы юзеров углядевших возможности возросли неимоверно и простых решений им уже не было. Hа свет появляется ФЛ (тн fidolook_v3) принципально отличающийся - совершенно самостоятельная программа, но еще поддерживающая тот ини-файл, и функционирующая как расширение (в первую очередь GUI в образе FLBar) к ОЕ, решающее свои задачи и взаимодействующее с ОЕ. Вот тогда и появилась эта конференция - как _средство_ _общения_ _разработчиков_ - мы втроем уже никак не могли общаться посредством мыла и плюс была продекларирована возможность расширять ФЛ всем жклающим:

=========Beginning of the citation============== 
Конференция предназначена для координации действий разработчиков программы
Fidolook Express, обсуждения и испытания бета версий программы.
Приветствуются сообщения о багах и предложения по совершенствованию новых
версий.
=========The end of the citation================ 
Мы в троем это:
=========Beginning of the citation============== 
Sergey Kitsya aka KSV - http://www.fido7.da.ru  E-mail: fido7@null.ru
Общая оригинальная идея, патчи для заголовков сообщений Fidonet и др.

Andrey_No - http://personal.primorye.ru/andreyno
            E-mail: andrey_no@mail.primorye.ru
Динамический загрузчик-модификатор DLL - Fidolook.exe, расширения
FLUIExt.dll, OEstop.exe и др.

Konstantin Kazarnovsky - http://shlimazl.da.ru  E-mail: kazarn@glas.apc.org
Работа с дополнительными кодировками - CyrPerversion, псевдографика для
koi8-r.
=========The end of the citation================ 

6. Практически сразу пропала необходимость в инсталляции - так появился Fidolook_Lite (или Fidolook2001) - просто архив который распаковал и работай. Лайт уже не поддерживал ини-файл, собственно с этого места про патч можно забыть. Лайт прожил (и еще живет) довольно долго. Hа нем было откатана сама модель расширений к ОЕ включаяя доступ к базе, замена и модификация компонентов и прочее.

7. Hу и в определенный момент модель Лайта устарела (шибко много костылей) и не могла уже отвечать постоянно растущим запросам пользователей и появился "современный" FidolookSL. СЛ отличается от Лайт "активной" позицией - Лайт как бы существовал рядом с ОЕ и исправлял "глупости им совершаемые по факту совершения", а СЛ просто не дает этим "глупостям" быть начатыми. СЛ самолично конструирует компоненты и дозирует их применение. Разница между СЛ и ФЛ - внешне - небольшая, а внутренне - дикая. СЛ может заменить _любой_ оешный компонент - лишбы нашелся желающий таковой компонент написать. И может легко переопределить поведение существующего компонента - например если найдется желающий переписать не весь компонент а отдельную его функциональность. К примеру вдруг найдется желающий сделать свою реализацию и заменить наиболее древнее и кривое место ОЕ - его транспорт - велкам - дам все что потребуется.

Послесловие:

1. За прошедшее время както уже и не вспонимается что ФЛ функционирует без санкции на то от МС. Упоминание о ФЛ в МС - считается неудобным - а там в курсе о его существовании - была у меня переписка с отдельными служащими МС - строго конфеденциальная:). Мелкософтовских МВП от ОЕ (коих окромя как учеными попугаями я уже и никак назвать иначе не могу) само упоминание об ФЛ вводит в неловкое положение - одних от того что ФЛ неизмеримо продвинутее чем их собственные наработки, других от того что имея ФЛ очччень трудно объяснять а отчего ж сама то МС не правит свои баги. Избрали позицию - незамечать. Если кто помнит как в microsoft.public.ru.russian.outlookexpress долго втирали что мол "такое просто не возможно поправить", оно там типа "так по дизайну" и прочее. В русских группах это к счастью закончилось - там уже никому мозги не запудришь - а вот в иноземных - процветает до сих пор. Любопытно что на предложение считать ФЛ "действующим макетом предложений для ОЕ" ответа не было. Как то сразу разговор прекращался:).

2. Вынужден констатировать что время от времени появляющиеся "расширения" к ОЕ недотягивают даже до уровня Лайта, но что забавно они тут же этими же МВПями широко рекламируются и включаются во всякие там факи - изумление охватывает:). Hо работа в этом направлении идет и вероятнее всего что чтото похожее на СЛ всетаки появится. Изоляция ФЛ в фидо увы но сослужила ФЛу скверную службу.

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

4. И еще: при разработке ФЛ неиспользованино ни строчки чужого кода - его просто на момент разработки не было и заимствовать нечего было. Все модули начиная с самого первого Fidolook.exe подписанные мною разработаны исключительно мною и без помощи третьих лиц. Hикакого доступа к соурс коду ОЕ - у меня нет и не могло быть. Это касается кода - а вот идеи и предложения (опять же они не касались программных решений) материализуемые этим кодом - они поступали от очень большого количества людей. К своему стыду я не вел учет на основании чьих предложений сделано то или иное. И в результате я просто боюсь что обижу когото если где либо вывешу список "разработчиков" при этом пропустив хотя бы одного. Эту диллемму я затрудняюсь решить и если кто что подскажет - буду обязан.

5. При разработке _не использовались_ абсолютно _HИКАКИЕ_ средства _взлома_, дизассемблирования, декомпилирования и прочего, программ, будьто известные как BoundsChecker или не известные. Просто потому что я в них не нуждаюсь. Абсолютно все сделано на MS Visual Studio v6.0 (сейчас sp5) на скромном P2-350 со 128МБ и 20ГБ диском на котором окромя W2K и средств разработки ничего и не помещается:). Правда для выполнения коекаких операций я написал несколько утилиток - чисто вспомогательных и облегчающих жизнь но не имеющих ведущую роль. И я продолжаю утверждать что ОЕ намного документированне чем это принято считать:).

Hапоследок позвольте выразить свое восхищение вашим терпением раз вы дочитали этот бред до сюда :).




  Хотите дополнить этот раздел? Пишите: help-team@fidolook.org
    2002-2004 (c) Пользователи FidoLook