Gervase Markham: Mozilla and Proprietary Software |
Mozilla is both a principled organization and a pragmatic one.
Mozilla products run on proprietary operating systems, and on proprietary hardware. We are in the mobile OS business, and no-one, not even the mighty Google, has yet been able to make a 100% open source phone available in commercial quantities. So proprietary software is part of Mozilla’s life. But I think most people in our community would be rightly upset if Mozilla decided, for example, to take advantage of the provision in the MPL which would allow us to ship proprietary builds of Firefox on the desktop.
So, the question arises: where’s the line? Where in the big picture is it OK for proprietary software to be, and where is it not OK?
“You don’t have to make a case for open. You have to make a case for not open.” — Johnathan Nightingale
Over time, this question has been arising in a number of different contexts. And I think the answers we might give at the Mozilla project would be different to those you might hear from the FSF, or the Apache project, or the Android project, to name but three points on a wide spectrum of opinion. So I think it would be a productive conversation to try and work out some principles in this area – or, at least, to gauge the range of opinion. As johnath says, if we are using or distributing closed software, we need to make an active case for why we are doing it.
This post is therefore a discussion starter, and outlines where I currently think the line is – i.e. where a reasonable case can be made for closed, and where it cannot. It could be in the future, a case can be made for additions to, removals from or modifications of this list. But having a defined list at least helps to make it more clear what is a new situation where a case needs to be made, what is another example of something we’ve done before.
Note that this post represents my opinion only, and is not official Mozilla policy. Although it speaks of things that currently are, as well as things that currently are not, for ease of reading, I will write directly rather than using conditional language (i.e. “will” rather than “should”).
Rationale: Manifesto Principle 7.
Example of A): the Direct3D DLL, included under the Binary Components policy. Example of B): hardware drivers for Firefox OS.
These situations are seen as sub-optimal and we look for opportunities to eliminate them, as opportunity and market power permit. They are not seen as precedent-setting. This is a negotiating point in discussions with hardware manufacturers, particularly for reference devices.
In the past, we shipped the “Talkback” crash-reporting software, which did not fall under either of these exceptions. We now use the open source Breakpad. This replacement took seven long years to arrive. Now that Talkback is gone, we should not go back there.
Rationale: without such exceptions, we can’t ship competitive products (or, in the case of B, any products at all). But we need to define them tightly.
Example: most JavaScript on the web today.
Rationale: without this, our products would effectively not browse the web at all.
Rationale: same as above, plus requiring that all default partner apps be free software means many popular apps could not be bundled, making our offering much less compelling. If we allow users to install proprietary apps, there is not significant additional harm in bundling (uninstallable) ones. Requiring arbitrary platform additions to be open source is necessary to allow users to build updated versions of the software for their phones. (Binary driver blobs use a known API and, while it’s sub-optimal, can be copied from official builds into user ones.)
Rationale: Mozilla stands up for user freedom, including the freedom to hack one’s phone, and update the OS even when the vendor has ceased support.
Example: Cisco’s H.264 binary builds made from OpenH264. (Note: the exact user experience in this case has not yet been determined. I am just saying that I think it would be OK if Firefox downloaded and installed this software automatically.)
Rationale: Software patents suck. Because Cisco have made H.264 free-as-in-price at the point of use for everyone, we managed to get a draw in this particular round of the codec wars. (The other options were much worse.) But fighting patents is done at the standards and industry level, not at the “make every user click a button” level. If the source is open and the binaries are deterministically built, then users are using binaries of free software which is bit-for-bit identical to that we could build for them ourselves, and so requiring a user confirmation here gains us nothing.
Example: Firefox OS Marketplace, addons.mozilla.org. (Unfortunately, license metadata is not currently collected or available for searching.)
Rationale: some people, including members of our community and vocal Mozilla supporters, wish to avoid using proprietary software; we should help them make choices in line with their ethics.
Example: Mozilla allows users to download proprietary Firefox add-ons through the Add-On Manager UI. The Plugin Finder Service will point users at downloads of proprietary plugins such as Flash. But all require at least one explicit confirming click to install.
Rationale: some people, including members of our community and vocal Mozilla supporters, wish to avoid executing proprietary software; we should not sneakily run it on their systems. However, even offering it is enough for Firefox to not be in the FSF’s directory of free software. :-|
Examples: Safe Browsing, geolocation.
Rationale: Mozilla is starting efforts in geolocation, speech recognition and translation to either replace or avoid depending on proprietary services in these areas. But building e.g. a replacement for Google Safe Browsing, which protects many, many Firefox users from malware and phishing every day, would be a mammoth undertaking. And removing it would put our users at significant risk. Endpoint URL configurability allows people to reverse-engineer service APIs and implement alternatives which Firefox can then easily use.
Example: Release builds of Firefox on Windows are built using Microsoft Visual Studio, and most developers on Windows use it for their builds too.
Rationale: if one is using a proprietary OS, there seems no additional harm in using proprietary build tools.
Example: Mozilla uses Vidyo, and so Mozillians who want to use it have to use the proprietary Vidyo client, or Flash. But we are developing WebRTC in the browser, and hope that thereby solutions will emerge where people can participate in multi-party video using only open source software. We are also trying to get the SIP gateway working (that bug is restricted to the ‘infra’ group so you may not be able to see it) so people can video-call in using free software.
Rationale: we should not compromise our effectiveness by using significantly sub-standard tools; but as a member of the wider open source community and as a public benefit organization, we have a responsibility to grow the commons in areas where we have an interest.
Example: Windows, Office, internal payroll or HR systems. (Vidyo doesn’t quite break that last rule, as someone can still dial in to any meeting by phone.)
Rationale: there are no effective substitutes for some of this software. However, we should not lock free software advocates out of full participation in our community.
http://feedproxy.google.com/~r/HackingForChrist/~3/4KvvwVvXJ-w/
|
Soledad Penades: EdgeConf London, Audio Tags, and Web MIDI |
I am going to be in the Web Components panel at EdgeConf London tomorrow (21th of March).
Being the perfectionist nit-picky person I am, and having never been in a panel of this type, I’m obsessed with getting ready and reading as much as I can on the subject. Still have a bunch of proposed questions to go through, but I hope I’ll do good. Wish me luck!
The conference is supposedly going to be streamed live and talks recorded and professionally subtitled, which is awesome because speech recognition and my command of English don’t seem to mix.
Also, I forgot to post about my latest Mozilla Hacks article: Audio Tags: Web Components + Web Audio =
http://soledadpenades.com/2014/03/20/edgeconf-london-audio-tags-and-web-midi/
|
Daniel Glazman: Samsung Web Tech Talk on JavaScript trends |
Samsung Research America will host a meetup about JavaScript trends in its San Jose R&D center on the 7th of april. This is a free event and anyone can attend.
Date: 07-apr-2014
Time: 5pm - 8pm
Location: 95 Plumeria Drive, San Jose, CA
Agenda:
Feel free to attend using the link at the top of this article!
|
Rebeccah Mullen: Nice to grow you, Mozilla! |
How did we bring Mozillian values into some of the most ‘walled gardens of content’ we know? I’m happy to paint the broad strokes, notable moments and results for you right here. Take a look at the links at the end for a deeper dive on how it all worked out, channel by channel.
During my two years at Mozilla, I built new social communities on Facebook, Twitter, Tumblr and more for the Mozilla Foundation and for Webmaker.org. In those two years, my work attracted over 265,000 new followers on social media, primarily through engaging content, clear messaging and a robust publishing schedule.
When I joined the Foundation in early 2012, it had a minimal social presence: one Twitter channel with 6,000 followers, a Facebook Page with only 303 Likes (and over a dozen competing and confusing fan pages), and no Tumblr. The challenge was to balance attracting new followers to contribute to and use new educational products like Webmaker.org and Lightbeam for Firefox, and to build a movement to raise support (and funds) based on our values and mission on the Mozilla channels.
Our social strategy had to serve multiple goals ~ from welcoming individual contributors to our projects each day to sharing major breakthroughs from across the entire organization to the world at large ~ all the while scaling our growth upwards from within the fastest product development atmosphere I’ve ever encountered.
My overall approach was to use traditional content-marketing tactics (for the forces of goodness!) to build a strong communications platform for Mozilla on social media. I was able to create fresh opportunities to tell the Mozilla story, history and mission to a vast audience who were aware of Mozilla’s products (like Firefox) but perhaps had no idea Mozilla was a non-profit, that it engaged in political advocacy (SOPA & much more), that it is an Open Source project, or that volunteers help build their products.
I wanted to focus on these stories, expose the incredibly diverse work we were engaged in, reach out to many thousands of people who share our values, and create opportunities to contribute to the cause.
I worked with Facebook to establish a verified Page, set up new scheduling and tracking tools, created (and shut down in some cases) product channels to streamline messaging and support engagement teams, and coordinated with project teams to ensure I was bringing out the best from Mozilla.
I built campaigns around our overall organizational objectives and programmed them across select channels to engage new and existing followers and to drive us towards aggressive growth targets I felt the Mozilla name deserved and warranted. I grew to understand each audience by listening to their interests, following their heroes, and striking up conversations when I found an opportunity. I also produced absolute gigabytes of custom content.
We won those followers through earned media and sweat!
Early on, I brought social media and website metrics analysis into my daily routine – which presented me with actionable insights about our follower’s demographics and interests, especially useful when building our Webmaker.org outreach strategy for global initiatives like Maker Party and for geo-targeted campaigns like MakeThingsDoStuff in the UK.
I also kept track of moments when the metrics might lead to unexpected results or incorrect conclusions – such as when I learned that our Facebook channel had unusually high engagement centered in Egypt at one point in time. This turned out to be an active sub-community interested in discussing mobile devices and not the results of a recent privacy campaign – keeping track of the different influences on your global channels is important!
A typical day in early 2013 might include capturing, editing and posting a video clip of Douglas Rushkoff speaking on a community call, promoting a global ‘Maker’ campaign in multiple timezones, finding and sharing six Webmaker projects made by young women learning code for the first time, tweeting back and forth with TechCrunch about a new product update, chatting with my MozRep buddy Gauthramraj about his letter from our executive director on Facebook, and chasing Wil Wheaton for a comment on Open Source on Tumblr. And learning to code a little better than the day before – always that!
The work and preparation put into these channels was incredibly successful, as shown in the highlights below.
Attracted 265,000 new followers (2012: 73,350 / 2013: 179,000), doubling audiences on all channels year-over-year
Planned and produced our social media editorial calendars, branded content and campaigns, and I personally published over 4,000 individual posts on social media in 2013 (that’s equal to 10 per day, for 365 days!)
Boosted engagement averages for each channel by 250% or more and developed each channel with a consistent set of content styles, voice, and publishing schedule
Project Managed and contributed to 2012’s award winning videos for the Webmaker project (Meet the Webmakers & Young Webmakers) and also project managed the Mozilla Story 2012 update
Provided my team metrics reporting and analysis using Google Analytics, Union Metrics, WebTrends, BSD, Hootsuite, Simply Measured and Alto Analytics
Both the Mozilla and Webmaker channels gained steady growth over the two years I managed the channels – reaching ever higher exponential growth as various tactical bugs and strategies came into play (such as landing our Follow links on the footer of Mozilla.org’s homepage)
Everything is important when you start from scratch – from small scale community get-togethers under the Webmaker brand, to large product and PR promotions like the Mozilla Festival, I found every possible opportunity to bring positive and relevant material back to the community and encouraged them to step onto our on-ramps every chance I got.
Our annual events became key opportunities to lead Mozilla’s best and brightest participants up the engagement ladder towards greater contribution and community participation.
Some of the Engagement accomplishments I’m most proud of were:
Launching many awesome hashtags: Mozilla Festival’s #mozfest was shared 10,295 times since Oct 2013, the #makerparty tag was shared over 7,300 times since May 2013, and the fundraising tag #lovetheweb saw over 3,000 hits in just 30 days (Dec 2013)
Promoting the annual Maker Party campaign by identifying, celebrating and highlighting active followers, which helped to foster a global community willing to host over 2,400 events, and who made over 50,000 projects in 2013 alone (one group decided to catch our attention with a 48-hour hackathon!)
Supported the launch of the Lightbeam for Firefox tracking tool by livetweeting the launch and Reddit AMA from London’s Mozilla Festival, securing 11th place on Reddit‘s homepage, and helping it reach over 2M downloads
Drove attendance to Mozilla’s largest public event, the Mozilla Festival, which grew from 600 to 1,400 attendees in under two years
Provided extensive product and marketing support for the launch of Webmaker.org, as well as for many others such as: Hive Learning Network, Open News, Open Badges, Mozilla Festival, Mozilla Ignite, Popcorn Maker at TED, Thimble and Lightbeam for Firefox
Established channels & workspaces for Engagement and Mentor teams (G+ Community, Hootsuite working group, Lanyard contact list, ScribbleLive streams, and WordPress template design)
Supported community members at all possible times by promoting events and engagement opportunities, celebrating stellar efforts among our members, and reaching out for every possible conversational opportunity – and making great friends in the process!
For a deeper dive into how I achieved these goals – check out the Case Studies below:
|
Rebeccah Mullen: Mozilla Facebook |
Mozilla’s Facebook audience is multilingual & globally diverse – even at the outset when we had only 303 followers. Contribution on-ramps, peer-to-peer celebration, clear explanations of our new initiatives, and telling the world about our history and mission were my primary goals.
My secondary goal was to make our Product Support channels more visible, and to answer as many messages with relevant links into the Support systems as possible. People who came looking for technical solutions, became people who liked our stories and shared our messages.
On Facebook I found active Mozillian voices in communities as diverse as Thailand, Ireland, and Romania, and also many ‘tech-curious’ individuals across the globe. I listened to the community and learned to create stories and content that celebrated their interests, as well as showing how our work impacted them in multiple ways.
There were many strategic concerns - ranging from using a simpler writing style, with simpler phrasing, word choices and less technical jargon (because until the channel content could be fully translated and localized, most messaging would default through Facebook’s comment translation tools) to ensuring I kept up to date with multiple platform changes (which both offered me greater control in geo-targeted messaging, but also constantly complicated metrics analysis with every update).
Building community, attracting discussion and opportunities for learning and educating abounds on Facebook. I believe it is the social medium that is most honestly reflective of personal values and shared affinities, and by focusing on content that united all followers together, Facebook became my most successful engagement platform and the one I’m most proud of.
The strategy:
Results:
|
Rebeccah Mullen: Mozilla on Twitter |
I established early on through metrics analysis that our primary audience were developers and technologists, and supporters of the Mozilla Mission (people invested in Open Source and keeping the Open Web free, and people concerned about privacy, transparency and equal rights for web users on a global scale).
My primary goal was to help grow our community of passionate contributors (One Million Mozillians!) by developing a compelling content strategy that reached out to new followers with similar interests and concerns, and positioning Mozilla as a fundamental actor in those spaces by sharing our product development, educational initiatives, political activism, and collaborative partnerships.
My secondary objective was to draw fans of the Firefox products towards our other products, initiatives and public facing events around the globe, to help unite the different communities of supporters I found all over social media.
Strategy:
Results:
Mozilla Unlocks the Power of the Web on Mobile with Firefox OS: http://t.co/pJmHFy0MsI @firefox
— Mozilla (@mozilla) February 24, 2013
With our 15th anniversary coming up, we wanted to remember our roots and bring the red dino out for a victory lap: http://t.co/E6RleeWwiO
— Mozilla (@mozilla) March 21, 2013
How might your choice of browser affect your job prospects? @TheEconomist Explains: http://t.co/JCnEq3Cuvo
— Mozilla (@mozilla) April 14, 2013
It’s not too late to make a wonderful card for #mothersday & learn to code at the same time: http://t.co/sqjUFsxdR5
— Mozilla (@mozilla) May 12, 2013
This Plan To End Government Spying Has Grown So Big It Might Actually Work: http://t.co/SzfCVc4OGf @stopwatchingus @Julie188
— Mozilla (@mozilla) June 28, 2013
Did you say Free T-Shirt from Mozilla for filling out a http://t.co/LvSTJmbdIg survey? http://t.co/OjWh5rjEua (Yes, yes we did.)
— Mozilla (@mozilla) August 12, 2013
Designers take note – the new Firefox OS Typeface, the Fira font family, is available for free: http://t.co/Bk9S3oEk6Z
— Mozilla (@mozilla) September 16, 2013
Our Mozilla #Lightbeam @reddit_AMA begins now: Ask Us Anything! http://t.co/IDGvnkUZqO Our Proof: http://t.co/1OPVFBqdte
— Mozilla (@mozilla) October 27, 2013
In the next few days, the way #Firefox looks will change. Be the first to know what’s new: http://t.co/6OaDNh44Mp
— Mozilla (@mozilla) November 20, 2013
|
Rebeccah Mullen: Webmaker on Twitter |
The Webmaker twitter account, established in March 2013, was developed as a hub for publishing Webmaker’s remixable content and promoting community event listings. The channel grew towards outreach, engagement and user support as it evolved, and was supplemented by regular product updates and co-building CTA’s.
The Webmaker channel has played host to many Mozilla events and campaigns, primarily Mozilla Festival, Make Stuff Do Things, and annual global Maker Party Campaigns.
Strategy:
Results:
How to make your own open source #HTML5 game. Just in time for #GDC13: http://t.co/5P6QEj7H15 #webmaker — Mozilla Webmaker (@webmaker) March 27, 2013
Team Hoodie and @espylaub make a dedicated plan to deliver Offline First Apps: http://t.co/N8yCpz5C9I #mozfest — Mozilla Webmaker (@webmaker) November 11, 2013
Photo of the Day: #MakerParty Newcastle ‘Ben IS fantastic!’ http://t.co/ksSdvxVc7J — Mozilla Webmaker (@webmaker) September 26, 2013
Looking for a little Webmaking in your April Fool’s Day pranks? Try our project for an easy win: http://t.co/Lmw7dV9SQl @webmaker — Mozilla Webmaker (@webmaker) April 1, 2013
|
Rebeccah Mullen: Webmaker Tumblr |
The Webmaker Tumblr channel saw the fastest early growth of all our channels – from 0 to 190,000 in just under one year – primarily due to savvy placements on the Tumblr Radar, consistent content themes advocating ‘making as learning’ and offering direct on-ramps to Webmaker tools and projects for users to experiment with.
Our original primary audience were ‘people learning to code, and make things online’ so our content focused on cool learn-as-you-make projects to try and share as well as events promotions for people who were seeking inspiration, tools, community and mentorship in the new ‘Maker Movement’.
Later we pivoted this channel to capture a more general audience with an ‘I love the Web’ campaign, and celebrated global ‘Maker’ events and partner initiatives, including the Mozilla Festival and Make Things Do Stuff campaigns.
Strategy:
Results:
|
Rebeccah Mullen: Mozilla’s EOY Fundraising Campaign |
Mozilla’s end-of-year campaign goal hit $1.2M in individual donations — nearly double the return on the previous year’s campaign. Starting in November, the Communications team used e-mail, social media, and the Firefox Snippet to tell our shared story, engage new contributors, and grow the pool of resources needed to support Mozilla’s continued ability to advocate for the open web.
I worked with campaign designer Andrea Wood to co-create a social media strategy that encouraged supporters to:
I worked with Andrea to develop campaign messaging offering a wide range of take-action moments and settling on a versatile, positive ‘share-the-love’ message that worked across all channels. I also prepared visual materials for social channels, iterating on the brand design to create multiple share graphics for Tumblr and Facebook. I wrote, scheduled and published over 100 tweets, posts and channel updates and supported an aggressive ‘favoriting’ campaign over the Christmas holidays to thank supporters.
http://bosslevel.ca/2014/03/19/mozillas-fundraising-campaign/
|
Rebeccah Mullen: Webmaker Product Launch – Creative Branding |
Meet the Webmakers (click link or image to view)
Young Webmakers (click link or image to view)
Concept development, script writing, project management
Project management and creative development for 2012’s award winning promotional videos for the Webmaker project (Meet the Webmakers & Young Webmakers); collaboration resulted in earning the SmartBubble Society the Real Player Video Visionary Award for Education in 2012 as well as the RGD | Social Good Design Award for Non-Profits 2012
About the project:
The Webmaker Video series was designed to engage audiences and promote the Webmaker Suite of Tools. I worked with the SmartBubble Society to create a series featuring web literacy Evangelists and thought leaders whose visual testimonials would inspire audiences to become Webmakers themselves.
From casting notes to conceptual development, scriptwriting and editing direction, project management and scheduling – I moved these projects across the finish line.
The results are beautiful – our Evangelists are enhanced with an overlay of digital infographics that both display elements of accurate code (javascript, HTML, etc.) that established Webmakers and experts would recognize, and that visually express the narrative elements of their stories.
The videos were featured on Mozilla.org homepage, Firefox & Me newsletter, and a wide variety of promotional and press materials.
Webmaker Video Brand – Mozilla Festival Loop
Creative direction, project management
Project management and creative direction for a video bumper and interstitial series to display throughout Ravensbourne College, host of the Mozilla Festival which featured the Webmaker launch as it’s primary Keynote for 2012.
About the project:
The perpetually in-motion branding visuals flooded the monitors on 9-floors of Mozilla’s Festival space, creating an atmosphere of excitement and focus on the Foundation’s primary Education initiative. Used as a standalone clip and also as an interstitial bumper between selected slides and video clips throughout the day, the graphics sequence generated by award-winning Motion Visual Designer, Bienvenido Cruz created a polished articulation of the logotype (a needle and thread sewing a badge) in action and added visual excitement and a broadcast-level professional polish to the overall product launch assets.
Graphic Design, Pre-press
Layout and prepress production for custom vinyl standing banners.
About the project:
Branding visuals for many Mozilla projects were prepared for over 9-floors of Mozilla’s Festival space – however late stage updates to the Webmaker Logo design resulted in a last minute call for floor banners to display during the Product Launch at the event.
I come from a graphic design and content management background and was able to assist our busy Graphic Design lead with this last minute request for 12 press-ready banners to be produced in the UK.
Summer Code Party Launch Events – Google Map Version
Graphic Design, Google Maps
An early stage interactive Google Map for our first Webmaker Summer of Code initiative in 2012 – promoted on Launch weekend.
Graphic Design, Map Illustration
When the communications team needed a clear representation of our success in engaging followers to participate in our annual Webmaking campaign, I produced an accurate visual asset that told the tale of our global impact.
At various times, I collaborated or created fun, remixable and timely projects to support social outreach and varying messaging objectives. Some of my favorite contributions include:
All Hands Weekly Updates using Webmaker Tools (Popcorn Maker presentation)
I used our Popcorn Maker Tool (part of the Webmaker.Org suite of tools) to mix audio tracks, custom images and web content into a presentation package to share on our Monday Mozilla All-Hands public meeting. I produced 6 Popcorn Updates in total.
I developed the concept for a Thimble project that showed learners both how to remix code.
Noticing an opportunity to support a giant community of well-wishers during our partnership with the Born This Way Foundation, I created a graphic border featuring the pop star, Lady Gaga, and encouraged her well wishers to add their videos to it and share with their community.
|
Planet Mozilla Interns: Willie Cheong: Release Readiness DashboardRules for Scoring |
Looking back at groups of queries, we know that each individual group is a metric that the Release Management team cares about when deciding on the release readiness of that particular version. One of the key objectives of the dashboard is being able to automatically compute a release readiness score based on important metrics. In the screenshot above, we notice that two of the groups have titles with colored backgrounds (green), indicating the status of that group.
Statuses of each group on the dashboard are denoted by 3 primary colors of green
, yellow
, and red
. To automatically determine the status of individual groups, computational rules must be scripted. In a future implementation, individual group statuses in each version will also be able to be aggregated for computing an overall release readiness score for the particular version.
To script a rule for any group, hover over the group and click on the tachometer like in the above screenshot. This will bring up a modal containing the boilerplate for scripting rules for that group as shown below. The user copies the JavaScript in the text area, and pastes it into a js
file as shown in the specified directory. Scripting can begin immediately after that, with inline comments available to provide guidance if necessary. Note that if a user scripting a rule does not have deployment rights, the stack owner must be contacted at the end to upload the script file.
In the background, every time a version view is loaded the server checks for the existence of /assets/rules/rule_[group_id].js
for each group that will be loaded. If found, the script file is loaded on the view and executed when data is returned from the Elastic Search cluster that mirrors Bugzilla. The resulting status color from executing the rule is then applied to its corresponding groups’ title. Using an architecture like that, we reap the benefits of:
/assets/rules/rule_[group_id].js
if group has rule, delete the file otherwise. i.e. scripting rules for a group is optional.http://blog.williecheong.com/release-readiness-dashboardrules-for-scoring/
|
Daniel Glazman: A better CSS OM for parsed values |
A large part of the current CSS Object Model sucks. More specifically, the CSSValue, CSSPrimitiveValue, CSSValueList, RGBColor, Rect and Counter interfaces are so poorly designed they're not implemented. I just tried to implement them for a project of mine and I must say the model is so weak and incoherent it cannot be implemented as is.
I have then tried to refine what's in the 2000-nov-13 spec of DOM Level 2 Style to reach something workable. I am NOT saying this has to be done or implemented. Call it a mental exercise I did just for fun, w/o caring about performance.
Let's first look at what's wrong:
interface CSSValue { // UnitTypes const unsigned short CSS_INHERIT = 0; const unsigned short CSS_PRIMITIVE_VALUE = 1; const unsigned short CSS_VALUE_LIST = 2; const unsigned short CSS_CUSTOM = 3; attribute DOMString cssText; // raises(DOMException) on setting readonly attribute unsigned short cssValueType; };
"inherit" is here considered as a special identifier despite of the fact a CSSPrimitiveValue can be a CSS_IDENT. There is no UnitType for "initial". A CSS_CUSTOM is, according to the spec, a "custom value"; but a custom value still has to be valid per CSS syntax so it should be representable with CSS_VALUE_LISTs and CSS_VALUEs.
interface CSSValueList : CSSValue { readonly attribute unsigned long length; CSSValue item(in unsigned long index); };
All in all, this one is simple and should be quite ok. But one thing is missing: a property can accept a comma-separated list of whitespace-separated values. The current CSSValueList cannot express if the serialization of a CSSValueList should be whitespace- or comma-separated.
interface CSSPrimitiveValue : CSSValue { // UnitTypes const unsigned short CSS_UNKNOWN = 0; const unsigned short CSS_NUMBER = 1; const unsigned short CSS_PERCENTAGE = 2; const unsigned short CSS_EMS = 3; const unsigned short CSS_EXS = 4; const unsigned short CSS_PX = 5; const unsigned short CSS_CM = 6; const unsigned short CSS_MM = 7; const unsigned short CSS_IN = 8; const unsigned short CSS_PT = 9; const unsigned short CSS_PC = 10; const unsigned short CSS_DEG = 11; const unsigned short CSS_RAD = 12; const unsigned short CSS_GRAD = 13; const unsigned short CSS_MS = 14; const unsigned short CSS_S = 15; const unsigned short CSS_HZ = 16; const unsigned short CSS_KHZ = 17; const unsigned short CSS_DIMENSION = 18; const unsigned short CSS_STRING = 19; const unsigned short CSS_URI = 20; const unsigned short CSS_IDENT = 21; const unsigned short CSS_ATTR = 22; const unsigned short CSS_COUNTER = 23; const unsigned short CSS_RECT = 24; const unsigned short CSS_RGBCOLOR = 25; readonly attribute unsigned short primitiveType; void setFloatValue(in unsigned short unitType, in float floatValue) raises(DOMException); float getFloatValue(in unsigned short unitType) raises(DOMException); void setStringValue(in unsigned short stringType, in DOMString stringValue) raises(DOMException); DOMString getStringValue() raises(DOMException); Counter getCounterValue() raises(DOMException); Rect getRectValue() raises(DOMException); RGBColor getRGBColorValue() raises(DOMException); };
This is so completely crazy I don't know where to start...
interface Rect { readonly attribute CSSPrimitiveValue top; readonly attribute CSSPrimitiveValue right; readonly attribute CSSPrimitiveValue bottom; readonly attribute CSSPrimitiveValue left; };
This looks and smells like a CSSValueList far too much.
interface RGBColor { readonly attribute CSSPrimitiveValue red; readonly attribute CSSPrimitiveValue green; readonly attribute CSSPrimitiveValue blue; };
This cannot represent rgba(), hsl() and hsla() colors. We also have to use three CSSPrimitiveValue for the three color components because they can be a percentage or an integer...
interface Counter { readonly attribute DOMString identifier; readonly attribute DOMString listStyle; readonly attribute DOMString separator; };
Again, something is missing here: nothing says if it's supposed to be a counter() or a counters() value. And no, the separator could not do the trick since it can be the empty string.
To have a better OM for Values, i.e. an extensible OM that allows an application to deal with parsed values of all kinds, we need to change of perspective. First, the list of reserved idents, the list of units and the list of functions are not extensible. Secondly, we have cast issues between PrimitiveValues and ValueLists and we need a single interface. We can deal with all the issues with a single CSSValue interface:
interface CSSValue { // ValueTypes const unsigned short CSS_SYMBOL = 0; const unsigned short CSS_NUMBER = 1; const unsigned short CSS_UNIT = 2; const unsigned short CSS_STRING = 3; const unsigned short CSS_URI = 4; const unsigned short CSS_IDENT = 5;
const unsigned short CSS_VALUE_LIST = 6; readonly attribute unsigned short type; attribute boolean commaSeparated;
readonly attribute unsigned long length;
CSSValue item(in unsigned long index);
raises(DOMException);
void setFloatValue(in float floatValue) raises(DOMException); float getFloatValue() raises(DOMException);
void setStringValue(in DOMString stringValue) raises(DOMException); DOMString getStringValue() raises(DOMException); };
An integer indicating the type of the Value
CSS_SYMBOL
/
character in the font shorthand
property. The value can be obtained by the getStringValue()
and set by the setStringValue()
method.CSS_NUMBER
getFloatValue()
method and set through by setFloatValue()
method.CSS_UNIT
getFloatValue()
method and
set through by setFloatValue()
method. The unit part of
the value can be obtained by using the getUnit()
method
and set through by setUnit()
methodCSS_STRING
getStringValue()
and set by the setStringValue()
method.CSS_URI
url()
function
can be obtained by the getStringValue()
and set by the setStringValue()
method.CSS_IDENT
getStringValue()
and set by the setStringValue()
method.CSS_VALUE_LIST
getStringValue()
method does not reply the empty string. The list of values is
whitespace-separated if the commaSeparated
attribute is
false and comma-separated otherwise.type
of type unsigned short
, readonlycommaSeparated
of type boolean
type
attribute is CSS_VALUE_LIST
. The list is
whitespace-separated if the attribute is false and comma-separated
otherwise.length
of type unsigned long
, readonlyCSSValue
in the list. The range of valid
values of the indices is 0
to length-1
inclusive.CSS_VALUE_LIST
.getFloatValue
CSS_NUMBER
or the number part
of the value of a CSS_UNIT
. If this CSS value is not a CSS_NUMBER
or a CSS_UNIT
, a DOMException
is raised. float
The float value of this CSS_NUMBER
or CSS_UNIT
CSS_NUMBER
nor a CSS_UNIT
.getStringValue
CSS_SYMBOL
, retrieves the single character used as
a symbol.CSS_STRING
, retrieves the string. Enclosing quotes
or double-quotes are NOT included.CSS_UNIT
, retrieves the unit of the value.CSS_URI
, retrieves the argument of the url(...)
notation. Enclosing quotes or double-quotes are NOT includedt.CSS_IDENT
, retrieves the identifier.CSS_VALUE_LIST
and if that list of values is
passed as the parameters of a function, retrieves the function name.
Retrieves the empty string otherwise.CSS_NUMBER
and CSS_UNIT
, a DOMException
is raised. DOMString
The float value of this CSS_NUMBER
or CSS_UNIT
CSS_NUMBER
or a CSS_UNIT
.item
CSS_VALUE_LIST,
Used to retrieve a CSSValue
by ordinal index. The order in this collection represents the order of
thevalues in the CSS style property. If index is greater than or equal
to the number of values in the list, this returnsnull
. DOMException
is raised. index
of type unsigned long
: index into
the collection. CSSValue
The CSSValue at the index position in the CSSValueList
,
or null
if that is not a valid index.CSS_VALUE_LIST
.setFloatValue
CSS_NUMBER
or the number part of the
value of a CSS_UNIT
. If this CSS value is not a CSS_NUMBER
or a CSS_UNIT
, a DOMException
is raised. floatValue
of type float
;CSS_NUMBER
nor a CSS_UNIT
or if the attached property doesn't
support the float value or the unit type.setStringValue
CSS_SYMBOL
, sets the single character used as a
symbol.CSS_STRING
, sets the string.CSS_UNIT
, sets the unit of the value.CSS_URI
, sets the argument of the url(...)
notation.CSS_IDENT
, sets the identifier.CSS_VALUE_LIST
and if the parameter is not the
empty string, make the list of values become a function and sets the
function name. Make the list become a plain list of values if the
parameter is the empty string.CSS_NUMBER
and CSS_UNIT
, a DOMException
is raised. stringValue
of type DOMString
CSS_NUMBER
or a CSS_UNIT
, if the type of the value is CSS_SYMBOL
and the string can be parsed as an other type of value, if the type
of the value is CSS_UNIT
and the string is not a valid
CSS unit, if the type of the value is CSS_URI
and the
string is not a valid URI, if the type of the value is CSS_IDENT
and the string is not a valid CSS identifier, if the type of the
value is CSS_VALUE_LIST
and the string is not a valid
CSS identifier or the empty string.The above should be enough to describe any CSS value, specified or computed. The model will become a bit complex for complex values but it ensures any web application can have access to parsed values, deal with their types and modify them. Let's take an example:
background-image: linear-gradient(to bottom, yellow 0%, blue 100%), url(foo.png);
This will result in the following OM (click on the image to enlarge it):
Again, I'm not saying the above is the thing to do or implement. It can certainly be improved, for instance for colors. A totally different perspective is also perfectly possible. I am only saying that making a better CSS OM allowing a full representation of parsed values in stylesheets and computed values is feasible. I hope the CSS OM will offer such power in the future.
UPDATE: the new CSSValue interface above lacks one thing, the ubiquitous cssText for parsing and serialization. Sorry for that.
http://www.glazman.org/weblog/dotclear/index.php?post/2014/03/19/A-better-CSS-OM-for-parsed-values
|
Yunier Jos'e Sosa V'azquez: Nueva versi'on de Firefox aumenta el poder de los juegos para la Web |
Han pasado exactamente 6 semanas desde la 'ultima gran actualizaci'on de Firefox y es hora de poner al d'ia tu navegador favorito. En esta ocasi'on hay sorpresas para los desarrolladores de juegos para la web.
La culminaci'on de la implementaci'on en Firefox de un API para conectar Gamepads permite a los desarrolladores de juegos para la web crear productos m'as c'omodos de utilizar evitando el uso del teclado y el rat'on. De esta manera ser'a m'as f'acil y divertido recrearse pues los Gamepads permiten jugar por m'as tiempo sin experimentar cansancio en largos per'iodos de uso, mientras que cuando utilizamos los medios convencionales (teclado y rat'on) se dificulta mucho jugar.
La idea es que los aficionados a los juegos, y que gustan de la comodidad de un Gamepad, vean al navegador como un sitio en el que pueden jugar y a la vez potente (sin necesidad de utilizar un juego de escritorio), para ello los desarrolladores de Mozilla han dado soporte para Gamepads con conectividad Bluetooth y los que vayan conectados al puerto USB del ordenador.
Opus es un c'odec digital con p'erdida, muy vers'atil y abierto soportado por Firefox desde su versi'on 16, y esta pensando para aplicaciones que usen sonido en tiempo real por Internet. Con respecto a otros c'odec destaca por su gran calidad por su acoplamiento a la velocidad de la conexi'on y su latencia. Ahora, Mozilla ha decido darle soporte a Opus en WebM para proveer una mejor experiencia en la Web.
Ahora Firefox para M'oviles tiene soporte para estonio (et), por lo que se reafirma como el navegador para m'oviles con m'as localizaciones del mundo. Acciones como copiar y cortar el texto seleccionado se realizan de forma nativa, aumentando la integraci'on del navegador con el sistema operativo.
Cuando se escribe algo en la Barra alucinante (Barra de direcciones), esta genera b'usquedas predictivas que proporcionan al usuario mejores resultados. Tambi'en se ha soportado OpenSearch y se han a~nadido m'ultiples 'iconos para poder compartir de una manera m'as r'apida.
Si desean conocer m'as, puedes leer las notas de lanzamiento.
Pueden obtener esta versi'on desde nuestra zona de descargas en espa~nol e ingl'es para Windows, Linux, Mac y Android. Esperamos que la disfruten .
http://firefoxmania.uci.cu/nueva-version-de-firefox-aumenta-el-poder-de-los-juegos-para-la-web/
|
Mike Shal: Clobber Builds Part 1 - Missing Dependencies |
http://gittup.org/blog/2014/03/6-clobber-builds-part-1---missing-dependencies/
|
Mark Coggins: The Firefly by Mark Knol! A new Firefox OS game powered by the... |
A new Firefox OS game powered by the Flambe game engine, as described in this post on the Mozilla Hacks blog.
|
Brian R. Bondy: Does Modern UI Firefox usage indicate Windows 8.1 modern UI is in trouble? |
On Friday, Mozilla announced it would not ship its Modern UI Firefox browser due to low adoption.
Is Windows 8.1 modern UI in trouble?
No.
Did Mozilla make the right decision with Metro given the current circumstances?
Yes.
Modern UI Firefox usage, in Mozilla's measurements, is not necessarily a true reflection of Modern UI usage in general.
Modern UI Firefox Usage != Modern UI usage
I do believe that Microsoft's modern UI is important for touch hardware, and I do believe that touch hardware is something people are adopting and will adopt more.
I believe that the Modern UI Firefox usage was low for 2 specific reasons:
Microsoft doesn't allow your browser to run in Modern UI unless you are the default browser. Several people could have had a Modern UI capable Firefox pre-releases installed, but just never knew it.
Microsoft makes it a lot harder to set your browser as the default in Windows 8. Before Windows 8, each browser could prompt you, and then they could set your default for you. As of Windows 8 you need to ask first, then tell Microsoft to show a prompt that shows a list of browsers (confusing). And that only sets the HTTP default. If you want all defaults, such as HTML and HTTP, then you have to send the user to control panel, make them search for the browser, then make them select your browser and set all defaults.
It would be great if Microsoft could fix these issues around default status. More competition leads to better software, and having good software on your platform is important. Every Windows Modern UI user loses when there's only one Modern UI browser choice.
|
Christian Heilmann: Three Pre-TEDx questions |
I am excited as a puppy with three tails about the opportunity to speak at TEDx Thessaloniki later this year. It is very different from talks at IT conferences and has been a dream of mine for a while. Today the organisers asked me to answer three questions to get some more insight into what I think (there be dragons, believe me). Here’s what I answered:
I was very lucky to have had the courage to make a clean cut when I had the chance. Leaving my home town and the country I was born in for a job is something most people dream of and a lot of others are too scared to do. By un-rooting myself and going to work in a country where I don’t speak the language natively I got a jump-start for my career.
This clear cut also gave me the courage to approach my work differently. For example, I am 100% sure that my career is based on the fact that I gave out everything I do for free and for other people to build upon. People called me crazy and my parents to date still wonder how I make money without charging people for everything I do. I love it, because it means my work gets used which gives me more satisfaction than a one-off payment would do. It also means that my thoughts and ideas live on even when I move to other goals or get hit by a truck or eaten by a tiger. I freed my ideas and thoughts and this inspires other people.
Liberating yourself from traditions and pressures of your background gives you an amazing sense of freedom and liberty to become more than you are.
I think I once saw an interview with Stephen King where the interviewer asked him how much money he has and he answered he has no idea. He just wants to carry as much around as he needs to buy some new clothes or a sandwich. Whilst I am not a big fan of his work, this excited me. My goal is to feel happy with what I do and to share that excitement. I am doing really well in that, but there are still so many rigid ideas to fight. I want people to do what they love to do and make a living with it. We don’t celebrate these enough. Instead our media portraits the richest people as the most successful, despite the fact that not many of them are happy being in the rat-race.
I started as a radio journalist and quit my job when I discovered the internet. I loved the idea of a free medium open to anyone to publish and be heard and I spent years and years to show people that it can be done. Nowadays I worry a lot about this dream. The internet is on the decline – people are OK with governments censoring it and are fine with being told what hardware to use and that some materials are not available to them because they are in the wrong country. This is not the medium of the future. I will not give in to marketing telling me that this is evolution – I think we’re going backwards.
Wikileaks. Hands down. It was a wonderful information bomb that exploded and unearthed not only lots of information that needed to be heard but also a wake up call for people. Are whistleblowers heroes when the information they leak is important to us? What if the same people leaked information about our security to outside enemies? Who are the enemies? Do they really exists or are we being told what to fear so we don’t ask too many questions?
Much good can come out of this, many important discussions to be had. Events like this can bring out the best in humanity which means to me the beginning of something great. It also shows me how many people are not even interested in questioning their governments as long as there is a new TV show to follow, which is a sign of the end of humanity. It polarises and that means we can now pick a camp. If anything, there is movement and a mass can only be a force when it is moved.
http://christianheilmann.com/2014/03/18/three-pre-tedx-questions/
|
Robert Nyman: I just want to read |
There seems to be this assumption with web sites nowadays that it has to be “rich media”. Animations galore, sound playing, videos autostarting (really?). And I’m having a sort of backlash reaction to all of that.
This belief that everyone wants to watch a video, interview, program, screencast and much more, coming from seemingly nowhere. No. No no no. Yes, at times, but to me at least, the vast majority of the time I just want to read. I want to be able to skim through an article, focus on what I care about and be able to take in the content no matter the medium I’m on. And maybe use the search functionality in my web browser to find what I’m looking for and be more efficient.
It’s even worse on mobile, though, when the first screen for news outlets and the likes is almost always entirely an animated ad, sometimes with sound or video, or offering you to watch a clip with the latest news. First-screen experience doesn’t seem to matter that much, data usage and slow connection have become second to creating something “lively”.
At least half the time when I try to read the news, articles and blog posts, I’m commuting or am in a context where sound is not an option. I don’t want to bring headphones with me all around just to be able to get some basic information or updates.
And sure, I understand and respect that some web sites need to display ads as their main income, and that’s something different (although I believe most people have also learned to tune them out – I mean, the number of ad clicks must be staggeringly low). But what I’m talking about here is more for the regular content, the convinction that everyone wants video. Just because we generally have faster connections now, then we should fill them with crap that use them all up.
Don’t do it just because you can. Sometimes I – and I bet a lot of other people – just want to read.
|
Byron Jones: happy bmo push day! |
the following changes have been pushed to bugzilla.mozilla.org:
discuss these changes on mozilla.tools.bmo.
http://globau.wordpress.com/2014/03/18/happy-bmo-push-day-86/
|
Ben Moskowitz: A Civics Education for Privacy |
The Mozilla advocacy and campaign teams are meeting this week to plan a multi-year “privacy, security, surveillance” campaign. We’re searching for an issue where we can make a real impact.
I am pushing for “security” to be tip of our campaign’s spear. Something like “we want to know that our devices, communications, and Internet/web services are secure against compromises and attacks from governments or criminals. We don’t want them to contain any deliberate or known weaknesses or backdoors.” This is the kind of principle that resonates across ideological divides, gets people nodding their heads at the watercooler, and gets the red-meat internet people fired up about backdoors in Microsoft products. No public figure wants to be on record saying “a vulnerable Internet is a good thing.”
Intelligence and defense are pouring enormous resources into making the internet communications of our adversaries more vulnerable, which makes everyone more vulnerable. It’s counterproductive. It’s why Yochai Benkler talks in terms of an autoimmune disease; “the defense system attacking the body politic.” This problem is illustrated in ongoing leaks that suggest agencies are looking to deploy malware at mass scale. “When they deploy malware on systems,” security researcher Mikko Hypponen says, “they potentially create new vulnerabilities in these systems, making them more vulnerable for attacks by third parties.”
This is why I think we should put our energy behind “securing the internet.” We can’t stop spying, but we can affect a state change in internet security.
But even in a perfectly secure internet, users’ behavior leaves them vulnerable to any number of privacy harms. “Privacy” is not the kind of value that gets codified in software; it takes user awareness and action. So our campaign must be centered on educating users about specific actions they can take to address the problem.
“Privacy” is a collective problem. We need to be the change we want to see.
We need to teach people how to act in an information society. We need young people to understand this part of “citizenship” on the web; how even seemingly passive usage of the web forms a profile, a trail, an exposure.
A “privacy civics” education should be part of every high school curriculum—like home economics or traditional civics.
Mozilla is developing a Web Literacy Map and associated curriculum. Privacy will be the toughest part of this map to teach, because it’s unbelievably abstract. When “Connecting,” for instance, a web literate person should have competencies like:
“Managing the digital footprint of an online persona.”
“Identifying and taking steps to keep important elements of identity private.”
But “digital footprint” “user persona” and even “privacy” are abstractions. To introduce these abstractions, you need stories and metaphors to explain these concepts, to build on the understanding, and ultimately form a consciousness and an understanding of the user’s privacy context in the wider web. For example, we might explain the exposure that a user gets from metadata because “it’s like having a guy parked outside your house with binoculars. He might not know exactly what’s happening inside, but he can take notes and find patterns.”
It’s not hard to imagine worksheets or 2001 era CD-ROMS to use these stories address these competencies. But this is 2014, and we can do way better. We should be able to make this kind of thing less abstract, more tangible, using the web.
What does a Mozilla-style privacy education look like? What should it feel like?
Clearly, it should be hands-on, interactive, instructive. We couldn’t teach this stuff in a boring way. When we teach HTML, we invite kids to hack webpages or remix hip-hop videos. Maybe when we teach privacy/security workshops, we should invite kids to be an NSA analyst on their own metadata? Or to perform a man-in-the-middle attack or tailor advertisements to their peers?
I don’t know for sure, but I do know that a Mozilla privacy education should be much cooler than reading a book.
MozFest is a great place to test hypotheses, work with communities, and intuit where we ought to be going. We use MozFest to learn from the open web communities and get smarter.
The 2013 Festival featured a track on privacy and user data. I helped organize with Alex Fowler and Alina Hua. We called it “Look Who’s Watching,” in a nod to the Stop Watching Us coalition. “Look Who’s Watching” suggests an educational complement to that activist project. Internet users should look around, undergo a process of discovery, and better understand how they expose themselves when they use the web. To understand who’s watching your online movements is an essential part of being an informed, empowered user.
The Privacy Track at MozFest 2013 was billed as an opportunity to “shape a full response to modern privacy problems.” These problems include but are not limited to behavioral targeting, information leakage, data correlation and generic attacks to privacy, location and mobility tracking, profiling and data mining, surveillance, and good old fashioned oversharing.
Lots of privacy educators showed up with their own theories of change. Each has strengths, weaknesses, and pedagogical baggage. Let’s take stock of a few:
Lightbeam shows how third-party cookies enable a web of tracking
The highest profile public education initiative that Mozilla has done to date is Lightbeam, in collaboration with the Ford Foundation.
Lightbeam is a Firefox add-on that visualizes how you’re affected by third-party commercial tracking. As you browse, Lightbeam reveals how third-party cookies paint a picture of your online activity, and how that’s not transparent to the average user.
We have billed this as being explicitly educational, but we don’t yet have a theory of how Lightbeam should be presented in workshop setting. Getting Lightbeam workshops in place throughout the Webmaker network is seriously low-hanging fruit.
However, Lightbeam is sort of stuck in time, and will cease being valuable when the ad titans move away from cookies and toward fingerprinting. It’s overly mechanical. More importantly, it doesn’t get to the deeper problems implied by this knowledge graph falling into the wrong hands.
Don’t get me wrong—I’m a huge fan of Lightbeam. It’s individualized and interactive, and illustrates a specific problem. But it’s not yet the kind of integrated, interactive, innovative privacy education that we need.
Me and My Shadow offers a way to measure the invisible and abstract
The more latent, scary stuff is hard to measure (or explain). At MozFest, we were fortunate to have Becky Kazansky representing Tactical Tech, who have created resources like “Security-in-a-Box” and “Me and My Shadow.”
Me and My Shadow is a well-designed curriculum that gets to the meatiest problems in privacy: how your data shadow can be used against you.
A lot of people conflate the loss of privacy with oversharing on social networks. But smart people know the problem is not what you purposefully put into social media—it’s the data trail that you (unavoidably) generate as a web user. MyShadow.org includes a set of tools to measure your data shadow. Once you’ve measured your shadow, it points to ways to “explore your traces,” “resize your shadow,” and ultimately “turn the tables.”
Shadow Tracers Kit
“Teaching privacy” involves helping people develop a mental model of mechanics of the web. Understand exposure and trust. Develop transactional intelligence about their data. In a perfect world this would be about leveling everyone up, informing a smarter conversation and smarter usage at all levels—ultimately reaching policymakers. My Shadow is getting a little closer to the sweet spot, but it’s a little too fragmented. It’s not yet cohesive or well-integrated with a campaign. Maybe we can help.
There's a cryptoparty in your neighborhood
CRYPTOPARTIES are about people understanding the consequences of their own behaviors and adjusting. Around the world, small groups of people attend teach-ins where they learn skills in small groups: PGP encryption, Tor anonymous browsing, OTR secure communications. To me it seems a little hard to make this mainstream—though Cory Doctorow probably has ideas about how to make this cool. The bigger problem is that anonymization is not necessarily the change we want to see—it sets up a frame where there are privacy-haves who justifiably wear tin foil hats, and privacy-have-nots who think that they’re weird.
But there’s a big opportunity to more systematically bring privacy teaching, learning and crypto-parties into the Webmaker network.
Take This Lollipop makes it personal
Privacy drama is about take invisible, abstract problems and make them immediate in personalized narratives. You could imagine a documentary that uses your data and APIs to demonstrate how you would be subject to price discrimination, for instance. We brainstormed a list at MozFest, and there are interactive proofs-of-concept, like Take This Lollipop (which spins a privacy scare narrative from your Facebook data) and the privacy documentary side-project of Mozilla’s own Brett Gaylor.
I’ll be expanding on some of these ideas in a talk to the Tribeca Film Institute in April. Will do a post later on.
Immersion will enable you to analyze your email metadata, the way an NSA analyst would
Another approach suggests that the best way to understand security vulnerabilities is to “do it yourself,” having a visceral hands-on experience.
At MozFest, we had a session that taught participants to use Wireshark to perform a man-in-the-middle attack on their own mobile phones. Participants learned this basic interception technique to reveal how the mobile apps they use are ‘phoning home’ — enabling mobile tracking without consent. But after performing this exercise, participants should understand the risks of having their traffic intercepted, and will probably want to see that HTTPS is active before ever typing a password.
Another team from MIT (the Immersion project) set out to explode the myth that user metadata is “just metadata”:
What can someone learn from what you write on your “virtual envelopes”? After an introduction to the MIT Immersion tool, you’ll perform a metadata analysis of your own inbox. Participants will gain insights about surveillance of metadata through some simple coding exercises (Python) if you have Gmail, try Immersion here.
After performing a metadata analysis of your own inbox, a facilitator can ask leading questions like: “Is that female with whom you communicated the most in 2012 your girlfriend? I see you didn’t communicate at all in 2013—did you break up?” Having a personal experience like this will show that patterns and content can be inferred from metadata, and that such power can be exploited by advertisers and law enforcement.
On display are varying pedagogical theories. They can all co-exist. But how should Mozilla concentrate efforts?
I am convinced that we need an answer, and to lead a “privacy civics education” for the world.
No Mozilla campaign would be complete without mobilizing users to take direct action on this very collective problem.
|