mozilla

Mozilla Nederland LogoDe Nederlandse
Mozilla-gemeenschap

Apple boekt weer hoge winst door sterke iPhone 6 - NU.nl

Nieuws verzameld via Google - mo, 27/04/2015 - 23:32

NU.nl

Apple boekt weer hoge winst door sterke iPhone 6
NU.nl
4 dagen,15 uren geleden Mobiel Tomtom werkt met Mozilla en Telefónica aan navigatie op smartphones Tomtom is een samenwerking aangegaan met Mozilla en Telefónica om zijn navigatiekaarten en online-apps uit te brengen op smartphones met het ...

en meer »Google Nieuws
Categorieën: Mozilla-nl planet

Philanthropy and the Health of the Internet

Mitchell Baker - mo, 27/04/2015 - 17:30
On Feb. 11, the Ford, Knight, Open Society, MacArthur, and Mozilla, Foundations together launched NetGain:  Working Together for a Stronger Digital Society as a major shared initiative.  The NetGain initiative advocates that building the Internet as an open, global public resource is a social issue in its own right,  and a free and open Internet […]
Categorieën: Mozilla-nl planet

Mozilla monte au créneau contre la loi renseignement - Begeek.fr

Nieuws verzameld via Google - mo, 27/04/2015 - 06:00

Begeek.fr

Mozilla monte au créneau contre la loi renseignement
Begeek.fr
Le fond aussi car la fondation Mozilla s'inquiète tout particulièrement de la mise en place de boîtes noires chez les hébergeurs. Pour l'éditeur, « cette disposition oblige les entreprises à permettre une surveillance gouvernementale de l'activité en ...
Loi renseignement : Mozilla dénonce « une menace pour la vie privée des ...Phonandroid

alle 2 nieuwsartikelen »Google Nieuws
Categorieën: Mozilla-nl planet

Mozilla Firefox Add-on Signing has begun - Ghacks Technology News

Nieuws verzameld via Google - snein, 26/04/2015 - 20:37

Ghacks Technology News

Mozilla Firefox Add-on Signing has begun
Ghacks Technology News
Mozilla announced in February 2015 that it would require add-ons to be signed in the near future to improve security and privacy for users of the browser. The idea here was to reduce the number of malicious extensions released for the browser and here ...
Pale Moon 25.3.2Neowin (press release) (blog)
Fancy Firefox Features ReviewedSecurity Magazine
Firefox 37.0 version release download – security improvements, new features ...REM

alle 4 nieuwsartikelen »
Categorieën: Mozilla-nl planet

Software-update: Pale Moon 25.3.2 - Tweakers

Nieuws verzameld via Google - snein, 26/04/2015 - 10:45

Tweakers

Software-update: Pale Moon 25.3.2
Tweakers
Pale Moon logo (75 pix) Versie 25.3.2 is uitgekomen van Pale Moon. Deze webbrowser maakt gebruik van de broncode van Mozilla Firefox, maar is geoptimaliseerd voor moderne hardware. De Windows-versie van Mozilla Firefox wordt namelijk ontwikkeld ...

Categorieën: Mozilla-nl planet

Mike Conley: The Joy of Coding (Ep. 11): Cleaning up the View Source Patch

Mozilla planet - sn, 25/04/2015 - 23:22

For this episode, Richard Milewski and I figured out the syncing issue I’d been having in Episode 9, so I had my head floating in the bottom right corner while I hacked. Now you can see what I do with my face while hacking, if that’s a thing you had been interested in.

I’ve also started mirroring the episodes to YouTube, if YouTube is your choice platform for video consumption.

So, like last week, I was under a bit of time pressure because of a meeting scheduled for 2:30PM (actually the meeting I was supposed to have the week before – it just got postponed), so that gave me 1.5 hours to move forward with the View Source work we’d started back in Episode 8.

I started the episode by explaining that the cache key stuff we’d figured out in Episode 9 was really important, and that a bug had been filed by the Necko team to get the issue fixed. At the time of the video, there was a patch up for review in that bug, and when we applied it, we were able to retrieve source code out of the network cache after POST requests! Success!

Now that we had verified that our technique was going to work, I spent the rest of the episode cleaning up the patches we’d written. I started by doing a brief self-code-review to smoke out any glaring problems, and then started to fix those problems.

We got a good chunk of the way before I had to cut off the camera.

I know back when I started working on this particular bug, I had said that I wanted to take you through right to the end on camera – but the truth of the matter is, the priority of the bug went up, and I was moving too slowly on it, since I was restricting myself to a few hours on Wednesdays. So unfortunately, after my meeting, I went back to hacking on the bug off-camera, and yesterday I put up a patch for review. Here’s the review request, if you’re interested in seeing where I got to!

I felt good about the continuity experiment, and I think I’ll try it again for the next few episodes – but I think I’ll choose a lower-priority bug; that way, I think it’s more likely that I can keep the work contained within the episodes.

How did you feel about the continuity between episodes? Did it help to engage you, or did it not matter? I’d love to hear your comments!

Episode Agenda

References

Bug 1025146 – [e10s] Never load the source off of the network when viewing sourceNotes

Categorieën: Mozilla-nl planet

Mike Conley: The Joy of Coding (Ep. 11): Cleaning up the View Source Patch

Thunderbird - sn, 25/04/2015 - 23:22

For this episode, Richard Milewski and I figured out the syncing issue I’d been having in Episode 9, so I had my head floating in the bottom right corner while I hacked. Now you can see what I do with my face while hacking, if that’s a thing you had been interested in.

I’ve also started mirroring the episodes to YouTube, if YouTube is your choice platform for video consumption.

So, like last week, I was under a bit of time pressure because of a meeting scheduled for 2:30PM (actually the meeting I was supposed to have the week before – it just got postponed), so that gave me 1.5 hours to move forward with the View Source work we’d started back in Episode 8.

I started the episode by explaining that the cache key stuff we’d figured out in Episode 9 was really important, and that a bug had been filed by the Necko team to get the issue fixed. At the time of the video, there was a patch up for review in that bug, and when we applied it, we were able to retrieve source code out of the network cache after POST requests! Success!

Now that we had verified that our technique was going to work, I spent the rest of the episode cleaning up the patches we’d written. I started by doing a brief self-code-review to smoke out any glaring problems, and then started to fix those problems.

We got a good chunk of the way before I had to cut off the camera.

I know back when I started working on this particular bug, I had said that I wanted to take you through right to the end on camera – but the truth of the matter is, the priority of the bug went up, and I was moving too slowly on it, since I was restricting myself to a few hours on Wednesdays. So unfortunately, after my meeting, I went back to hacking on the bug off-camera, and yesterday I put up a patch for review. Here’s the review request, if you’re interested in seeing where I got to!

I felt good about the continuity experiment, and I think I’ll try it again for the next few episodes – but I think I’ll choose a lower-priority bug; that way, I think it’s more likely that I can keep the work contained within the episodes.

How did you feel about the continuity between episodes? Did it help to engage you, or did it not matter? I’d love to hear your comments!

Episode Agenda

References

Bug 1025146 – [e10s] Never load the source off of the network when viewing sourceNotes

Categorieën: Mozilla-nl planet

Jeff Walden: First Amendment forum doctrine

Mozilla planet - sn, 25/04/2015 - 20:17

Yesterday I discussed government speech, and Texas’s arguments that specialty plates are government speech that individuals can’t compel Texas to make. Today I discuss the First Amendment forum doctrine.

A reminder: yesterday’s disclaimer still holds. In fact this post is probably most likely to contain errors of all the posts in this series. Caveat lector!

Forums

The Supreme Court classifies places (physical and metaphorical) where the First Amendment applies, and freedom of speech requirements hold, in a few different ways. These places are called forums.

Modern ruins of the Roman Forum One of the original forums, the Roman Forum: per Wikipedia, the center of public life in ancient Rome, and a venue for many public speeches (Carla Tavares, CC-BY-SA-3.0 Not a forum

Some places aren’t forums. For example, most public television programs aren’t forums. In such places government may exclude particular viewpoints, topics, and content.

If Texas ran its specialty plate program as a contest, picking a few choices from a vast selection according to its own whims as occurs on public TV, it might not be a forum. (That might also make it government speech.) (Or maybe I’m grasping for a plausible example, and I’ve grasped wrongly. Hedge!) But Texas accepts basically anybody, so it’s a forum.

Traditional public forums

Some forums have always been open places of discussion: traditional public forums. These include public sidewalks and parks. Here, no restrictions on content or viewpoint are permitted (except a very small list). Government may impose reasonable content/viewpoint-neutral restrictions as to speech’s time, place, or manner. But in doing so it must further significant government interests, and restrictions must be narrowly written and leave open ample alternative channels for speech. For example: no use outside park hours, potentially you need a permit granted nondiscriminatorily, don’t exceed noise level limits, stay off grass being reseeded.

Specialty plate programs are a modern invention, obviously not a common-law forum historically open for discussion.

Nonpublic forums

Places that are forums that aren’t traditionally open, that government hasn’t opened to public expression, are nonpublic forums. Examples are courthouses and government buildings: generally, government property reserved for some particular use. Government can employ restrictions on content here, to further those particular interests. Otherwise, restrictions match those in traditional public forums (and particularly can’t restrict speech based on its viewpoint).

Texas invited everyone onto its license plates, opening them to public expression. So Texas’s specialty plate program is not a nonpublic forum.

Designated public forums (and limited public forums)

Finally we have locations not traditionally opened, that government has opened to some public expression: designated public forums. The restrictions applicable in traditional public forums are also applicable in designated public forums.

There’s also an additional sort of forum, sometimes viewed as a subset of the designed public forum, where the government limits speech to certain groups or topics: the limited public forum. A limited public forum may place restrictions on content, but it can’t restrict based on viewpoint.

The various forum definitions logically subdivide the set of all possible forums. (Although to be sure, there remains argument as to what subdivision the Court’s cases have actually recognized.) By process of elimination, Texas’s program must be a designated public forum, possibly a limited public forum.

Recap

Let’s check our work. License plate designs are not traditionally open to ideas, but Texas allows anyone to propose a custom plate design espousing practically any idea whatsoever. The ideas are legion: in-state and out-of-state colleges (even bitter rivals), college sports teams, and professional teams; corporations; non-profits; causes; war veteran status; the whimsical (“Rather Be Golfing”); and many others. The individual selects a specialty plate and displays it publicly. Moreover, Wooley v. Maynard indicates that individuals have First Amendment rights in what their license plates say. So Texas’s specialty plates are public expression, at the government’s invitation.

Texas’s specialty-plate program is a designated public forum, possibly a limited public forum. Hold the question as to which one — we’ll return to this later.

Tomorrow, a discussion of offensive speech.

Categorieën: Mozilla-nl planet

Gervase Markham: Three Forms of Diversity

Mozilla planet - sn, 25/04/2015 - 10:34

I’ve been thinking about the concept of “diversity” recently, and have written some thoughts on the subject, called Three Forms of Diversity. (The title is a play on Three Forms of Unity.)

The piece does include, at the end, a section on the specific applicability of my analysis to the Mozilla community.

Comments, as always, are most welcome. :-)

Categorieën: Mozilla-nl planet

Cameron Kaiser: Achievement unlocked: lack of any social or romantic activity PAYS OFF

Mozilla planet - sn, 25/04/2015 - 00:09
*with two tests suppressed due to big endian

[4484| 0| 0| 0] 100% ==========================================>|1511.7s
PASSED ALL

Yaaaaaay! It's time to get jiggy with it! First, I'll scrub the changesets to remove PPCBC/JM entirely (except for the PowerPC-specific parallel type guards in Baseline inline caches, which are an important optimization); the only other vestiges that shall remain are a couple code snippets from Ben's original work in the new MacroAssembler and the G3/G4 software square root routine from David, which may be replaced with a call to the C library; I'm going to do some profiling there first. (G5 still uses its hardware square root instruction.) After that we'll sprinkle back in gcc 4.6 compatibility, the last branch we will support with this compiler, mix with IonPower, and then try to get the browser up. If I can get the minimp3 seek routine working, MP3 support will be exposed publicly too. We will also unveil our own bespoke browser front page to avoid issues with Electrolysis, which we don't support currently.

In addition, I have some lofty but possible performance goals for IonPower. For these goals, I've selected V8 as the metric because it's a medium-weight benchmark; SunSpider is probably not representative anymore of the bloatier code many sites (especially ad networks, bleah) now foist upon their users, and it is unlikely many Power Macs are braving the really heavy processing JavaScript apps for time reasons (or support reasons: games using WebGL, for example, won't run on TenFourFox anyway) which makes Kraken and Octane less representative as well. The aim is to get the optimized IonPower faster than PPCBC on V8 in Baseline-only mode, and faster than our old JaegerMonkey backend on V8 in full Baseline/Ion mode, which it now supports. The first is definitely achievable, and the second should come awfully close. That should translate into demonstrable real-world improvements on the vast majority of sites vintage Macs still frequent and will also make pdf.js finally viable on TenFourFox.

I treat every ESR release like it's our last, but by the time 38ESR ends, that will mean Power Macs will have had a fully supported branch of Firefox for 10 years after the last Power Mac rolled out of Cupertino. Now, that's support!

ETA for the first beta is 3-4 weeks, with rollout around 38.0.2 to coincide with the end of support for 31ESR. Localizers, stand by!

Categorieën: Mozilla-nl planet

Armen Zambrano: What Mozilla CI tools is and what it can do for you (aka mozci)

Mozilla planet - fr, 24/04/2015 - 22:23
Mozci (Mozilla CI tools) is a python library, scripts and package which allows you to trigger jobs on treeherder.mozilla.org.
Not all jobs can be triggered but those that are run on Release Engineering's Buildbot setup. Most (if not all) Firefox desktop and Firefox for Android jobs can be triggered. I believe some B2G jobs can still be triggered.

NOTE: Most B2G jobs are not supported yet since they run on TaskCluster. Support for it will be given on this quarter.

Using itOnce you check out the code:
git clone https://github.com/armenzg/mozilla_ci_tools.git
python setup.py developyou can run scripts like this one (click here for other scripts):
python scripts/trigger.py \
  --buildername "Rev5 MacOSX Yosemite 10.10 fx-team talos dromaeojs" \
  --rev e16054134e12 --times 10which would trigger a specific job 10 times.

NOTE: This is independent if a build job exist to trigger the test job. mozci will trigger everything which is required to get you what you need.
One of the many other options is if you want to trigger the same job for the last X revisions, this would require you to use --back-revisions X.
There are many use cases and options listed in here.
A use case for developersOne use case which could be useful to developers (thanks @mike_conley!) is if you pushed to try and used this try syntax: "try: -b o -p win32 -u mochitests -t none". Unfortunately, you later determine that you really need this one: "try: -b o -p linux64,macosx64,win32 -u reftest,mochitests -t none".
In normal circumstances you would go and push again to the try server, however, with mozci (once someone implements this), we could simply pass the new syntax to a script (or with ./mach) and trigger everything that you need rather than having to push again and waster resources and your time!
If you have other use cases, please file an issue in here.
If you want to read about the definition of the project, vision, use cases or FAQ please visit the documentation.

Creative Commons License
This work by Zambrano Gasparnian, Armen is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
Categorieën: Mozilla-nl planet

Jeff Walden: Government speech and compelled speech

Mozilla planet - fr, 24/04/2015 - 20:17

Yesterday I discussed specialty plate programs in lower courts and the parties’ arguments in Walker v. Texas Division, Sons of Confederate Veterans. Today I begin to analyze the questions in the case.

But first, a disclaimer.

Disclaimer

The following is my understanding of First Amendment law, gleaned from years of reading numerous free speech opinions, summaries, and analyses. I’m generally confident in this explanation, but I may well have made mistakes, or simply missed nuance present in the cases but not in the summaries I’ve read. Please point out mistakes in the comments.

Of course, I really have no business trying to explain First Amendment jurisprudence, if I want it explained correctly. First Amendment law is incredibly complex. My haphazard reading will miss things.

But I’m barging ahead anyway, for a few reasons. First, I want to talk about this. Second, it’s fun to talk about it! Third, you don’t learn unless you’re willing to look like a fool from time to time. Fourth, the law is not this recondite, bizarre arcana that only lawyers and judges can understand. It may require some work to correctly understand laws, terms of art, rules of statutory construction, and relevant past decisions in the common law. But any intelligent person can do it if they make the effort.

And fifth, nobody with any sense will unconditionally rely on this as authoritative, not when there are far better places to look for the finest in free Internet legal advice.

Government speech

The “recently minted” government speech doctrine occupies an uneasy place in the realm of speech. For when government speech occurs, non-governmental speech open to First Amendment challenge is reduced. There must be some government speech: otherwise we’d absurdly conclude that the government’s World War II war-bond propaganda must be accompanied by anti-bond propaganda. Government programs often have viewpoints suppressible only in the voting booth. But this mechanism is sluggish and imperfectly responsive, and government speech’s discretion can be abused. So it’s best to be careful anointing government speech.


This is your government. This is your government on beef. Any questions?

Certainly some license plates — the state’s default designs and designs ordered by the legislature — are government speech, even if they’re also individual speech under Wooley v. Maynard. In each case the government wholly chooses what it wishes to say, and that message is government speech. The individual’s choice to assist in conveying it, under Wooley, isn’t government speech.

Circularity

But Texas’s government-speech argument, applied beyond plates it designs itself, is laughable. The linchpin of Texas’s argument is that because they control the program, that makes it government speech they can control. This argument is completely circular! By starting from their control over the program’s speech, they’ve assumed their conclusion.

This doesn’t mean Texas is wrong. But their circular central government-speech argument can prove nothing. This logical flaw is blindingly obvious. Texas’s lawyers can’t have missed this. If they made this their lead argument, they’re scrambling.

Compelling Texas to speak?

Texas’s better argument is that vehicle licenses and plates are its program, implicating its right to speak or not speak under Wooley. But the First Amendment restrains government power, not individual power. And many courts (although so far not the Supreme Court) have held that government can be compelled to “speak” in accepting advertising in government-controlled places (public transit systems, for a common example). The problem is Texas voluntarily created a specialty plate program open to all for speech. No “compulsion” derives from a voluntary act.

Texas didn’t fully control the specialty plate program, but rather opened it to anyone with money. (As Chief Justice Roberts noted in oral argument: “They’re only doing this to get the money.”) It’s possible there’s government speech in Texas SCV‘s plate, perhaps the occasionally-proposed “hybrid” speech. But once Texas opens the program to all, it loses full control over what’s said.

How then do we consider specialty plate programs? What controls may Texas exercise? Now we must decide how to classify the specialty-plate program with respect to First Amendment-protected speech. What sort of forum for speech is Texas’s specialty-plate program?

Tomorrow, First Amendment forum doctrine.

Categorieën: Mozilla-nl planet

TomTom Partners with Mozilla, Telefonica for Online Maps - GPS World magazine

Nieuws verzameld via Google - fr, 24/04/2015 - 19:39

myce.com

TomTom Partners with Mozilla, Telefonica for Online Maps
GPS World magazine
TomTom is partnering with Mozilla and Telefónica to bring its Maps Online and Nav Online apps to HTML5-powered Firefox OS smartphone devices. “We're thrilled to offer Firefox OS users TomTom's Maps Online and Nav Online apps in the Firefox ...
TomTom cooperates with Mozilla on navigation on Firefox OSmyce.com

alle 2 nieuwsartikelen »
Categorieën: Mozilla-nl planet

Daniel Stenberg: curl on the NASDAQ tower

Mozilla planet - fr, 24/04/2015 - 18:54

Apigee posted this lovely picture over at twitter. A curl command line on the NASDAQ tower.

curl-nasdaq-cropped

Categorieën: Mozilla-nl planet

Mozilla rejoint la fronde contre le projet de loi sur le renseignement - Le Monde

Nieuws verzameld via Google - fr, 24/04/2015 - 16:43

Le Monde

Mozilla rejoint la fronde contre le projet de loi sur le renseignement
Le Monde
Les mesure présentées par le projet de loi constituent, selon Mozilla, « une menace pour l'infrastructure d'Internet, la vie privée des utilisateurs, ainsi que pour la sécurité des données ». Cette mise au point vient s'ajouter aux nombreuses et ...
Loi renseignement : ''une menace" aux multiples visages juge MozillaZDNet France
Firefox : la fondation Mozilla conteste la loi française sur le renseignementmetronews
Loi renseignement : « une menace réelle » selon la fondation MozillaBegeek.fr
01net -L'Humanité
alle 9 nieuwsartikelen »Google Nieuws
Categorieën: Mozilla-nl planet

Armen Zambrano: Firefox UI update testing

Mozilla planet - fr, 24/04/2015 - 16:42
We currently trigger manually UI update tests for Firefox releases. There are automated headless update verification tests but they don't test the UI of Firefox.

The goal is to integrate this UI update testing as part of the Firefox releases.This will require changes to firefox-ui-tests, buildbot scheduling changes, Marionette changes and other Mozbase packages. The ultimate goal is to speed up our turn around on releases.
The update testing code was recently ported from Mozmill to use Marionette to drive the testing.
I've already written some documentation on how to run the update verification using Release Engineering configuration files. You can use my tools repository until the code lands (update_testing is the branch to be used).
My deliverable is to ensure that the update testing works reliably on Release Engineering infrastructure and there is existing scheduling code for it.
You can read more about this project in bug 1148546.
Creative Commons License
This work by Zambrano Gasparnian, Armen is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
Categorieën: Mozilla-nl planet

Loi renseignement : « une menace réelle » selon la fondation Mozilla - Begeek.fr

Nieuws verzameld via Google - fr, 24/04/2015 - 15:00

Le Monde

Loi renseignement : « une menace réelle » selon la fondation Mozilla
Begeek.fr
De plus, les contours de la loi semblent trop flous pour Mozilla qui estime que « les modalités exactes de ce projet de loi semblent changer fréquemment » et que « les discussions menées secrètement, à huis clos, aboutissent rarement à une législation ...
Loi renseignement : ''une menace" aux multiples visages juge MozillaZDNet France
Mozilla rejoint la fronde contre le projet de loi sur le renseignementLe Monde
Firefox : la fondation Mozilla conteste la loi française sur le renseignementmetronews
Silicon -01net -L'Humanité
alle 10 nieuwsartikelen »
Categorieën: Mozilla-nl planet

Pierros Papadeas: KPI Dashboard on reps.mozilla.org

Mozilla planet - fr, 24/04/2015 - 12:41

Mozilla Reps as a program is full of activities. Reps around the world, do extraordinary  things everyday, promoting Mozilla’s mission and getting new contributors on board.

Moving forward, trying to identify how those activities align with top-tier initiatives, Mozilla Reps program wanted a way to visualize some Key Progress Indicators around the program.

We (the Participation Infrastructure team) sat down with the programmatic owners of Reps (Nuke & Rosana) and identified what numbers and metrics we would like to expose in a much more digestible way, so we can assess the progress of the program on many levels.

We identified 3 different KPIs:

  • Number of Reps (and growth rates)
  • Number of Events (and growth rates)
  • Number of Reports (and growth rates)

… and also 3 different filters you can apply on those numbers:

  • Country
  • Functional Area (of Mozilla)
  • Initiative (associated with Rep, Event or Report)

You can find the spec for this initial iteration here.

We decided to have the filters as drop-downs, applied on the whole page (in combination or one-by-one). Then for each KPI group we would have a time graph for the past 6 weeks (fixed for now) with a HUD of basic numbers and growth rates.

29Technology-wise, we tied the coding of this new dashboard to the delivery of a proper API for the Reps Portal (more info on that soon). The new API enabled us to easily create custom endpoints to calculate the numbers needed for our Reps KPI graphs (based on the existing Conversion Points). Nemo and Tasos did a fantastic work to deliver the new API and the custom endpoints, while making sure that this is not heavy on our DB.

Nikos then worked on the front-end using D3.js as the visualization library to create the graphs dynamically (each time you access the page or you filter using Country, Area or Initiative).

05The overall result is smooth and easily helps you assess progress of various Areas and Initiatives on specific Countries, for Reps, Events and Reports.

You can check out the dashboard here.

Next step would be to introduce a time-slider for customizing the time range you want to be displayed.

Categorieën: Mozilla-nl planet

Loi renseignement : "une menace" aux multiples visages juge Mozilla - ZDNet France

Nieuws verzameld via Google - fr, 24/04/2015 - 11:30

01net

Loi renseignement : "une menace" aux multiples visages juge Mozilla
ZDNet France
Législation : Les déclarations du gouvernement ne convainquent toujours pas, et certainement pas Mozilla qui voit dans le projet de loi renseignement "une menace pour l'infrastructure d'Internet, la vie privée des utilisateurs, ainsi que pour la ...
Mozilla s'inquiète de la Loi sur le renseignement01net
Mozilla s'exprime sur la Loi RenseignementL'Humanité
Loi renseignement : lettre ouverte de la fondation Mozilla au gouvernement ...metronews

alle 6 nieuwsartikelen »Google Nieuws
Categorieën: Mozilla-nl planet

Chris Lord: Web Navigation Transitions

Mozilla planet - fr, 24/04/2015 - 11:26

Wow, so it’s been over a year since I last blogged. Lots has happened in that time, but I suppose that’s a subject for another post. I’d like to write a bit about something I’ve been working on for the last week or so. You may have seen Google’s proposal for navigation transitions, and if not, I suggest reading the spec and watching the demonstration. This is something that I’ve thought about for a while previously, but never put into words. After reading Google’s proposal, I fear that it’s quite complex both to implement and to author, so this pushed me both to document my idea, and to implement a proof-of-concept.

I think Google’s proposal is based on Android’s Activity Transitions, and due to Android UI’s very different display model, I don’t think this maps well to the web. Just my opinion though, and I’d be interested in hearing peoples’ thoughts. What follows is my alternative proposal. If you like, you can just jump straight to a demo, or view the source. Note that the demo currently only works in Gecko-based browsers – this is mostly because I suck, but also because other browsers have slightly inscrutable behaviour when it comes to adding stylesheets to a document. This is likely fixable, patches are most welcome.

 Navigation Transitions specification proposal Abstract

An API will be suggested that will allow transitions to be performed between page navigations, requiring only CSS. It is intended for the API to be flexible enough to allow for animations on different pages to be performed in synchronisation, and for particular transition state to be selected on without it being necessary to interject with JavaScript.

Proposed API

Navigation transitions will be specified within a specialised stylesheet. These stylesheets will be included in the document as new link rel types. Transitions can be specified for entering and exiting the document. When the document is ready to transition, these stylesheets will be applied for the specified duration, after which they will stop applying.

Example syntax:

<link rel="transition-enter" duration="0.25s" href="URI" /> <link rel="transition-exit" duration="0.25s" href="URI" />

When navigating to a new page, the current page’s ‘transition-exit‘ stylesheet will be referenced, and the new page’s ‘transition-enter‘ stylesheet will be referenced.

When navigation is operating in a backwards direction, by the user pressing the back button in browser chrome, or when initiated from JavaScript via manipulation of the location or history objects, animations will be run in reverse. That is, the current page’s ‘transition-enter‘ stylesheet will be referenced, and animations will run in reverse, and the old page’s ‘transition-exit‘ stylesheet will be referenced, and those animations also run in reverse.

[Update]

Anne van Kesteren suggests that forcing this to be a separate stylesheet and putting the duration information in the tag is not desirable, and that it would be nicer to expose this as a media query, with the duration information available in an @-rule. Something like this:

@viewport { navigate-away-duration: 500ms; } @media (navigate-away) { ... }

I think this would indeed be nicer, though I think the exact naming might need some work.

Transitioning

When a navigation is initiated, the old page will stay at its current position and the new page will be overlaid over the old page, but hidden. Once the new page has finished loading it will be unhidden, the old page’s ‘transition-exit‘ stylesheet will be applied and the new page’s ‘transition-enter’ stylesheet will be applied, for the specified durations of each stylesheet.

When navigating backwards, the CSS animations timeline will be reversed. This will have the effect of modifying the meaning of animation-direction like so:

Forwards | Backwards -------------------------------------- normal | reverse reverse | normal alternate | alternate-reverse alternate-reverse | alternate

and this will also alter the start time of the animation, depending on the declared total duration of the transition. For example, if a navigation stylesheet is declared to last 0.5s and an animation has a duration of 0.25s, when navigating backwards, that animation will effectively have an animation-delay of 0.25s and run in reverse. Similarly, if it already had an animation-delay of 0.1s, the animation-delay going backwards would become 0.15s, to reflect the time when the animation would have ended.

Layer ordering will also be reversed when navigating backwards, that is, the page being navigated from will appear on top of the page being navigated backwards to.

Signals

When a transition starts, a ‘navigation-transition-startNavigationTransitionEvent will be fired on the destination page. When this event is fired, the document will have had the applicable stylesheet applied and it will be visible, but will not yet have been painted on the screen since the stylesheet was applied. When the navigation transition duration is met, a ‘navigation-transition-end‘ will be fired on the destination page. These signals can be used, amongst other things, to tidy up state and to initialise state. They can also be used to modify the DOM before the transition begins, allowing for customising the transition based on request data.

JavaScript execution could potentially cause a navigation transition to run indefinitely, it is left to the user agent’s general purpose JavaScript hang detection to mitigate this circumstance.

Considerations and limitations

Navigation transitions will not be applied if the new page does not finish loading within 1.5 seconds of its first paint. This can be mitigated by pre-loading documents, or by the use of service workers.

Stylesheet application duration will be timed from the first render after the stylesheets are applied. This should either synchronise exactly with CSS animation/transition timing, or it should be longer, but it should never be shorter.

Authors should be aware that using transitions will temporarily increase the memory footprint of their application during transitions. This can be mitigated by clear separation of UI and data, and/or by using JavaScript to manipulate the document and state when navigating to avoid keeping unused resources alive.

Navigation transitions will only be applied if both the navigating document has an exit transition and the target document has an enter transition. Similarly, when navigating backwards, the navigating document must have an enter transition and the target document must have an exit transition. Both documents must be on the same origin, or transitions will not apply. The exception to these rules is the first document load of the navigator. In this case, the enter transition will apply if all prior considerations are met.

Default transitions

It is possible for the user agent to specify default transitions, so that navigation within a particular origin will always include navigation transitions unless they are explicitly disabled by that origin. This can be done by specifying navigation transition stylesheets with no href attribute, or that have an empty href attribute.

Note that specifying default transitions in all situations may not be desirable due to the differing loading characteristics of pages on the web at large.

It is suggested that default transition stylesheets may be specified by extending the iframe element with custom ‘default-transition-enter‘ and ‘default-transition-exit‘ attributes.

Examples

Simple slide between two pages:

[page-1.html]

<head> <link rel="transition-exit" duration="0.25s" href="page-1-exit.css" /> <style> body { border: 0; height: 100%; } #bg { width: 100%; height: 100%; background-color: red; } </style> </head> <body> <div id="bg" onclick="window.location='page-2.html'"></div> </body>

[page-1-exit.css]

#bg { animation-name: slide-left; animation-duration: 0.25s; } @keyframes slide-left { from {} to { transform: translateX(-100%); } }

[page-2.html]

<head> <link rel="transition-enter" duration="0.25s" href="page-2-enter.css" /> <style> body { border: 0; height: 100%; } #bg { width: 100%; height: 100%; background-color: green; } </style> </head> <body> <div id="bg" onclick="history.back()"></div> </body>

[page-2-enter.css]

#bg { animation-name: slide-from-left; animation-duration: 0.25s; } @keyframes slide-from-left { from { transform: translateX(100%) } to {} }

I believe that this proposal is easier to understand and use for simpler transitions than Google’s, however it becomes harder to express animations where one element is transitioning to a new position/size in a new page, and it’s also impossible to interleave contents between the two pages (as the pages will always draw separately, in the predefined order). I don’t believe this last limitation is a big issue, however, and I don’t think the cognitive load required to craft such a transition is considerably higher. In fact, you can see it demonstrated by visiting this link in a Gecko-based browser (recommended viewing in responsive design mode Ctrl+Shift+m).

I would love to hear peoples’ thoughts on this. Am I actually just totally wrong, and Google’s proposal is superior? Are there huge limitations in this proposal that I’ve not considered? Are there security implications I’ve not considered? It’s highly likely that parts of all of these are true and I’d love to hear why. You can view the source for the examples in your browser’s developer tools, but if you’d like a way to check it out more easily and suggest changes, you can also view the git source repository.

Categorieën: Mozilla-nl planet

Pages