Over the last quarter of 2008 and somewhere into first months of 2009 I was working on the project called Mozilla Community Sites. We got a lot at the time, with initial implementations for several products, the Theme, Logo, style guidelines and the whole concept that was originally introduced by Pascal Chevrel and me in 2004 really took off.
Then, at some point I had to call it a release and switch to other tasks, while MCS was waiting there for people to pick it up and use. From the very early days of the project, I knew it’s one of the projects that has to be maintained by the community of its users and upstreaming patches people make while deploying will set the speed of the project. In the end, we have to use the work to understand what’s most important and I’m personally maintaining only one community website – wiki.aviary.pl, so I can’t be the only driving force.
Over a few months we saw a lot of experimentation with MCS, and there are at least 10-15 sites that are using some aspects of the project (for example Mozilla Lietuvoje, Mozilla Argentina or Mozilla Srbija) and people started approaching me and sending patches, asking for bug fixes, features and plans. I would like to especially thank Tomer, Jesper, Guillermo and RQ.
Unfortunately, until now, I really failed to find time to push MCS further, and I feel like I was blocking it by being an inactive owner of the project. Things are slowly changing as RQ started pushing patches to the repo, Jesper and Topal started working on their sites working around me, Tomer suggesting to start a community group forum for MCS and me wrapping up my other projects to have a clean slate to work on MCS once again, this time, collaborating in a group! Yay! 🙂
So, I’d like to thank everyone involved in this project and apologize for not being able to be active when it was needed, and I’ll do my best to make myself and the project back on tracks. Rimas committing patches and Jesper getting an HG account is a solid first step. I want to start a group project for MCS next week, and I hope we’ll have more people joining the project now. In the time of EU MozCamp, we should have a lot of exciting things done here 🙂
Zmiana rozmiaru obrazka z uwzględnieniem zawartości jest metodą skalowania obrazka bez zniekształcania zawartości, innymi słowy: nielinearne rozszeranie obrazków. Algorytm ten został po raz pierwszy opisany przez Shai Avidan i Ariela Shamira i opublikowany w 2007 (“Seam Carving for Content-Aware Image Resizing.”)
Od tego czasu powstało kilka świetnych implementacji tego algorytmu dostępnych na licencjach wolnego oprogramowania takich jak wtyczka do Gimpa czy CAIR – aplikacja napisana w C++.
Teraz, dzięki Canvas i językowi JavaScript możliwe jest wykonanie tego w przeglądarce bez użycia wtyczki.
Od wersji 1.5, Firefox oferuje możliwość manipulacji bitmapą z poziomu API Canvas. Wersja 3.5 nie tylko wprowadza jeszcze szybszy silnik JavaScript, ale też dodaje nową metodę dla Canvas – createImageData – umożliwiając tworzenie nowych rozwiązań.
Na potrzeby tego dema został zaimplementowany fragment algorytmu do zmiany rozmiaru obrazka z uwzględnieniem zawartości. Szerokość zdjęcia może byc zmieniana dynamicznie bez zmiany jego wysokości. Ta implementacja korzysta z wykrawania szwów (seam carving) do zmiany rozmiary obrazka, śledząc mało widoczne pionowe linie.
Jest to cztero-krokowy algorytm zagnieżdzony. Jedna iteracja zmienia rozmiar obrazka o jeden piksel. Na początek obrazek jest pobierany do kontekstu Canvas, a następnie rozpoczyna się iteracja:
Zdjęcie jest przeliczane do skali szarości
Obliczane są krawędzie na zdjęciu (Użyty jest algorytm o nazwie Sobel convolution) oraz jego matryca energetyczna
Wykrywane są szwy o najmniejszej energii (pionowe linie o grubości 1 piksela nieprzerwanie idące od góry do dołu matrycy energetycznej)
Nastepnie piksel z wykrytego szwu jest usuwany z oryginalnego zdjęcia i wynik jest wklejany jako źródło dla kroku 1
Każdy z poprzednich kroków przechowuje w rozmiarze źródła zdjęcia całą matrycę danych. Choć te matryce nie są pełnymi zdjęciami, tylko artefaktami po algorytmie, przechowywanie ich jest znacznie wygodniejsze niż użycie prostych tablic (JS Array) i dlatego własnie wykorzystana jest tu metoda kontekstu Canvas o nazwie createImageData. Jedną z zalet zastosowania takiego procesu jest to, że można pokazywać pośrednie kroki które zostały wykonane w trakcie obliczania efektu końcowego.
To demo pokazuje w jaki sposób można wykonać bardziej inteligentne zmienianie rozmiar obrazka niż proste spłaszczanie pikseli w CSS. Mając możliwości manipulowania obrazek oraz moc obliczeniową dostępną z poziomu przeglądarki otwiera nowy zakres możliwości do tworzenia aplikacji WWW prezentujących dane wizualne użytkownikom. A to demo to przecież korzysta tylko z ułamka tych możliwości…
Na rynku zaczyna się robić ciekawie. Zwłaszcza konkurencja Microsoftu z Google (i troszeczkę z Apple) nabiera tempa i myślę, że przyszły rok będzie pamiętany długo w kronikach branży komputerowej.
Polska blogosfera podąża za trendami i wyraźnie widać, że Google skończył się miesiąc miodowy a pojawienie się konkurencji (choćby ze strony nielubianego Microsoftu) jest przyjmowane z lekką nutką ekscytacji.
Czy Google jest “zły”? Nie ma to znaczenia. Osiągneli punkt w ambicji korporacji i zmianach kultury organizacji który sprawia, że będą postrzegani jakby byli.
My take
Jak każdy kto wychował się na webie w latach 1998-2008 mam uraz do MS za to co zrobili z rynkiem po zdobyciu dominacji i w efekcie ograniczone zaufanie co do ich intencji. Jeszcze bardziej martwi mnie, że spośród wszystkich firm na rynku IT Microsoft wydaje mi się najmniej rozumieć idee wolnego oprogramowania i delikatną układ ekosystemu, który pozwala w tym momencie projektom takim jak Linux, OpenOffice, Wikipedia czy Mozilla istnieć. Google i Apple wydają się rozumieć (Google z projektami takimi jak Summer of Code, Apple z WebKitem) i zostawiać trochę miejsca. Microsoft wydaje się bezwzględnie eliminować takie projekty (przykłady Samby czy SCO).
To sprawia, że pojawienia się Microsoftu w szeroko rozumianym “webie” obawiam się – pisałem zresztą o tym jakie uczucia budzi we mnie, na przykład, ich sposób reklamowania IE8 (a to jeszcze przed “śmieszną” reklamą z wymiotowaniem!).
Z drugiej strony, konkurencja jest niesłychanie ważnym elementem tworzenia rynku pro-konsumenckiego (pod warunkiem, że gracze nie mają możliwości obchodzenia mechanizmów konkurencji przez np. vendor lock in) i jestem pewien, że z jednej strony koniec “miesiąca miodowego” od społeczności webowej, a z drugiej pojawenie się konkurencji może mieć bardzo pozytywne skutki dla nas, odbiorców i dla firm. Na dodatek Microsoft niewątpliwie zaskoczył ogłaszając, że webowy MS Office będzie w całości aplikacją WWW działającą na wielu przeglądarkach (oby utrzymali ten kurs ;)).
Nie wiem czy Microsoft ma szanse. Google może w każdym momencie zrobić przytyczek i otworzyć docsy. To naprawde nie jest dla nich duże ryzyko. Na dodatek MS przenosi bitwę na pole przeciwnika. Dotychczas korzystali z tego, że ogromna większość ich klientów nawet nie rozważała korzystania z web aplikacji, zatem wybierali między coraz lepszym MS Officem a mało konkurencyjnym dla biznesu OpenOffice. Prawdziwą konkurencję mieli jedynie na platformie Apple gdzie przegrywali z IWork (imho słusznie), ale tak długo jak Apple ma blisko zerowy rynek korporacyjny to nie dotykało ich wizerunku ani dochodów biznesowych. Teraz nagle będą na rynku konkurować z całkiem porównywalnym produktem a na dodatek koszt zmiany produktu jest mniejszy niż kiedykolwiek.
Z drugiej strony system operacyjny od Google to też niecodzienne zjawisko. Google wchodzi na pole przeciwnika z produktem, który przecież jakościowo z całą pewnością nie będzie odstawał od Moblina, Ubuntu, Suse czy RedHata… Nie ma siły. Zatem wszystko co może wykorzystać, by zdobyć więcej rynku to marketing i partnerzy biznesowi. To zaś oznacza szansę dla innych wydawców Linuksa… kto wie…
I jeszcze słowo o bingu. Jeśli chodzi o jakość, to polecam zrobienie sobie blind testu – mi wyszedł dość jednoznacznie wskazując ile jeszcze brakuje algorytmom binga. Natomiast ciekawi mnie odbiór statystyk. Po startcie nowej wyszukiwarki wszyscy z niepokojem czekali na wyniki i teraz zarówno vbeta, jak i antyweb ogłaszają sukces (AntyWeb w ogóle ogłasza potężne zwycięstwo w wielu bitwach). Czyżby?
Otoz zabral 2.89% z MSN Global i 1.83 z Microsoft Live Search, co daje w sumie 4.72%. To zas oznacza, ze w pierwszym miesiacu (z calkiem potezna, masowa, zalewajaca kampania) Bing zyskal… 0.6%. 0.3% od Google, 0.2% od Yahoo i 0.1% od AOL.
StatCounter
Wyniki ze StatCounter
StatCounter jest jeszcze bardziej bezwzględny, wskazuje na 3.33% rynku podczas gdy na tydzien przed wejściem binga na rynek, MSN miał 1.31% a Windows Live 2.11%… W sumie… 3.42%.
Ranking.pl
Jeszcze ładniej prezentuje to ranking.pl – łączy on mianowicie binga, msn i windows live pokazując zwykła płaską ciągłą linie ostatnich tygodni i dając bingowi 1.72% (a w tygodniu poprzedzającym wejście binga ta grupa miała 1.75%)
Wnioski?
Czy oznacza to, że bing jest bez szans? A skąd. Unifikacja marki, widoczne skupienie się na rozwoju jednej wyszukiwarki, powiązanie jej z innymi usługami (MS Web Office anyone) z pewnością da bingowi rynek większy od aktualnego, ale dziwią mnie zabarwione sensacyjnie wpisy pisane przez stare wygi blogosfery o “bolesnym policzku” jaki Google dostało od MS. Ludzie, opamiętajcie się! Toż to na razie jest porażka! Miliony władowane w kampanie, marketing wirusowy na ogromną skalę, gigant atakuje drugiego giganta… i co? 1.72%? I to z połknięciem poprzednich wersji? Nie brzmi jak ogromny wyczyn…
p.s. A ja dalej kibicuje mojemu cichemu faworytowi 😉
p.p.s Czekam na felieton Pawła o MS Web Office, wszak on jest uzależniony od docsów 🙂