Michal Čihař - Blog Archives for History

Můj free software 11. - a pohádky je konec

Tak jsem dospěl až do současnosti a probral všechno, na co jsem si vzpomněl. Možná ještě někde žije nějaký zapomenutý výtvor, který by stál za zmínku, ale paměť už mi moc neslouží :-).

Co jinak napsat na závěr? Je vidět kolik slepých uliček jsem prošel a ještě pořád musím z některých (wxPython) vyjít. Ale programátora vždy potěší a dodá mu motivaci, když se ozve nějaký uživatel , který je spokojený. Jen víc takových a méně chyb, ale to je jen zbožné přání :-).

Můj free software 10. - ukolovnik

Začalo to klasicky tím, že jsem si ze stávající nabídky tisíce todo listů nebyl schopný vybrat nějaký, který by mi vyhovoval. No a po pár hodinách vznikla první verze Ukolovniku . V podstatě je to jenom další ukázka toho, že co si člověk nenapíše, to mu nevyhovuje. Už pomalu začínám chápat to že si každý napíše svůj klon Total Commanderu :-).

Nebudu znovu popisovat důvody, které mě k napsání vedly, to si najdete ve starším zápisku . Dnes umí vše co potřebuji a v plánu jsou už jen nové vlastnosti, které by bylo dobré mít, jako třeba instalační skript a přesun konfigurace do databáze. Na Freshmeatu si to nevede až tak špatně, ale zatím se nikdo neodvážil nahlásit chybu, tak nevím jestli to nikdo nepoužívá nebo je to opravdu bezchybné :-).

Můj free software 9. - polld

Po Wammu následovala poměrně dlouhá přestávka. Ne že bych nic nedělal, ale nějak nebyla potřeba něco nového vytvářet. A času taky nikdy není nazbyt. Pak mě jednoho dne naštvalo, že čtečka karet není schopná načíst partition po zasunutí karty a rozhodl jsem se to vyřešit. Tak vznikl polld , trviviální démon, který jenom periodicky otevírá soubor.

Opravdu se nejedná o nic složitého, většina kódu se stará o načítání konfiguračního souboru a zpracování parametrů. No ale svůj účel to plní, a to dokonce nejen mě, ale i pár dalším lidem :-).

PS: Nebojte se, za chvíli už vážně bude konec této nekonečné soap opery.

Můj free software 8. - Wammu

Tak a je tu poslední díl pojednávající o programech s trochu kryptickými a podobnými jmény. Poslední na řadu přišlo Wammu , přestože je z nich asi pro většinu uživatelů nejpoužitelnější.

Přestože jsem velmi dlouho vybíral, v čem toto GUI psát, dnes této volby lituji. Ne že by wxPython byla vyloženě špatná věc, ale nekompatibilita různých verzí, které se vyskytují v různých distribucích je až neuvěřitelná. To je umocněno tím, že se nejedná o nijak moc využívaný framework, takže v mnoha distribucích je značně zastaralá verze (nebo alespoň naprosto nemožně zkompilovaná, zdravíme Fedoru). Z toho důvodu jsem musel mnohem víc energie věnovat na různé obezličky, abych zajistil kompatibilitu, místo vývoje nových funkcí, které bych určitě uvítal nejenom já.

Kromě nějaké základní práce s kontakty, kalendářem, úkoly a zprávami, umí program také zálohovat, a to hned do několika formátů souborů. Zprávy si můžete nahrát třeba na IMAP4 server, což se na zálohování celkem hodí, hlavně je k nim pak přístup odkudkoliv (pokud mobil umí IMAP4, tak i z něj :-)).

V současné době moc nových věci nepřibývá, projekt tak trochu vyčkává na to, až se dostatečně naštvu a přepíšu GUI do PyGTK. Nějaké návrhy už mám, ale jak dlouho to bude trvat nikdo netuší :-).

Můj free software 7. - python-gammu

Tento zápisek bude trochu stručnější. Nevím moc co o tomto lepidlu mezi Pythonem a Gammu napsat. Prostě jsem se rozhodl psát GUI v Pythonu, protože se mi tento jazyk líbí a píše se mi v něm dobře, tak vznikla nutnost vytvořit tuto mezivrstvu.

Při psaní šlo v podstatě jenom o implementační detaily, protože základ API byl jasný – něchtěl jsem se moc odlišit od libGammu. Jediné zásadní rozhodnutí (a dodnes nejsem přesvědčen jestli bylo správné nebo špatné) bylo ukládání všech dat do slovníků. Hlavně kvůli jednodušší implementaci, ale nakonec se to ukázalo být poměrně praktické i pro použití v programu.

Možná si kladete otázku proč jsem nepoužil swig nebo jiný generátor rozhraní. Asi to je jen mojí neschopností, ale opravdu jsem nepřišel na to, jak zabalit volání libGammu pomocí swigu tak, aby to bylo méně práce než to napsat ručně.

A na závěr jedna ukázka jak snadno se to dá použít :-).

 import gammu

sm = gammu.StateMachine()
sm.ReadConfig()
sm.Init()

message = {
    'Text': 'python-gammu testing message', 
    'SMSC': {'Location': 1}, 
    'Number': '123456789',
}

sm.SendSMS(message)

Můj free software 6. - Gammu

No už se pomalu dostáváme do současnosti :-). Po dopsání KAlcatelu do relativně použitelného stavu jsem si začal uvědomovat, že aplikace pracující pouze s jedním typem telefonu, která je nerozšiřitelná, nemá moc velkou budoucnost. Tak sem se koncem roku 2002 začal porozhlížet po něčem obecnějším.V té době (a IMHO to tak stále je) připadaly v úvahu asi jeno Gammu (tehdy ještě MyGnokii) a Gnokii. Pak ještě existuje GSMLib, tam ale není zaměřen na nic jiného než AT příkazy a rozšiřitelnost je problematická.

Po vyzkoušení obou projektů a zběžném prozkoumání zdrojáků jsem se rozhodl pro MyGnokii. Kromě toho, že se na rozdíl od Gnokii rovnou komunikovalo s mým telefonem, rozhodlo interní používání unicode. Dnes s odstupem času pořád nejsem schopný říci, který z projektů je vnitřně uspořádán lépe. Gnokii má určitě výhodu ve stabilnějším API, především s ohledem na implementaci různých funkcí a předávání parametrů. Gammu je zase o něco jednodušší na používání díky předávání jen těch parametrů, které budou zpracovány (u Gnokii se vždy předává struktura obsahující pointery na všechno možné) a díky internímu unicode nejsou problémy s nabodeníčky.

Po pár prvních patchích jsem Marcina přesvědčil, že MyGnokii není nejlepší název a navrhl Gammu, které se kupodivu ujalo :-). Pak už šel vývoj poměrně rychle a kromě drobných i větších úprav pro AT kompatibilní telefony přibyla koncem roku první verze podpory pro nativní protokol Alcatelů.

Od té doby už v podstatě jenom udržuji co jsem napsal a občas implementuji nějakou drobnost, která mě na mailing listu zaujme. Většina patchů jsou však opravy různých obskurních chyb, které se projeví při používání z Wammu.

Můj free software 5. - KAlcatel

KAlcatel je první můj open source projekt, který se setkal s poměrně slušným úspěchem. Jedná se o GUI pro dříve popsanou knihovnu alcasync. Kromě klasické editace údajů v telefonu umožňuje i úpravu jen v počítači a následnou synchronizaci dat.

Do programování jsem se vhrl s nadšením a buhužel téměř bez rozmyšlení architektury programu. Během pár měsíců byla na světě verze, která fungovala velmi dobře a používalo jí relativně hodně lidí. S tím se začaly objevovat požadavky na přidání podpory pro další telefony.

Nějakou dobu jsem koketoval s vytvořením pluginu pro Gnokii , ale nakonec jsem zjistil, že to v podstatě znamená přepsat program znovu a uložil jsem tuto myšlenku k ledu.

Poslední změny byly již jen kosmetické v podobě opravy kompilace s novějšími Qt a pak již vývoj umřel úplně. Ovšem myšlenka vytvořit GUI pro správu telefonu fungující i na jiných systémech než Windows mě neopustila a později se zhmotnila v podobě Wammu .

Můj free software 4. - alcatool/alcasync

Jestli mě paměť neklame, tak zhruba ve stejné době jako Wessie jsem začal s reverse engeneeringem protokolu pro synchronizaci telefonů Alcatel. Šlo to až překvapivě snadno díky logovacím schopnostem originálního software pro Windows. Bohužel tuto skvělou vlastnost již z novějších ostranili, ani nevím proč. Možná to nějak souviselo s tím jak si odkazy na můj web posílali v interních newsech :-).

Projekt se ze začátku jmenoval alcatool, ale poté co jsem zjistil, že jeden alcatool již dříve existoval, přejmenoval jsem ho na alcasync . Tento program v podstatě nikdy nebyl určen pro uživatele, ale spíš pro vývoj a odladění protokolu. Ze začátku se sestával jen z knihovny, která umožňovala základní komunikaci a jednoduchého obslužného programu. Během vývoje přibyl i interpreter který umožňoval interaktivně zadávat příkazy a skriptování, který jsem použil pro vyhledávání funkcí hrubou silou :-). Bohužel přístup k SMS v telefonu se mi stejně nepodařilo zajistit.

Nakonec se z toho vyvinula i docela použitelná command line utilita, ale hlavně knihovna, kterou pak použila grafická aplikace KAlcatel , o které se dozvíte více příště.

Můj free software 3. - Wessie

Tento zápis by se také mohl jmenovat „i slepé cesty je třeba prozkoumat“. Wessie měl být modulární publikační systém napsaný v PHP. Víceméně se to podařilo splnit (a zápočet jsem za to dostal :-)). Akorát se už nikdy nepodařilo vytvořit verzi, která by byla opravdu uvolnitelná, hlavně kvůli nedodělané administraci.

To nicméně nijak neubírá systému na funkčnosti a jedna za dvou instalací stále ještě funguje (byť je již víceméně mrtvá co se obsahu týče).

Hlavní výhodou mělo být snadné přidávání pluginů pro různé typy stránek (vrcholnou ukázkou je generátor náhodných stránek :-)), další požadované vlastnosti byly: generování validního xhtml (včetně odkazů na validátor v administraci), podpora pro neomezené množství jazyků, použivání templatů, vytváření menu nezávisle na obsažených dokumentech a spousta dalších věcí, které mi tenkrát přišly užitečné.

Plány to byly pěkné, ale na dopsání jsem si nikdy nenašel čas a pochybuji, že se k tomuto projektu z přelomu let 2001 a 2002 ještě někdy vrátím. Přestože se Wessie nikdy nedočkala stádia zveřejnění, určitě má v tomto seriálu svoje místo. A pravděpodobně se i časem zveřejnění dočká – to až svoje CVS převedu na nějaký jiný SCM a toto repository zveřejním. Ale nikdy už asi nebude umět vše co původně umět měla.

Update: Projekt byl uveřejněn na stránce cihar.com/software/wessie a má veřejně přístupné Subversion repository.

Můj free software 2. - phpMyAdmin

První skutečný vstup do světa free software nastal až u phpMyAdmina .

V květnu roku 2001 jsem přispěl překladem do češtiny:

 Subject: Updated Czech translation of phpMyAdmin
From: Michal Cihar <cihar@email.cz>
To: swix@users.sourceforge.net
Date: Mon, 14 May 2001 11:23:36 +0200
X-Mailer: KMail [version 1.2]

Hi

I've updated (translated few added messages) Czech translation of phpMyAdmin. 
I send it to you in two encodings, because I thing that in distribution 
should be included version in ISO-8859-2 which is more standard than Windows 
1250.

Regards
	Michal Cihar
	cihar@email.cz
	cicom.tsx.org

Pak jsem přes rok vývojáře neustále otravoval s patchi, až jim po roce došla trpělivost a stal jsem se plnohodnotným vývojářem:

 Subject: Welcome to Michal Cihar
From: Marc Delisle <Delislma@collegesherbrooke.qc.ca>
To: nijel@users.sourceforge.net
CC: rabus <rabus@users.sourceforge.net>
Date: Tue, 13 Aug 2002 07:50:23 -0400
User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; fr-FR; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1

Michal,

you are now an official developer of phpMyAdmin.

CVS access is an administrative process that sourceforge people do, and 
it could take some days to be active.

-- 
Marc Delisle

Od té doby jsem (podle cvschangelogbuilderu ) provedl téměř 15000 commitů, ve kterých byly i velmi zásadní změny v phpMyAdminovi. V současné době je můj podpis třeba pod importem a exportem, převodem kódování, manipulace s indexy a spousta dalších věcí, které si ani nevybavím. Některé rozhodně mají k dokonalosti daleko, ale nevím o ničem za co bych se měl stydět :-).

V současné době na projektu stále pracuji, ale již je to spíše nárazová práce, kdy v občasné volné chvíli opravím hromadu chyb (a ještě více vytvořím :-)). Bohužel ostatní vývojáři na tom taky nejsou nejlépe s časem (a motivací), takže vývoj moc dopředu nejde. Takže kdyby se někdo chtěl podílet, tak může opravit pár chyb z trackeru a poslat patche. Pokud budou přijatelné, může se dočkat i přístupu do cvs. A pokud neumíte programovat, vůbec to nevadí. Můžete třeba pomoci s překladem do nějakého jazyka který ovládáte (nějaký znalec hindštiny by tu nebyl?), protože některé překlady na tom jsou opravdu špatně. Nějaký grafik by se zase mohl vyřádit na tématech, protože za ta stávající jsme dost často kamenováni (no jo tak to dopadá když programátor dělá design).

Pokud si chcete počíst více o phpMyAdminovi, jsou tady pro vás stránky phpMyAdmin cz .