Categories
main mozilla po polsku tech

Wielowątkowość w przeglądarce

Wieloprocesowość

Od czasu pojawienia się Chrome, temat korzystania z wielu procesów do wyświetlania stron w przeglądarce stał się jednym z ważniejszych przy porównywaniu przeglądarek.

Co więcej, wbrew uwagom samych autorów, powszechnie zaczęto uznawać to jako tzw. “feature” – funkcję, której posiadanie jest bezwględnie objawem przewagi danej przeglądarki nad inną.

Czarne strony

Tymczasem Sam Allen opublikował wynik swojego mini-badania w którym przetestował popularne przeglądarki w zakresie zużycia pamięci. Oto wykres:

Memory usage chart
Wykres zużycia pamięci

Sam przetestował Operę, Firefoksa, Safari i Chrome podczas wczytywania 150 najpopularniejszych stron z rankingu Alexa.com. Opublikował też wyniki w postaci tabeli najwyższego i najniższego zużycia pamięci przez różne przeglądarki.

Sam wykres jest na pewno ciekawy, ale jeszcze ciekawsze są jego implikacje, które potwierdzają pierwsze komentarze jakie pojawiły się w społeczności pracującej nad Gecko po wydaniu Chrome.

Dlaczego tak się dzieje? Wykorzystanie wielu procesów oznacza, że 10 kart z otworzonym google.com będzie dziesięć razy ładować absolutnie wszystko konieczne do wyświetlenia tej strony. To zaś oznacza znaczące koszty w wykorzystaniu pamięci. W “tradycyjnym” modelu, pamięć jest współdzielona i obrazki, struktury danych oraz bloki używane do rysowania układu strony mogą być współdzielone. Nawet obiekty używane do wyrenderowania strony, mogą zostać utworzone raz i uruchamiane podczas rysowania różnych stron.

Tymczasem w przypadku modelu w którym każda strona (czy karta) ma swój proces, musi ona praktycznie załadować do pamięci całą przeglądarkę – a przynajmniej cały kod potrzebny do obługi jednej strony. To kosztuje i to wcale nie mało.

Białe strony

Czy to oznacza, że programiści Chrome popełnili błąd decydując się na taką zmianę? Nie. Oni po prostu zdecydowali się zapłacić taką cenę, za liczne udogodnienia jakie daje rozdział procesów.

Najważniejszym, i pewnie najbardziej zrozumiałym jest możliwość izolacji procesu na wypadek problemów. Jeśli strona spowoduje poważny błąd, będzie to tylko błąd tej karty, a nie całej przeglądarki. Nie stracimy pisanego od godziny listu i nie będziemy musieli uruchamiać wszystkiego od nowa. To duża wygoda.

Inną sprawą jest rozdzielenie pamięci. Strony można uruchamiać w tzw. “piaskownicach”, gdzie są oddzielone od sektorów pamięci wykorzystywanych przez przeglądarkę. W takiej sytuacji nawet jeśli w przeglądarce znajdzie się błąd bezpieczeństwa, to jego wykorzystanie praktycznie zawsze będzie ograniczone do manipulacji danym procesem, a nie całą przeglądarką czy systemem operacyjnym. To ważne udogodnienie.

Istnieją inne, jak łatwe wykorzystanie wielu procesorów i przeniesienie na system operacyjny zarządzania przydzielaniem procesom cykli procesora, co oznacza, że z łatwością można określić, że przeglądarka ma wyższy priorytet niż, np. filmik na youtube i nie będzie on już “przycinał” jej.

Szukanie balansu

W Mozilli powstał specjalny projekt, który eksperymentuje z wykorzystaniem wieloprocesowości. Pierwsze eksperymenty są już testowane i poniżej prezentuję filmik od Chrisa Blizzarda z demonstracji tej technologii:

Najważniejszym jednak pytaniem jest jak wykorzystać wieloprocesowość, aby zmaksymalizować zyski i zminimalizować koszty. Jednym z pomysłów jest uruchamianie rozszerzeń w osobnych procesach – to zwiększa bezpieczeństwo i pozwala oddzielić stabilność aplikacji od rozszerzenia, ale kosztem pamięci. Innym pomysłem jest wydzielenie procesów na wtyczki, ponieważ w nich często znajdowane są błędy bezpieczeństwa a także one najczęściej zawieszają przeglądarki.
Jeszcze innym jest utrzymywanie silnika renderującego w osobnym procesie a stron w osobnych. Wówczas strona wysyłana by była przez kartę do procesu renderującego, który zwracałby wyrenderowaną. W takim układzie karty są niezależne, jeśli jakaś operacja na jednej spowoduje błąd to nie dotknie on innych, a zużycie pamięci nie powinno ucierpieć, ponieważ kod renderujący byłby współdzielony. Niestety taki układ nie daje tych samych zalet w zakresie stabilności. Jeśli silnik rednerujący wyłoży się na jednej stronie, to padnie cały. Jeśli jednak będzie osobnym procesem, to nie przełoży się to na przeglądarkę…

Generalnie temat do rozważań jest potężny i jest mnóstwo miejsca na eksperymenty. Jeśli ktoś jest zainteresowany pracą zespołu, to zapraszam na serwer irc.mozilla.org, kanał #content.

Categories
main

New theme

Spring is almost over, and I had no time to update my diary too much.
So today I decided to give the new WordPress 2.8 theme management system a try, and switch a theme to something new.

  1. The system works perfect. Kudos to Automatics
  2. I hope you like the new theme 🙂

Categories
main po polsku tech

… brakowało Was?

W marcu napisałem krótką notkę na temat moich odczuć związanych z powrotem Microsoftu do konkurowania w dziedzinie przeglądarek.

W notce starałem się opisać takie moje dziwne odczucie. Przez ostatnie lata Microsoft praktycznie nie wypowiadał się w dziedzinie którą zajmuje się najbardziej. Oczywiście, zdażało mi się znaleźć wypowiedzi Ballmera n/t Apple (ot, na przykład, do Guya Kawasaki, że MacBook Air to chłam i powinien kupić sobie porządny laptop z Vistą), ale było to jakby daleko ode mnie…

Categories
main mozilla po polsku tech

Dzieje się!

Całe szczeście, że doczekaliśmy się czasów, gdy o tym co dzieje się w projektach Internetowych informują media mainstreemowe, portale społecznościowe, mikroblogi, a nawet mozillowo-zorientowany foxinews. Szczęście, bo gdyby ktoś chciał sądzić o aktywności projektu po planecie MozilliPL, to trudno byłoby się czegoś dowiedzieć.

Sam mam niestety mało czasu (tak, tak, sesja…), ale spróbuję w telegraficznym skrócie, w losowej kolejności, opisać kilka tematów dla zainteresowanych:

  • Wydanie Firefoksa 3.5 zbliża się wielkimi krokami. Tym razem, w odróżnieniu od naszej tradycji, chcielibyśmy, aby wydanie RC faktycznie było kandydatem na wersje finalną. Koniec z wydawaniem RC1 i planowaniem trzech następnych równocześnie… Jak coś jest kandydatem na wydanie, to ma być gotowe. Dlatego Mike (Beltzner) i Mike (Shaver) bardzo poważnie uparli się, że nie będzie RC2. No, chyba, że niebo spadnie nam na głowy.
  • Nowy addons.mozilla.org. A w nim – łatwiejsza nawigacja, wygodniejsze zarządzanie i nowa funkcja – Kolekcje – która umożliwia tworzenie własnych zestawów rozszerzeń i motywów. W przyszłości mamy nadzieję zaoferować Ci możliwość spakowania takiej kolekcji i wydania jako własnego Firefoksa.
  • Projekt hack.mozilla.org – przez 35 dni zostanie zaprezentowanych 35 nowych funkcji dla webmasterów, które pojawią się w przeglądarkach nowej generacji – Firefoksie 3.5, następnej Operze, Safari i Chrome.
  • Thunderbird 3.0beta3 zbliża się. Została jedna duża rzecz (globalne wyszukiwanie), która powinna wylądować w ciągu tygodnia i potem już przygotowania do wydania.
  • Trwają prace nad Firefoksem 3.0.12. Tradycyjnie, kilka poprawek wydajności, kilka bezpieczeństwa i kilka błędów zwykłych.
  • Zespół Aviary.pl przygotował polskie tłumaczenie Poradnika Recenzenta do Firefoksa 3.5. Będzie to mała książeczka z opisem nowych technologii i funkcji jakie będą dostępne dla autorów stron WWW i użytkowników wraz z nowym Firefoksem.
  • Zaczęły się przygotowania do planowanego na wrzesień Tygodnia Mozilli (po angielsku – Mozilla Service Week, ale niestety brzydko brzmi tłumaczenie dosłowne). Będzie to kampania trochę podobna do banków czasu – chcemy zachęcić ludzi posiadających zdolności techniczne do pomagania osobom mniej uzdolnionym i potrzebującym pomocy. W ramach tej kampanii będziemy szukać chętnych do prowadzenia wykładów na temat obsługi Internetu, osoby chcące pomóc z konfiguracją Internetu, lub w inny sposób pomóc bliźniemu. 🙂
  • Pierwsze prace nad Firefox.Next – tutaj zidentyfikowaliśmy 35 błędów, których rozwiązanie sprawi, że Firefox będzie reagował szybciej przez co poprawi się wrażenie z interakcji z przeglądarką. Błędy takie oznaczamy TSnap. W przyszłym tygodniu w trunku wyląduje Canvas3D, a zespół odpowiedzialny za layout zaczął prace nad XBL2. O innych planach na Firefox.Next można przeczytać na Wiki.
  • Seamonkey 2.0b1 powinno wyjść w ciągu tygodnia.
  • Microsoft wstępnie ogłosił, że zamierza wydać Windows 7 bez IE w Europie. Bardzo trudno okreslić, czy to jest właściwy ruch. Mitchell świetnie podsumowała (jeszcze przed tą decyzją) jak ten dylemat wygląda z naszej strony. Ja mam bardzo mieszane odczucia. Nie do końca rozumiem co Microsoft zdecydował tak naprawde (co dokładne oznacza “we will offer it separately”?) i mam poważne wątpliwości, czy wydawanie w 2009 roku systemu operacyjnego bez przeglądarki jest dobre dla użytkowników.
  • JestPack to nowy projekt z Mozilla Labs będący kontynuacją idei projektu FUEL – budowania łatwych klocków z których można tworzyć rozszerzenia. JetPack pozwala tworzyć rozszerzenia korzystając wyłącznie ze znajomości technologii webowych – HTML, JS, CSS.
  • Projekt Personas – rozszerzenia pozwalającego na łatwe zmienianie motywów Firefoksa bije rekordy popularności. Nigdy nie sądziłem, że coś może przebić popularność AdBlocka 😉
  • Projekt Weave rozwija Mozillowe podejście do “chmury” pozwalając synchronizować swoje dane z przeglądarki między komputerami, ale w sposób zaszyfrowany, tak, aby ten kto hostuje serwer Weave nie miał dostepu do Twoich danych. W ostatniej wersji pierwsze eksperymenty z OpenID.
  • Bespin to z kolei edytor w “chmurze” – dostepny przez stronę WWW edytor kodu, który pozwala pracować nad projektem w grupie ludzi, a swoje projekty mieć dostępne z każdej maszyny bez potrzeby przygotowywania środowiska.
  • Kampania FastestFirefox zbiera filmiki ludzi robiących to co umieją najszybciej. Chcemy zebrać je razem i stworzyć kompilację ludzkich pasji związanych z szybkością, ciągle pracujących by być jeszcze szybszym – tak jak społeczność pracująca nad Firefoksem pracuje, by każdy kolejny Firefox był szybszy.
  • Wydaliśmy wersję 0.5 i 0.5.1 biblioteki do lokalizacji Silme. Adrian wraz z zespołem oraz Romi pracują teraz nad dwoma projektami korzystającymi z Silme. Projekt Adriana nazywa się Koala i będzie rozszerzeniem do lokalizacji do Komodo, a projekt Romiego to próba połączenia Silme z Narro.

Tak więc, dzieje się!

Staramy się jak najwięcej z tego przenieść do Polski, ale brakuje nam rąk do pracy. Jeśli jesteś zainteresowany/a pomocą, to szukamy na pewno chętnych do pomocy z:

  • SUMO. support.mozilla.com to strona z artykułami do pomocy osobom używającym Firefoksa. GmbH (mwawoczny at aviary dot pl) chętnie przyjmie pomoc 🙂
  • Eventy. Chcemy zorganizować kilka spotkań na temat technologii Web w Polsce. Szukamy osób chętnych do organizaci MozCampów, lub innej formy spotkań. Dzieje się dużo, jest o czym rozmawiać 🙂
  • I jak zawsze, mamy wakaty dla chętnych do tłumaczenia. Aviary.pl szuka tłumaczy, bo projektów nam się zrobiło co nie miara. Pamiętaj jednak, zanim wyślesz zgłoszenie, tłumaczenia to odpowiedzialna praca. A my chcemy być w tym najlepsi. 🙂
  • Z tego co wiem, nikt nie tłumaczy hacks.mozilla.org – jeśli ktoś jest zainteresowany, to z chęcią pomogę z organizacją tego 🙂

Categories
main mozilla tech

Silme 0.5.1 released

3 weeks after Silme 0.5 release, we’re proud to announce the first minor update to Silme – 0.5.1.

Silme 0.5.1 carries 5 changes, each of them making it a little better. In particular it fixes bugs that were blocking Adrian Kalla‘s version of compare-locales to get its first release.

So, what’s new in 0.5.1?

  • New method: silme.diff.EntityList.has_entity() should make testing entities in diff faster
  • Two bugs in silme.io.jar that made it impossible to use
  • Performance improvements in silme.io.jar.get_package() (can we upload silme script to Fastest Firefox? ;)) by just ignoring to load zip entries for directories
  • We don’t close ZIP file in get_package if we didn’t open it there. It was a bug that caused silme.io.jar to fail with subpackages
  • Major rework of URI schema accepted in silme.io.jar. It is now possible to do:
    ioc = silme.io.Manager.get('jar')
    l10npack = ioc.get_package('jar:chrome/package.jar!locale/ab-CD/package')

This is the very first minor release in the history of Silme projects, and we’re happy to make it!

You can download it from HG repository or use pypi for silme0.5.1.

I’d like to thank Adrian who helped by identifying bugs and writing patches for this release. You may also want to check his newest project which uses Silme to create a sleek localization extension for Komodo! It’s called Koala 🙂

Next in line is Silme 0.7 which will bring new features and optimizations and we’re planning an alpha release to happen early next week. If you’re interested in hacking localization related code and never tried silme, it may be a good moment to give it a try and help us on the way to 0.7 🙂

Categories
main mozilla tech

Slides from eLiberatica 09 talk

Today I had a pleasure to give a talk at eLiberatica 09.

It was one of the most complex and most challenging talks I ever had to give. It was about the Mozilla. It was about who we are, and how we try to describe ourselves. About how we think of ourselves and the challenges we face.

The rationale for doing such talk is to do what we have to – to over-communicate. To manifest ourselves and explain ourselves to people who care about the web. To rephrase some questions that people pose – about the goals, about how to measure a success, about how to make sure we stay meaningful while staying true to our mission.

Explaining Mozilla and explaining the kind of semantic space in which we brainstorm these days is an extremely complex goal. It’s harder than speaking about new experiments and features that we work on. It’s even slightly against what people want to hear about. But I believe it’s vitally important. We have to express ourselves and explain ourselves and I decided to give it a try at eLiberatica.

Bonus points goes for the fact that I wasn’t speaking in my native language, and also the audience listen to such a complex talk in a foreign language.

Despite all of that, I believe it went well. I feel thankful that people bared with me through all those topics, and I hope the deck may be useful for other speakers willing to mix and mesh it 🙂

I definitely recommend a keynote version for the best experience, but pdf dump provided for those who don’t use keynote:

Categories
main mozilla tech

Silme 0.5 now at easy_install

Adrian Kalla added Silme 0.5 to pypi repository so that you can download it and build dependencies in the python style.

It can’t get any simpler than:

easy_install silme

Also, if you missed it (I know you did), here comes the very first documentation. It comes out of doxygen (which is probably the best of the worst choices for python docs) but it works and it’s there for your convenience. 🙂

If you happen to be a master of doxygen and you know how to make it work better, contact me pls!

Categories
main mozilla tech

MCT: Style guide

It’s been a while since the last update on MCS but things were moving on and it’s time to catch up with the progress in the project.

picture-1Description

Today, I’d like to introduce you to a new Mozilla Community Theme style guide. MCT Style Guide is a document that explains the design decisions made by the theme authors that allows people who use the theme to extend it following the original concepts and keeping their new elements in sync with original one.

Rationale

Mozilla Community Theme was created to give us a fresh theme that can make it easier for communities to set up a professionally looking website without having to look for a designer or crafting something on their own. Three months after the release, MCS is becoming a popular option among opicture-2ur communities when they’re making their choices with regard to the website. We like to think that the reason is because we offered maximum freedom and flexibility with this set, letting people do what they want, while providing high quality of the design itself.

One element that we did not cover very well until today, was how to extend the theme. How to move forward. Not only modify what we gave you, but also add new elements, theme new websites, or T-shirts, or posters… That’s where the Style Guide hits.

Style Guide

Style Guide is a short book that presents the concept choices together with list of modification options that, in the theme author’s opinion, will match the theme and let you keep the unified look and feel no matter where you’ll go.picture-3

What’s exciting about it, is that it opens communities to a new level where they have all the tools and resources that usually professional web agencies have and they can develop their skills and get accustomed to the new concepts. While working on our hobbies, we’re getting real experience that translates directly into our portfolio.

 
 

picture-5This Style Guide lets you dig into:

  • color palettes
  • typography decisions
  • layout and grid models
  • branding options
  • methods of preserving space and light between text blocks that influences readability of the text
  • texture options that influence how the website looks
  • and others…

picture-4We hand this to you, so that you can experiment and develop the theme further or just customize it to your needs. What’s really important and exciting is that as all other parts of this project, the style guide is open! You can download Indesign document or editable PDF document and hack the Style Guide itself.

I’d also like to use this moment to thank Tara Shahian and Seth Bindernagel who have worked together with the theme authors on this 1.0 release of the guide. 🙂

So, grab it here and… we’re accepting patches 🙂

Categories
main mozilla tech

Silme 0.5 released

silme logoProjects need releases. It’s important. It’s like a birthday for a project – they get a milestone to mark the progress.
On the other hand we have developers. They need unlimited time and no deadlines. When one meet another, we have an interesting arm-wrestling battle between those two, but ultimately one has to obey to the Oath of the Bazaar, if you know what I mean.

Release

So, here we are, Silme was asking for a release for long enough and I postponed it over and over so it’s time to make the cut. Today, I’m proud to announce the very first official release of Silme – python l10n library. Silme has been announced to mozilla.dev.l10n long time ago, and since then it has been continuously developed in a small, but quite interesting project structure with support from Adrian Kalla, Stefan Plewako, Ricardo Palomares, Staś Małolepszy and management guidance from Seth Bindernagel.

It’s very, very hard to explain Silme concept to those who never tried to work on localization development.

Let me try: It’s like a DOM API for localization.

Works? Probably not… Well. Let me try the descriptive way. Silme is a toolset for a developer who wants to work on localization tools. It can read localization files, it can write them, it can modify them, it can search through them, it can process them, merge, split, localize and help you get some statistics out of the localization files. It probably can juggle them, although support for this is rather experimental.

Categories
main mozilla po polsku tech

Mierzmy to co się liczy – pakiet SEC

Ludzie chcą być pewni, że kiedy surfują po sieci, są bezpieczni. Istnieje wiele ważnych różnic między przeglądarkami internetowymi w zakresie bezpieczeństwa, zatem naturalne jest, że coraz więcej grup stara się porównać przeglądarki przez pryzmat ich bezpieczeństwa. To świetna wiadomość; nie tylko pomaga to użytkownikom, ale także autorom przeglądarek wiedzieć na czym stoją i co mogą poprawiać.

Bardzo ważne jest, aby kiedy mierzysz bezpieczeństwo oprogramowania, mierzyć faktycznie to, co się liczy. Mówiliśmy o tym już nie raz, ale warto powtórzyć: jeśli mierzysz nie to co się liczy, namawiasz autorów oprogramowania, aby kombinowali i obchodzili zasady zamiast faktycznie poprawiać sytuację.

Z czego składa się dobry test bezpieczeństwa?

Nie istnieje jedna zmienna statystyczna który pozwoliłby pokazać w całości sytuację bezpieczeństwa przeglądarek. Każdy szanujący się model pomiarów musi brać pod uwagę wiele czynników. Jednak z całą pewnością istnieją 3 kardynalne czynniki, które powinny leżeć u podstaw każdego dobrze zaplanowanego modelu. Nazywamy je zestawem SEC:

Ważność (Severity) : Dobry model pomiarów będzie kładł nacisk na ważne, pozwalające na automatycznie wykorzystanie, błędy bardziej niż na malutkie błędy lub takie które wymagają, aby użytkownik współpracował z napastnikiem w konkretnej sekwencji. Mierzenie ważności zachęca autorów do naprawiania od początku najważniejszych błędów, a nie nadrabiania dobrego wyniku przez poprawianie mało istotnych zostawiając te największe i najważniejsze z boku.

Okres narażenia (Exposure window) : Niezbyt przydatne jest policzenie absolutnej liczby błędów. Natomiast niezwykle ważne jest dowiedzieć się na jak długo każdy z nich wystawiał użytkownika na ryzyko. Mierzenie okresu narażenia zachęca autorów do naprawiania błędów szybciej oraz do dostarczania poprawek do użytkowników.

Pełne ujawnienie (Complete disclosure) : Wszelkie inne formy mierzenia liczby błędów są prawie nieistotne jeśli nie widzisz wszystkich poprawionych błędów. Niektórzy autorzy w celu zaniżenia swoich wyników, upubliczniają jedynie błędy znalezione przez zewnętrzne źródła, ukrywając te, które odkryły ich wewnętrzne zespoły bezpieczeństwa. Mierzenie wyłącznie zewnętrznie wykrytych luk nagradza autorów, którzy są czysto reaktywni i, co gorsza, nie nagradza tych, którzy budują silne wewnętrzne zespoły bezpieczeństwa. Takie zespoły często wykrywają większość błędów; istotne jest, aby modele statystyczne rozpoznawały i wynagradzały takie podejście.

Jakie jest rozwiązanie?

Jeśli dałoby się łatwo zbudować model który włączyłby wszystkie informacje w sposób uniwersalny, już byśmy go używali. Kiedy rok temu pisaliśmy o naszym projekcie mierzenie bezpieczeństwa, mieliśmy na celu rozwój tych idei oraz zmianę tonu dyskusji.

Jeśli praca nad nim czegoś nas nauczyła, to jest to fakt, że nie da się tego rozwiązać w jeden dzień. Pierwszy krok to ustalenie i jasne wyrażenie czego powinniśmy się spodziewać od każdego pomiaru bezpieczeństwa. Jeśli nie skupia się to na zestawie SEC: Ważność, Okres narażenia i Pełne ujawnienie, zapytaj siebie czemu. A następnie zapytaj tych, którzy ten test wykonali.

Johnathan Nightingale
Ludzka Tarcza

tłumaczenie z blogu johnathana