The Bugzilla UpdateRelease of Bugzilla 4.5.4, 4.4.4, 4.2.9, and 4.0.13

There are four new releases today. All of today’s releases contain an important bug fix discovered since the last release.

Bugzilla 4.4.4 is our latest stable release. It is a bug fix update for the 4.4 branch:

Bugzilla 4.2.9 is a bug fix update for the 4.2 branch:

Bugzilla 4.0.13 is a bug fix update for the 4.0 branch:

Bugzilla 4.5.4 is an unstable development release. This release has not received QA testing from the Bugzilla Project, and should not be used in production environments. Development releases exist as previews of the features that the next major release of Bugzilla will contain. They also exist for testing purposes, to collect bug reports and feedback, so if you find a bug in this development release (or you don’t like how some feature works) please tell us.


Mozilla KoreaMozilla 리더쉽 향후 계획

Mozilla는 현재 예상치 못한 리더십의 변화에 직면있습니다. Mozilla의 이사 멤버인 Reid Hoffman및 Katharina Borchert와 함께 저는 리더쉽 변화에 대해 새로운 소식을 전해드립니다. Mozilla Corporation의 이사회 멤버 겸 임시 최고 경영자(CEO)로서 Chris Beard가 취임하게 되었습니다.

사실 이사회 멤버의 일원으로서 Chris를 영입하는 방안에 대해서는 몇달 전부터 검토를 개시했습니다. Chris는 누구보다도 오랫동안 Mozillian로서 활동했으며, Firefox 1.0 제공 개시 전부터 현재까지 적극적으로 Mozilla 프로젝트에 참여해 왔습니다. Chris는 우리의 혁신적인 프로젝트의 대부분에 대해 지휘 관리를 담당한 경험을 가지고 있으며, 그의 Mozilla에 관한 비전이나 업무 능력은 뛰어납니다. 저는 10년 가까이 동안 Chris의 판단과 조언을 의지하여 왔습니다. Mozilla에 대해 숙지하고 있는 Chris를 이사회에 부르는데, 지금은 절호의 타이밍과 말할 수 있습니다.

chris-beard-ceo

또한, Chris에게 임시 CEO로서의 역할을 주게 되었습니다. 어려운 상황을 이끄는데, 그 이상에 적임인 인물은 존재하지 않습니다. Mozilla 미션을 이해하고 제가 이제까지 생각하지 못했던 아이디어나 커뮤니티 마케팅 활동, 제품의 아이디어로 승화시키는 방법에 대해 Chris는 가장 명확한 비전을 가진 인물 중 한 사람입니다. Chris의 경력을 잠시 이야기하자면, Mozilla의 초창기에 제품, 마케팅, 이노베이션의 각 팀의 지휘를 맡았습니다. 최근에는 최고 마케팅 책임자(CMO)로서 Android판 Firefox와 Firefox OS의 최초 발표를 Mobile World Congress(MWC)에서 진행한 바 있으며 사용자, 개발자 커뮤니티를 위한 글로벌 활동을 지휘했습니다. Chris는 이 시기를 이끄는 데 적임자인 강력한 CEO후보자입니다. (역자주, 크리스는 역사상 가장 성공적인 Firefox 1.0의 기부를 통한 뉴욕타임즈 광고 프로그램을 진행하기도 했습니다.)

현재 Mozilla에 요구되고 있는 것은 결단력 있는 신속한 행동입니다. 잠정적인지 여부에 관계 없이 CEO를 비롯해 Mozilla의 리더 모두에게 빼놓을 수 없는 요소입니다. Chris의 경험과 통찰이 우리의 목표로 지극히 부합하고 있습니다. 개방적인 웹 기술만이 실현 가능한 독특한 사용자 체험을 이해하고, 이를 통해 2014년도 Firefox OS를 새로운 시장을 열어야 합니다. 한편, Firefox 사용자 여러분에게도 웹의 풍부한 기능과 유연성을 전달하면서 서비스의 새로운 통합을 도모해야 합니다.

개방적인 웹과 Mozilla가 현재 직면하고 있는 과제는 우리가 Mozilla를 설립한 당초의 과제와 매우 비슷합니다. 즉, 일원화된 비즈니스 모델과 기술이 존재하고 상호 운용성 및 신규 진입 장벽이 일어나고 있습니다. 현재 온라인의 생활은 풍부한 기능이 제공되고 있지만, 집중화가 진행되고 있어 그 와중에 우리의 인터넷 체험의 거의 모든 측면에 대해 지배권을 행사하는 몇몇 거대 기업에 의해 좌우되고 있습니다. 이러한 환경에서 오픈에서 매력적인 대체 수단을 확립하고 개방적인 웹 기술이 이러한 상황에 무엇을 가져오는지를 이해 시킬 필요성이 있습니다.

Mozilla는 현재 이러한 문제를 해결할 대체 수단을 구축하고 있습니다. 그리고, 이것이 우리의 존재 이유입니다. 이것은 또 우리가 미션과 목표를 나누고 전원 한 덩어리가 되어 대응하는 이유이기도 합니다. 최근 일련의 사건에 대해서는 Mozilla의 리더십을 발전·확대시키기 위한 원동력으로서 살려 가고 싶습니다. Chris가 잠정 CEO에 취임하는 것은 이러한 프로세스의 첫걸음입니다. 다음으로 CEO직의 장기 계획, Mozilla의 성공을 후원하는 이사회 멤버를 더하는 것과 동시에 Mozillian한 사람 한 사람이 리더로서 자신의 잠재력을 최대한 발휘할 수 있도록 그들을 적극적으로 돕겠습니다.

의장 Mitchell Baker

본 글은 미국 Mozilla 블로그에 게재된 Mitchell Baker 의장의 Mozilla Moving Forward의 한국어 번역입니다.

The Bugzilla UpdateRelease of Bugzilla 4.5.3, 4.4.3, 4.2.8, and 4.0.12

Today we have several new releases for you!

All of today’s releases contain security fixes. We recommend that all Bugzilla administrators read the Security Advisory that was published along with these releases.

Bugzilla 4.4.3 is our latest stable release. It contains various useful bug fixes and security improvements:

Bugzilla 4.2.8 is a security update for the 4.2 branch as well as contains several bug fixes:

Bugzilla 4.0.12 is a security update for the 4.0 branch:

Bugzilla 4.5.3 is an unstable development release. This release has not received QA testing from the Bugzilla Project, and should not be used in production environments. Development releases exist as previews of the features that the next major release of Bugzilla will contain. They also exist for testing purposes, to collect bug reports and feedback, so if you find a bug in this development release (or you don’t like how some feature works) please tell us.


Software CarpentryWorkshop at University of Southern Denmark, Odense

The workshop at University of Southern Denmark, Odense was my first workshop for Software Carpentry, the same is true for Luis as well. We had taught before, Luis more than me, but it was still exciting for me to see how this workshop would go given that we never taught together before. While I taught bash, regular expressions and Git, Luis taught Python, unit testing and SQL. Initially, make was also on that list, but due to time constraints was kicked out to make room for a second Git lecture.

Around 30 persons attended the course, mostly from SDU and the Max-Planck Odense Center (MaxO). All in all, the workshop was well-received and the attendees as well as the instructors were highly motivated. But there is still lots of room for improvement:

  • The shell lecture was way too slow, so that I could not do any of the ’exercises‘. The quotes should indicate that these are more or less not real exercises, but ’repeat what the instructor is doing‘. This was bad for a couple of reasons, but mainly because people did not know about even the most basic things which were needed for the Git part.
  • The regular expressions lecture should also increase in speed. Also, we (= SWC instructors) must be aware that Apple ships old BSD versions of the commonly used command line tools. These strong>lack essential features, so that grep output cannot be colored on OS X!
  • Git just cannot be done in a manner people without any prior knowledge of version control can understand in 1.5 h. Git is so incredibly powerful and the concepts behind it are so intricate that it is easy to cognitively overload people. Therefore, I dropped the make lecture and did a ’Git Double Feature‘ instead. Also, I noticed that I am suffering from expert's blind spot: when asked about where one can see the files of different branches on the computer, I realized that this feature of Git was so obvious to me that I did not explain that at all.
  • Probably the most interesting/realistic way to show Git is to have a new repository created before the workshop. That repository already contains some linear commits with simple scripts. People will clone it during the workshop and do some work in a new branch. While they are doing that new commits are added to the master branch, which people should fetch/pull and see the effect.
  • Showroom: Now and then we need to be able to show people what great things they can do with tools we teach. This would serve two purposes:
    • People would see right away the usefulness of what we are teaching. This should boost motivation.
    • People have a moment to relax.

The workshop was held on a Thursday and Friday and it was obvious that people, especially after lunch break on Friday, were mentally quite exhausted already. This is also, when I noticed just how much information (as measured in the ’unit‘ mind map connections) we conveyed during the two days. And that is what the ’showroom‘ is thought to be for.

Big thanks go to Owen Jones from SDU for organizing, things really worked out great.

PS: Danish pastry is as good as its reputation.

Mozilla ResearchAnother Big Milestone for Servo—Acid2

Servo, the next-generation browser engine being developed by Mozilla Research, has reached an important milestone by passing the Acid2 test. While Servo is not yet fully web compatible, passing Acid2 demonstrates how far it has already come.

Servo’s Acid2 Test Result

Acid2 tests common HTML and CSS features such as tables, fixed and absolute positioning, generated content, paint order, data URIs, and backgrounds. Just as an acid test is used to judge whether some metal is gold, the web compatibility acid tests were created to expose flaws in browser rendering caused by non-conformance to web standards. Servo passed the Acid1 test in August of 2013 and has rapidly progressed to pass Acid2 as of March 2014.

Servo’s goals are to create a new browser engine for modern computer architectures and security threat models. It is written in a new programming language, Rust, also developed by Mozilla Research, which is designed to be safe and fast. Rust programs should be free from buffer overflows, reusing already freed memory, and similar problems common in C and C++ code. On top of this added safety, Servo is designed to exploit the parallelism of modern computers making use of all available processor cores, GPUs, and vector units.

The early results are encouraging. Many kinds of browser security bugs, such as vulnerabilities similar to Heartbleed, are prevented automatically by the Rust compiler. Performance comparisons on many portions of the Web Platform that we have implemented in single threaded mode are substantially faster than traditional browsers, and multi-threaded performance is even faster yet.

Servo has a growing community of developers and is a great project for anyone looking to play with browsers and programming languages. Please visit us at the Servo project page to learn more.

References

edited for clarity around Heartbleed

Air MozillaWebcompat Walkthrough: Old Tech Evangelism Bugs

Webcompat Walkthrough: Old Tech Evangelism Bugs See how you can contribute to the Web Compatibility effort by assessing old tech evangelism bugs.

Air MozillaCommunity Building Forum

Community Building Forum The Grow Mozilla Community Building Forum

Mozilla ServicesMozilla Location Service – The Next Wave

Today, we celebrate the first birthday of the Mozilla Location Service (MLS), our experiment in geolocation at Mozilla. Thanks to a lot of help from volunteers, MLS covers a large part of the Earth, proving that our work together can build a usable location service.

Starting from these foundations, we’re now working on building a production service that can provide location services to millions of web users. This is a good time to pause and look back on what we’re doing it, why we’re doing it, and how you can help.

First of all, what is a “location service”? A location service is how your device knows where it is relative to the things around it, like WiFi access points and cell towers. Having a location service is crucial when when you can’t get a GPS signal (like in some urban areas) or don’t have a GPS chip (like in a laptop). Right now, location services are closed, proprietary services, run by Google, Apple, Skyhook, and a few other companies.

There are a few reasons that Mozilla is developing a location service. Location in general has become a very important part of how we use the Internet, and the Mobile Internet is becoming an even more critical part of our lives. So it’s important for the world to have an open and trustworthy location service.

Having an open location service is also critical for some of our key initiatives such as:

  • The FirefoxOS initiative, which aims to bring user choice and the principles of the open web to mobile phones and the mobile ecosystem. MLS in conjunction with FirefoxOS has the potential to provide location services to the millions of users who are transitioning from a feature phone to a smartphone.
  • Providing location information to open-source operating systems.

However, as important as this project is, it can’t succeed without you. The MLS can’t locate phones if it doesn’t know where access points and towers are and we rely on the community to collect this data. We call the process of gathering data “stumbling”. When you stumble for Mozilla, it means you’re traveling around with a GPS device (like a GPS-enabled cell phone) and “listening” for WiFi and cellular signals. When a signal is found, it’s matched up with its GPS location and uploaded and stored in the location service database. Then whenever another device using the service sees that WiFi or cellular tower, the MLS server knows where it is (since it knows where the WiFi or cellular tower is).

You can help MLS get better in a few ways:

  • Stumble: If you’ve got an Android phone, you can install our Stumbler app and start collecting data. Check out the coverage map and see if you can brighten up some dark spots.
  • Contribute: Like all Mozilla software, the Stumbler is an open-source project, with many contributors around the world. Check it out on github and send us a pull request.
  • Discuss: We like to talk about geolocation, whether it’s about how to make MLS better, how to improve stumbling, or how to do cool stuff with location information. You can find us on our dedicated mailing list or come talk to us in our IRC room #geo on Mozilla’s IRC server.

This is an exciting time for geolocation in the open Web. Through the MLS, we’re making location services available to millions more devices, and with more transparency than ever. If you take a look at our roadmap for the year, we’ve got some other big ideas coming up, like an open, community-sourced IP-geo database.

Richard Barnes

Mozilla ServicesMozilla Location Service – First Anniversary

The Mozilla Location Service is an open service to provide geolocation lookups based on publicly observable radio signals. It complements geolocation lookups based on global navigation satellite systems like GPS. The project is both built as open-source software and relies on an open community crowd-sourcing approach to gathering signal data across the globe.

We publicly announced the project six month ago, but started work on it a year ago to this day.

In order to celebrate our tireless contributors, we created a little video to show how far we have come and what a small group of dedicated volunteers can accomplish (wait for October, around 16 seconds into the video):

 

We started with a small group of Bay Area and Vancouver Mozillians, early on attracting volunteers from Moscow and Athens. Over time a small number of especially generous contributors shared their pre-collected data with us in addition to using our own MozStumbler Android app.

The MozStumbler application attracted not only users, but over time an active number of contributors, improving the application and localizing it to 19 different languages. As a fun way to visualize the vibrant community, we created a small video using the gource code visualization tool:

 

And of course no community is complete without all the members engaging in discussions, sharing the news and some going above and beyond in creating alternative stumbler applications or integrating the service into operating system libraries.

If you have questions or want to engage with us, please contact us on our dedicated mailing list or come talk to us in our IRC room #geo on Mozilla’s IRC server.

Thanks to all past, present and future contributors. This project wouldn’t be possible without all of you!

Hanno Schlichting

P.S. We also generated bigger versions of the map progress in a 1024×768 resolution. You can download the webm or mp4 files.

Mozilla User ResearchEmerging Needs in Thailand & Indonesia

Mobile Phone Market in Bangkok, Thailand

Mobile Phone Market in Bangkok, Thailand

This research was led by Bill Selman & Gemma Petrie.

In Fall 2013, the Mozilla User Experience Research Team visited Thailand and Indonesia to conduct Firefox qualitative research. In addition to our team of Mozillians, we partnered with SonicRim, a global design research firm, on this research project. If you would like to learn more about the project planning phase of this study, please read the first post in this series. You can also read about our initial observations in Thailand and our initial observations in Indonesia in previous posts. Finally, you can also checkout this follow-up post on ecommerce in Indonesia.

Study Goals

The goal of this research project was to understand how people in Thailand and Indonesia experience the Internet and to learn about emerging trends that will provide insight into new and current product features for Firefox.

Home in Bandung, Indonesia

Home in Bandung, Indonesia

Research Activities

The Mozilla User Research team believes it is important to experience in-context research with a wide variety of staff members. We brought a diverse set of talents into the field with us and gave each person the opportunity to engage in cultural immersion activities and two or more qualitative interviews in Bangkok & Chiang Mai, Thailand or Jakarta & Bandung,  Indonesia. Our field teams were comprised of: Bill Selman (User Research), Gemma Petrie (User Research), Uday Dandavate (SonicRim Researcher), Larissa Co (UX Design), Zhenshuo Fang (UX Design), Holly Habstritt (UX Design), Bram Pitoyo (UX Design), Margaret Schroeder (Market Research), Gavin Sharp (Firefox Engineering), and Yuan Wang (UX Design).

We engaged in a variety of contextual inquiry and ethnographic research activities including:

  • Semi-structured interviews with 44 participants (22 buddy pairs) in their homes and offices.
  • We observed public, commercial, and educational environments.
  • We connected with local Mozilla community members and hosted community dinners in Bangkok, Thailand and Bandung, Indonesia.
  • We collected over 60 hours of audio and video and nearly 2,500 photographs.
  • Finally, we engaged in an extended analysis period with both field teams in our Portland, Oregon office.
Interview Participant in Bangkok, Thailand

Interview Participant in Bangkok, Thailand

Results

In Indonesia and Thailand, changes are taking place with respect to how (and how many) people are accessing the Internet. Rapid technological and socioeconomic development has influenced technology adoption curves and technology-centric behaviors. Our research identified various themes that will help inform the future development of our products. Here are a few of them:

Infrastructure:

Key pieces of critical infrastructure are lagging, especially in Indonesia.1-5

  • Reliable telecom is unevenly distributed in both markets. Urban dwellers can’t easily connect with their rural relations (and vice versa).
  • Telecom infrastructure is generally lacking (though improving); Limited bandwidth is shared between a very large subscriber base.
  • In Thailand, data is cheap (less so, proportionally, in Indonesia). Certain kinds of data usage (like social networking) may be unlimited, while others are metered. People in both markets use multiple devices/telecom providers to maximize coverage/minimize costs.

This lack of stable infrastructure inhibits what can be done with technology and influences software adoption and software updates due to poor or nonexistent download speeds.

Software Market in Indonesia

Software Market in Indonesia

OS/Software Distribution:

Due to poor connectivity, downloading is often not the only software distribution channel in this region. Physical media such as DVDs and USB thumb drives still play a significant role in how software is distributed and installed. As a result, software packages are frequently installed in a shop, rather than at home. These packages can include everything from the OS, to multiple browsers, productivity tools, and games. In Indonesia, software being sold
 is often several versions behind the current version and may be compromised with malware.

Search & Navigation:

Participants have difficulty searching the Internet, because they don’t understand the pieces of the browser and the relationship of the browser to the Internet. This resulted in several beliefs:

  • The belief that Chrome is better for searching Google, because both are Google products.
  • The belief that search results are generated within the browser, thus searching in a different browser will produce different results.
  • Navigating to Google.com in order to enter Facebook.com in the Google search box.
  • Limited awareness that software can be customized or modified with add-ons.
  • Acquiring software based on popularity in their social circles rather than functionality or performance.
  • “It doesn’t work anymore” — There is limited knowledge of malware, malicious add-ons, etc., that may be severely impacting browsing experience
Restaurant Menu in Chiang Mai, Thailand

Restaurant Menu in Chiang Mai, Thailand

Translation:

Internet users in both markets rely on a blend of English and local language sources in order to find information they need. Users often, but not always, use English language menus on their devices (especially among Thai users trying to save screen real estate). Yet, while many users can navigate effectively in English, translation is still critical to their browsing experience. People want content in a context appropriate language: Local content in the local language and international content In English. Overall, there was a distrust of machine translations and a desire for improved content translation that provided additional cultural context.

What’s Next?

Mozilla is committed to providing the best user experience possible to our global community of users. It is important for us to understand the unique challenges and unmet needs that our users face around the world. We are grateful to all of the participants we were able to interview during this project and to the valuable support of our Thai and Indonesian communities. Over the last few months, our research team shared all of our Thailand and Indonesia study results with various teams at Mozilla. In addition to our observations, we suggested opportunities for addressing the unmet needs in this region. We look forward to incorporating design solutions to these challenges in our products. Stay tuned!

References:

  1. Get ready for traffic jams & long commutes. (Bangkok Post)
  2. Smartphone sales in Thailand gather pace with over 2.87 million sold in the first four months of 2013. (GfK)
  3. Smartphone sales in Thailand gather pace with over 2.87 million sold in the first four months of 2013. (GfK)
  4. Indonesia Has 2nd Lowest Average Internet Speed, Reactions. (Indo Boom)
  5. New GSA Evolution to LTE report: 2013 ends with 260 LTE networks in service. (GSA)

Firebug BlogFirebug 2.0 beta 2

getfirebug.com has Firebug 2.0 beta 2

Firebug 2.0b2 fixes 9 issues
Firebug 2.0b2 is compatible with Firefox 30-31

 

A few more reported issues have been fixed in this release and we also created some more automated tests to ensure stability.

Show/hide Firebug panels

One change we introduced in Firebug 2 is the way how to hide/show individual panels. Check out the next screenshot that depicts how it’s done in Firebug 1

 

The panel selector button is presented on the main Firebug toolbar. We believe that this feature doesn’t deserve so much attention and in order to clean up the UI and make it simper we decided to move it into Firebug menu in Firebug 2.

 

There are many other little improvements in Firebug 2 that make the overall user experience better and we’ll be explaining them here step by step, so stay tuned!

 

Please post feedback in the newsgroup, thanks.

Jan ‘Honza’ Odvarko

 

hacks.mozilla.orgHTML out of the Browser

Amongst my friends, I’m known as something of a Star Wars nerd. My longtime nick has been cfjedimaster (a combination of two passions, the other being ColdFusion), I work in a room packed to the gills with Star Wars toys, and I’ve actually gotten inked up twice now with Star Wars tats. That being said, it was another movie that had the most influence on my current career – Tron.

Tron_poster

I had already discovered an interest in computers before then, but it was Tron that really crystallized the idea for me. All of sudden I imagined myself being the programmer – creating intelligent programs and dominating the grid. Yeah, I know, I was a nerd back then too.

My dreams, though, ran into reality rather quickly during my time as a Comp Sci major in college. First – I discovered that “Hey, I’m good at math!” means crap all when you hit Calculus 3, and secondly, I discovered that I really wasn’t that interested in the performance of one sort versus another. I switched to English as a major (always a good choice) but kept messing around with computers. It was during this time that I was exposed to Mosaic and the early web.

I quickly jumped into the web as – well – I’ll put it bluntly – easier programming than what I had been exposed to before. I can remember LiveScript. I can remember my first Perl CGI scripts. This wasn’t exactly light cycle coding but it was simpler, fun, and actually cutting edge. I’ve spent a good chunk of my adult life now as a web developer, and while I certainly have delusions of the web being a pristine environment, it has been good to me (and millions of others) and I’m loving to see how much it evolves over time.

One of the most fascinating ways that web technologies have grown is outside of the web itself. In this article I’m going to look at all the various ways we can reuse our web-based technologies (HTML, JavaScript, and CSS) in non-web based environments. While it would be ludicrous to say that one shouldn’t learn other technologies, or that web standards work everywhere and in every situation, I feel strongly that the skills behind the web are ones open to a large variety of people in different disciplines – whether or not you got that PhD in computer science!

Mobile

This is typically the point where I’d discuss how important mobile is, but it’s 2014 and I think we’re past that now. Mobile development has typically involved either Java (Android) or Objective-C (iOS). Developers can also use web standards to build native applications. One solution is Apache Cordova (AKA PhoneGap).

Cordova uses a web view wrapped in a native application to allow web developers to build what are typically referred to as hybrid applications. Along with providing an easy way to get your HTML into an app, Cordova provides a series of different plugins that let you do more than what a typical web page can do on a device. So for example, you have easy access to the camera:

navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL
});
 
function onSuccess(imageData) {
    var image = document.getElementById('myImage');
    image.src = "data:image/jpeg;base64," + imageData;
}
 
function onFail(message) {
    alert('Failed because: ' + message);
}

You can also work with the accelerometer, GPS, contacts, the file system, and more. Cordova provides a JavaScript API that handles the communication to native code in the back end. Best of all, the same code can be used to build native applications for multiple different platforms (including Firefox OS, now supported in Cordova & PhoneGap).

To be clear, this isn’t a case of being able to take an existing web site and just package it up. Mobile applications are – by definition – completely different from a simple web site. But the fact that you can use your existing knowledge gives the developer a huge head start.

Another example of this (and one that is hopefully well known to readers of this site) is Firefox OS. Unlike Cordova, developers don’t have to wrap their HTML inside a web view wrapper. The entire operating system is web standards based. What makes Firefox OS even more intriguing is support for hosted applications. Firefox OS is a new platform, and the chance that your visitors are using a device with it is probably pretty slim. But with a hosted application I can easily provide support for installation on the device while still running my application off a traditional URL.

Consider a simple demo I built called INeedIt. If you visit this application in Chrome, it just plain works. If you visit it in a mobile browser on Android or iOS – it just works. But visit it with Firefox and code will trigger to ask if you want to install the application. Here is the block that handles this.

if(!$rootScope.checkedInstall && ("mozApps" in window.navigator)) {
 
    var appUrl = 'http://'+document.location.host+'/manifest.webapp';
    console.log('havent checked and can check');
    var request = window.navigator.mozApps.checkInstalled(appUrl);
 
    //silently ignore
    request.onerror = function(e) {
        console.log('Error checking install '+request.error.name);
    };
 
    request.onsuccess = function(e) {
        if (request.result) {
            console.log("App is installed!");
        }
        else {
            console.log("App is not installed!");
            if(confirm('Would you like to install this as an app?')) {
                console.log('ok, lets try to install'); 
                var installRequest = window.navigator.mozApps.install(appUrl);
 
                installRequest.onerror = function() {
                    console.log('install failure: '+this.error.name);
                    alert('Sorry, install failed.');    
                };
 
                installRequest.onsuccess = function() {
                    console.log('did it');
                    alert('Thanks, app installed!');    
                };
            }
            $rootScope.checkedInstall=true;
        }
    };
 
} else {
    console.log('either checked or non compat');                
}

Pretty simple, right? What I love about this is that the code is 100% ignored outside of Firefox OS but automatically enhanced for folks using that operating system. I risk nothing – but I get the benefit of providing them a way to download and have my application on their device screen.

FF OS prompting you to install the app

Desktop

Of course, there are still a few people who sit in front of a gray box (or laptop) for their day to day work. Many desktop applications have been replaced by web pages, but there are still things that outside the scope of web apps. There are still times when a desktop app makes sense. And fortunately – there’s multiple ways of building them with web standards as well.

So you know the code example I just showed you? The one where Firefox OS users would be given a chance to install the application from the web page? That exact same code works on the desktop as well. While still in development (in fact, the application I built doesn’t work due to a bug with Geolocation), it will eventually allow you to push your web based application both to a mobile Firefox OS user as well as the other billion or so desktop users. Here’s the application installed in my own Applications folder.

INeedIt as a desktop app

As I said though – this is still relatively new and needs to bake a bit longer before you can make active use of it. Something you can use right now is Node Webkit. This open source project allows you to wrap Node.js applications in a desktop shell. Executables can than be created for Windows, Mac, and Linux. You get all the power of a “real” desktop application with the ease of use of web standards as your platform. There’s already a growing list of real applications out there making use of the framework – some I had even used before what realizing they used Node Webkit behind the scenes.

As an example, check out A Wizard’s Lizard, a RGP with random dungeons and great gameplay.

Screen shot - Wizard's Lizard

Native App Extensions

In the previous section we covered applications built with web standards. There are also multiple applications out there today, built natively, that can be extended with web standards. As a web developer you are probably already familiar with Firefox Add-Ons and Chrome extensions. There is an incredibly rich ecosystem of browser extensions for just about any need you can think of. What interests me however is the move to use web standards to open other products as well.

Did you know Photoshop, yes, Photoshop, now has the ability to extended with Node.js? Dubbed “Adobe Generator”, this extensibility layer allows for a script-based interface to the product. One example of this is the ability to generate web assets from layers based on a simple naming scheme. If you’ve ever had to manually create web assets, and update them, from a PSD, you will appreciate this. The entire feature though is driven by JavaScript and all makes use of a public API you can build upon. The code, and samples, are all available via GitHub.

Generator running within Photoshop

What Next?

Coming from the perspective of someone who has been in this industry for way too long, I can say that I feel incredibly lucky that web standards have become such a driving force of innovation and creativity. But it is not luck that has driven this improvement. It is the hard work of many people, companies, and organizations (like Mozilla) that have created the fertile landscape we have before us today. To continue this drive requires all of us to become involved, evangelize to others, and become proponents of a web created by everyone – for everyone.

Meeting NotesFirefox/Gecko Delivery Planning: 2014-04-16

Schedule & Progress onUpcoming Releases

Firefox Mobile

Read Only
Beta (29)
Nightly (31)
    • bug 988471 – Action bar icons flicker while typing and scrolling with an active text selection

    • bug 928096 – UI for Tab streaming
    • bug 981028 – Add telemetry probes for Top Sites
    • Fix for Fx31 bug 933739 – Issues in URL domain autocompletion

Developer Tools

<Read Only>

  • no-meeting-week is glorious

  • glorious too will be Firefox 31, including this nice new eye-dropper by Heather Arthur

Planning Meeting Details

  • Wednesdays – 11:00am PT, 18:00 UTC

  • Mountain View Offices: Warp Core Conference Room
  • Toronto Offices: Finch Conference Room
  • irc.mozilla.org #planning for backchannel
  • (the developer meeting takes place on Tuesdays)

Video/Teleconference Details – NEW

  • 650-903-0800 or 650-215-1282 x92 Conf# 99696 (US/INTL)

  • 1-800-707-2533 (pin 369) Conf# 99696 (US)
  • Vidyo Room: ProductCoordination
  • Vidyo Guest URL

Mozilla Add-ons BlogAdd-ons Update – Week of 2014/04/16

I post these updates every 3 weeks to inform add-on developers about the status of the review queues, add-on compatibility, and other happenings in the add-ons world.

The Review Queues

  • Most nominations for full review are taking less than 3 weeks to review.
  • 148 nominations in the queue awaiting review.
  • Most updates are being reviewed within 2 weeks.
  • 118 updates in the queue awaiting review.
  • Most preliminary reviews are being reviewed within 2 weeks.
  • 142 preliminary review submissions in the queue awaiting review.

If you’re an add-on developer and would like to see add-ons reviewed faster, please consider joining us. Add-on reviewers get invited to Mozilla events and earn cool gear with their work. Visit our wiki page for more information.

Firefox 29 Compatibility (Australis!)

This is a big one. The Firefox 29 compatibility update is here, and there are some additional posts explaining some of what’s new:

As usual we recommend using the Aurora and Beta branches to test your add-ons ahead of time.

The Add-ons for Australis contest is now closed, and we have begun the judging phase. We will announce the winners on this blog in a couple of weeks. Good luck!

Mozilla User ResearchUX Book Club SF: UX Team of One

As UX designer, even if you are working at a large company with dozens of other designers, you often find yourself as the only designer on a project. It’s a lot of responsibility advocating for users, fighting for time and resources for research, and pushing for beautiful UI details with engineers and product folks that may have little to no experience with design and research methods. How do you create great product experiences when you are, to use the title of Leah Buley’s book, a UX Team of One? For Buley who joined us to discuss the book on April 8th in Mozilla’s San Francisco office it’s about involving people in the process and acting as a facilitator within the team.

The book is divided into theory and practice. The first two chapters of the book are geared towards newbies with little to no training but who desire to move into user experience or apply some of the disciplines’ methods to their work. Since I’ve been in the UX field for some years I skipped to the practice chapters where Buley describes activities and deliverables for planning, research, design and evaluation. What differentiates her book from others is that she sets up each method or deliverable as a group activity. The activities are lightweight and practical,  perfect for involving non-designer types that maybe skeptical or time-crunched. One of the hard lessons I learned from transitioning from graduate school to being a designer in industry is that, while in an academic setting rigor is paramount, in the professionally world you can alienate your team if you are too rigid. You need to meet people where they are and be flexible.

For me reading the book was well-timed. I’m starting a new project with a new team. After months of being heads down on features I had forgotten some of the basics of kicking off new work. Starting this week I’ll be using activities like the Opportunity Workshop, Storyboarding and 2 x 2 Prioritization for our product workweek.

If you have anecdotes from working as a team of one I’d love to read about your experiences in the comments. For more information on the book club you can join our Facebook group or follow us on Twitter @uxbookclubsf.

QMOAnnouncement: Web QA Team badges

We are very excited to announce the creation of our new Web QA team badges! They represent all levels of involvement with our team.

Web_QA_Badges_Sorceror

Each badge lists the criteria for qualification. Start with a One and Done task, or by attending a Web QA Test day! Start running our automation or submit a pull request. You can get involved by advertising our team activities, and joining the conversation in our IRC channel #mozwebqa. You could even submit a design for our next badge! There are lots of ways to start working with our team.

The team would like to thank Ivana Catovic, yet again, for her beautiful designs. We are lucky to have a contributor with such talent!

For more information on our team badges, visit our Web QA Badges profile. Nominate yourself for a badge! Make sure your badges profile includes the correct data so we can verify your work.

Start with the Web QA Enthusiast badge and work up from there! If you have any questions you can always contact the Web QA team.

 

about:communityGrow Mozilla discussion this Thursday

If you’re interested in helping new people get involved with Mozilla, join us Thursday for an open community building forum.

Mozilla Add-ons BlogAdd-ons for Australis contest has ended

Thank you to everyone who participated in the Add-ons for Australis contest! After the entries go through the review process, the judges will go over them and select winners. We’ll notify and announce the winners in the coming weeks.

In the meantime, you can check out the new design for yourself on Firefox Beta.

Meeting NotesSeaMonkey: 2014-04-15

Agenda

  • Who’s taking minutes? -> mcsmurf

  • Nominees for Friends of the Fish Tank:
    • -

Action Items

(who needs to do what that hasn’t been recorded in a bug)
We should assign people to the open items.

NEW

OPEN

  • http://weblogs.mozillazine.org/seamonkey/ has not been updated since November 2012, the last version listed is 2.14 (bug 956561); move blog to blog.mozilla.org if possible Assigned: mcsmurf.

    • Mcsmurf says that it looks like we might be getting a blog on blog.mozilla.com.

    • KaiRo will do some DNS magic to get it mirrored at blog.seamonkey-project.org
    • Ratty managed to get Kerz’s contact address but totally forgot to follow this up yet.

CLOSED

Status of the SeaMonkey Buildbot Master and Tree

  • Callek has been working on migrating our Linux builders to CentOS 6 bug 795354. Puppetmaster has been updated. Ewong is able to login to these hosts and buildbot is installed. We still need to get everything setup for parity and do some slight tweaks to the puppet config, but we’re pretty close to useable.

  • bug 983536 libpango version >= 1.22.0 required on Linux.
  • bug 977676 SeaMonkey’s puppet broken due to requirement of ffxbld ldap password.
  • Python has been updated on all buildboxen!
  • We are perma-orange on comm-central, comm-aurora and comm-beta due to problems with tests
    • Windows en-US builds are being successfully compiled but tests are not working due to a dependency on python 2.7.3.

    • bug 908090 ImportError: No module named json, on SeaMonkey Linux/Windows (all) test runs, due to (still) using Python 2.5. We do have python 2.7 installed but our build system is picking up python 2.5 instead.
      • ewong’s patch is waiting for review. It was manually patched on the master; but, was reverted and the buildmaster was reconfigured and so the changes are gone. Need to have the patch pushed officially in order for this bug to be fixed.
    • pymake is failing with “invalid syntax” again because of an outdated Python.
    • Priority on fixing this and l10n repacks after 2.24 release.(No ETA yet)
    • bug 943740 is tracking the progress (or lack of one) in building trunk and aurora on Linux & Mac from the downloading user’s POV. (Windows nightlies are still appearing on schedule — or were until a day or two ago.)
  • No langpacks since 29th August on trunk. Needs investigating.
    • Windows and Mac trunk langpacks directories have been removed on the FTP server, maybe for lack of recent XPIs (later than 2.20a1). Latest Linux langpacks are dated 29 August. Callek told Tonymec on IRC he has a hunch about why but more pressing things to do first.

    • In Bug 902876 Comment 12 Mcsmurf is waiting for feedback from the build team on how to proceed.
  • Buildmaster is up and running.
    • Callek is hand-approving requests for CLOSED TREE landings at the moment.

    • Due to the master having some mysql issues, Callek has put a halt on the mysql updates, which affects the tbpl. So nothing is showing in tbpl atm.
  • comm-* will be building out of mozilla-* (bug 648979 etc.). Jcrammer has mostly completed the coding. Next step is consultation with mozilla-central build peers on landing the patches and also getting implicit permission to add several new top level directories to mozilla-central.

Release Train

  • SeaMonkey 2.26 beta 1 was released on April 9.

  • SeaMonkey 2.26 beta 2 is scheduled for April 18.
  • Useful Firefox Release Schedule link: Releases Scheduling

Extensions and Plugins Compatibility Tracking

2.x (Last, Current, Next)

  • [From a previous meeting:] There is a problem with the metrics server, so no current data is available

  • See Basics page for the usual reminders.
2.25

open tracking (0)
tracking requests (2)
targeted (1)
fixed (7)

2.Next
  • Current breakages:

    • bug 984948 folder pickers in the filter editor are empty.

      • This was caused by a TB bug: bug 878805 Check UI consistency across all Thunderbird folderpickers.
    • bug 995755 – adding new bookmarks is broken.
    • bug 995737 – adapt seamonkey for the ab remote content policy change; use permission manager instead of address book property.
    • bug 901332 – Google CalDAV OAuth2 authentication dialog not shown in SeaMonkey
    • bug 995706 – I am not able to read, compose or send e-mail from my Yahoo Mail accounts
  • Mozilla-central bugs that affect us:
    • Note: Please file bugs if you notice any landing on mozilla-central that might break us. Please don’t depend on Ratty noticing such landings.

    • bug 805374 Remove Character Encoding menu entries that are not in the Encoding Standard. Tracked in:
      • bug 943732 Port the new Character Encoding menu to SeaMonkey.
    • Our front end Sync UI needs to be updated as the old backend is going away in Gecko/Firefox 31. See: New Firefox Sync has landed in Firefox Nightly.
    • A lot of these bugs are due to mozilla-central switching from synchronous APIs to Asynchronous APIs.
    • bug 831208 (asyncContentPrefsUse) Refactor asyncContentPrefs consumers to use the async API. Tracked in:
      • bug 909093 Update SeaMonkey to use nsIContentPrefService2. Mcsmurf and Neil@parkway are currently working on this.
    • bug 566746 (asyncFormHistory) Form history should use asynchronous storage API. Tracked in:
      • bug 912031 Use Asynchronous FormHistory.jsm in place of nsIFormHistory2 in Suite.
    • bug 769764 move proxy resolution to separate thread and remove sync api. Tracked in:
      • MailNews bug 791645 Rewrite calls to synchronous nsIProtocolProxyService::DeprecatedBlockingResolve with Async code before DeprecatedBlockingResolve disappears as well.
    • bug 793634 Force builds to be compatible with gtk 2.18/glib 2.22. Tracked in:
    • bug 795144 default –disable-gnomeui icon theme support
      • porting bug needed for the two configure.in changesets? Changes could be folded into bug 794772 above. *** IanN and Ewong are looking into this..
    • bug 627699 Port GTK2 to GTK3. Tracked in:
      • bug 882036 Port GTK2 to GTK3 – SeaMonkey Part.

      • A Red Hat person seems to be working on the GTK3 integration.
    • bug 846635 Use asynchronous getCharsetForURI in getShortcutOrURI. bug 834543 Add asynchronous version of setCharsetForURI and getCharsetForURI. Tracked in:
      • bug 896947 Use asynchronous version of setCharsetForURI and getCharsetForURI in getShortcutOrURI and other places.
    • bug 825588 Asynchronous JavaScript API for downloads and bug 851471 Decommission nsIDownloadManager. Tracked in:
      • bug 888915 Move SeaMonkey to the new JavaScript API for downloads when nsIDownloadManager is decommissioned.

Bugs: Low Hanging Fruit

Not necessarily Good First Bugs but minor fixes that shouldn’t need advanced coding skills.

  • bug 795002 Improve detection of valid feed urls in messengerdnd.js (Port relevant bits of bug 737115).

  • bug 986509 On Linux GTK/KDE with zebra striping for trees and menulists when focus is lost the selected row highlight is also lost.
  • bug 986889 sidebarOverlay.js#1653 should be using urlLit, not titleLit. (One line typo fix)
  • bug 494424 Update help for geolocation
  • bug 528229 Want pref to narrow down quick search box to match sender only or all addresses.
  • bug 462629 Cannot access MIME-type and file associations in new Helper Applications pane.
  • Tabbed Browswing:

Needs investigation/QA wanted?

  • bug 986548 SeaMonkey 2.25 always crashes when trying to access email.

    • Need to followup on bug 964182 with mozilla/core developers.
  • bug 986816 when starting with mail window: some contents missing. (Intermittent bug).
  • bug 987464 Build scripts for Seamonkey Linux X86_64 fail for2.28a1.
  • bug 988599 new email window displays prior composed email.
    • Workaround: set mail.compose.max_recycled_windows to 0.
  • bug 986874 Message pane opens by itself after selecting a junk mail message item.
  • bug 990450 Update Seamonkey: Existing proxy settings lost.

Feature List, Planning

Bug statistics for the last two (full) weeks: 35 new, 17 fixed, 18 triaged.

  • Low-Medium triaging effort.

Open reviews/flags:
27 review
6 super-review
2 ui-review
6 feedback

  • See Feature List page for major wanted/needed features.

  • TODO: We will need to update our Sync UI code due to the new Sync API. Also we need to check if we are allowed to create FX accounts from our UI Since the new Sync accounts are FX accounts.[IanN] I’m sure I saw a question about FX accounts and branding.
Modern Theme rework (Patrick Dempsey)

Ratty has been tracking the Modern theme rework by Patrick Dempsey.

Attachment Reminders

Suyash Agarwal has started to port attachment reminders to SeaMonkey MailNews. bug 984016 Attachment Reminder: Help prevent forgetting inclusion of attachments (Port TB bug 244455)

MathML in Composer

Frédéric Wang (:fredw) has been working on impoving MathML support in the Website Composer.

  • Bug 986839 – Add a LaTeX-to-MathML dialog box in Composer.

  • Bug 992127 – Add a LaTeX-to-MathML dialog box to the mail composer.

http://bug78128.bugzilla.mozilla.org/attachment.cgi?id=121721

Roundtable – Personal Status Updates

Status Updates from developers – what are you working on, what’s the progress, any other comments? (feel free to add yourself to the list if your name is missing and you have interesting status).

ewong
  • Fixed:

    • bug 665708 – Gopher links show “Launch Application” in SeaMonkey 2.1

    • bug 904338 – Empty port line when create a Blogs & Newsfeeds account
    • bug 938673 – Add context menu to status bar padlock icon
    • bug 957895 – Bug 633937 added unnecessary three strings to messages.properties. Remove them.
    • bug 985964 – No 2.27a2 aurora nightly builds since the last merge
    • bug 958128 – Jumplists stop updating when PC is idle
    • bug 967492 – Remove “Personas” from Help (Update text)
    • bug 970475 – Use unprefixed box-sizing internally
  • Review:

    • bug 840427 – Migrate SeaMonkey builders to using mock

    • bug 853720 – After bug 827446, SeaMonkey doesn’t know mozcrash.
    • bug 908090 – ImportError: No module named json, on SeaMonkey Linux/Windows (all) test runs, due to (still) using Python 2.5
    • bug 922076 – Switch tests to using moz.build and manifests
    • bug 934492 – Adjust the languages preference pane to take into account Bug 910192 which removes intl.charset.default and deduces the fallback from the locale
    • bug 949884 – disable pulseaudio in SeaMonkey
    • bug 956007 – Remove front end for removed x-user-def font preferences
  • Working On:

    • bug 110904 – attach signature fails silently on bad paths

    • bug 507676 – Port |Bug 435804 – Remaining rdf cleanup for FilterListDialog| to SeaMonkey
    • bug 837649 – [Tracking Bug] Stop OSX 10.5 support for SeaMonkey project
    • bug 837650 – Stop support for OSX 10.5 in suite/ tree
    • bug 863747 – Add option to disable Location bar history
    • bug 918474 – Default Search dropdown doesn’t get refreshed after adding new search engine
    • bug 928632 – When the birth year is empty, SeaMonkey puts 1900 and in English language
IanN
  • Usual testing, reviewing and commenting.

  • Fixed:
  • Pending check in:
  • Checked in pending review:
  • Waiting for feedback/review:
  • Fixing review comments before checkin:
    • bug 757230 When using add button for permissions in Data Manager set a displayHost

    • bug 798147 Switch to correct pref pane if pref window already open
  • Working on:
    • bug 943335 [TB] Update icons used in searchplugins (Yahoo, eBay, Wikipedia, Amazon, Bing, Twitter)

    • Various SM Council documents.
    • bug 606683 Allow customization of toolbar in Composer and MailNews Composition
    • bug 639690 [META] Re-arrange code between editor and editorOverlay
    • bug 773979 [META] Switch to new drag and drop api in SeaMonkey
    • bug 657234 Move pasteQuote and pasteNoFormatting into contentAreaContextOverlay
    • File/Folder selection in windows.
  • To Do:
    • bug 639395 Get cmd_fontSize to reflect current state of selected content / content at caret.

    • Prefs-in-a-tab.
    • Create FAQ for Friends of the Fish Tank.
    • Help get composer standalone builds working with –enable-tests.
Neil

Fixed on comm-central:

  • bug 943732 Port the new Character Encoding menu to SeaMonkey.
This patch needs to be uplifted to comm-aurora.
  • bug 909093 Update SeaMonkey to use nsIContentPrefService2.

Fixed on comm-beta:

  • bug 977048 Close icon only works for click-to-play plugins.

  • bug 943732 Port the new Character Encoding menu to SeaMonkey.

Working on:

Just bikeshedding over the shape and size of the volume slider.
  • bug 525124 Double-clicking in a blank space opens the advanced property editor.

  • bug 514280 NS_GET_IID can be used on classes which don’t actually declare their own IID.

Stalled due to broken test:

Ratty

Fixed since the last meeting:

  • bug 973346 Use plural form for blocked pop-up notifications (Port bug 853126).

  • bug 980356 Make nsMessengerWinIntegration.cpp compile with frozen linkage. [MailNews]
  • bug 984155 Build Thunderbird with frozen linkage / external API – Windows fixes. [Thunderbird]

Working on:

  • bug 993971 Preview lightweight themes (backgrounds) when View Apply Theme menu is active.

  • XBLify folder selection in the Filter List Dialog.

Waiting for reviews:

  • bug 797240 Update suite/common/app-license.html to reference MPL2 and fix inclusion into about:license

ToDo:

  • Update our front-end SyncUI code.

  • Implement Fx Accounts (Branding? SM Accounts?).

Investigate:
Other stuff:

  • Did some reviews.

  • Bug triage and Bug discussions.
  • Usual end user support and PR in newsgroups and Mozillazine.
rsx11m

Fixed on trunk:

  • bug 989776 Move inline scripts for SeaMonkey’s main about.xhtml page into a separate file.

  • bug 989777 Move inline scripts for SeaMonkey’s aboutPrivateBrowsing.xul page into a separate file.
  • bug 989780 Untrust about:life and consider moving inline scripts and styles into separate files.

Waiting for check-in:

  • bug 994849 Move inline scripts and styles for security-related about: XHTML pages into separate files.

Waiting for review:

  • bug 995706 I am not able to read, compose or send e-mail from my Yahoo Mail accounts.

Working on:

  • bug 844098 Update about:rights content for Safe Browsing based on Toolkit bug 514817 and separate inline scripts.

  • bug 994093 Provide toggle for Geolocation service (geo.enabled) in Privacy & Security preference pane.

Filed:

  • bug 993845 Move event handling for SeaMonkey’s aboutSessionRestore.xhtml page into aboutSessionRestore.js.

  • bug 993847 Move event handling for SeaMonkey’s aboutSyncTabs.xul page into aboutSyncTabs.js.
  • bug 993850 Move command and event handling for the Data Manager from dataman.xul into dataman.js.

Other:

  • Bug triage, testing, and commenting for SeaMonkey and MailNews Core.

  • Requested branch approval for bug 952735 to land for SM 2.26/2.27.
  • End-user information and discussion on MozillaZine.

Any other business?

  • [Ratty] KaiRo reminded us that we need to grow our contributor community. I’m not sure where we could discuss this. I have no idea on how to do this. Perhaps we can get some Engagement experts from Mozilla to give us some suggestions?

    • [IanN] might have a chat with some people and see if they can point me in the right direction.

SeaMonkey Meeting Details

Meeting NotesMozilla Platform: 2014-04-15

Hot Bugs

(Important bugs for which we need to find owners or additional help. If known, please include suggested team or knowledge needed to advance the bug.)

Orange Factor
  • bug 994300 – Frequent OSX browser_frameworker.js | application crashed [@ mozilla::dom::ContentParent::InitInternal(mozilla::hal::ProcessPriority, bool, bool)] “Assertion failure: opened, at /dom/ipc/ContentParent.cpp:1590″ since mochitest-bc split landed.

    • jst to help find owner
Stability

Other

The Need To Know

(Release and system issues that may impact engineering this week.)

Notices/Schedule (lsblakk/sylvestre)

Next Merge: April 28, 2014 Next Release: April 29, 2014
Trains
Central: 31 Aurora: 30 Beta: 29 Release: 28
?? bugs (?? bugs last week) ?? bugs (?? bugs last week)
Unresolved Aurora 30 Trackers (non-security, not tracked for Beta) Unresolved Beta 29 Trackers (non-security)

Build Changes (gps)

(Build changes of which engineers should be aware.)

RelEng (catlee)

(Repo, test, and other information for engineers from the release engineering team.)

  • We’re disabling b2g reftests on the minis for m-a, b2g26 and b2g28

    • We have been running green for several weeks

    • We will not be running any more jobs on Mac Minis from 2010!
    • details on https://bugzil.la/818968

Upcoming Outages/Upgrades

(System outages/upgrades and tree closures that impact engineering.)

Team Stand-ups

(In <2 mins, what did your team accomplish last week, on what is your team working on this week, and on what, if anything, is your team blocked? No questions during the stand-ups. All questions should be asked during the roundtable.)

Accessibility (dbolter)

  • Accessibility desktop goals are finalized, FFOS goals will be prioritized soon after discussion with product.

  • Trevor is proceeding this quarter with work to make accessibility viable in a sandboxed FF.
  • We’re targeting an accessible FFOS/Gaia v2.0.
  • In the meantime FFOS a11y improvements and GAIA a11y works continues, for example bug 981015 landed, to improve our touch adapter.

Firefox Mobile (mfinkle/blassey)

Firefox OS Devices/Porting (ericchou)

  • Worked on Tarako(1.3T+) issues (which were reported on Bugzilla or on SPRD’s ITS)

    • bug 988110 – touch event lost in Tarako monkey test

    • bug 993312 – the USSD “*141#” can’t work
    • bug 993327 – unable to enable Data Connect after turning off WIFI
    • bug 993518 – When in a phone call, the proximity sensor does not turn off the screen
    • bug 990003 – [Perf][Dailer] It takes a long time for the call screen shows up
    • bug 990957 – ringtone does not play out when user set some amr file as ringtone
    • bug 994015 – some mp4 videos play not smoothly
    • Several audio issues which were reported on SPRD’s ITS
  • 1.3+/1.4+ issues

    • bug 984498 – The busy tone is not played when the device is in silent

    • bug 987545 – When headset is connected, uplink voice is picked up by handset mic instead of headset mic
    • bug 986381 – Frame drop observed for high resolution .webm video clips
    • Bluetooth certification issues. (1.4+)
  • It was a bug-fixing week for device team.

Firefox OS Performance (mlee)

<Read Only>

Firefox OS Telephony/WIFI/NFC (kenhkchang)

<Read Only>

  • bug 990472 – [B2G][RIL] mozTelephony.dial() should reject when there are more than 2 calls

  • bug 889737 – [MMI] Unify both sendMMI() and dial() functions
  • bug 784429 – [WebAPI] WebTelephony: Hang-up while connecting, call is not terminated
  • bug 992772 – [B2G][RIL][NetworkManager] ResolveHostName with the DNS of the specified NetworkInterface.
  • bug 995486 – CDMA MO MMS is not working on reference ril
  • bug 989717 – Wifi/Hotspot status error
  • bug 994564 – Use different thread for executing wifi command and netutil command
  • bug 984397 – [NFC] Fix rf_discover in NFC emulator.
  • bug 993330 – [NFC] support notify tag discover by emulator console command.
  • bug 993836 – [NFC] Emulator support for reading NDEF data from type 1 tag.
  • bug 987760 – [v1.4] Investigate test_settings_wifi.py failure.
  • bug 898445 – B2G RIL: Move mozMobileConnection/MozMobileConnectionInfo/MozMobileNetworkInfo/MozMobileCellInfo to WebIDL.
  • bug 995109 – B2G RIL: Don’t handle |dataInfo.connected| in DataConnectionHandler.
  • bug 992568 – Refactor RtspChannel to support HTTP->RTSP redirection and rendering inside the browser
  • bug 993732 – [B2G][Clock] Alarm set with clock app does not fire until user reopens clock app
  • bug 991025 – Enable WiFi test on emulator
  • bug 975778 – [B2G] [Emulator] Support CDMA_FLASH command for Cdma call waiting and 3way calling senario
  • bug 975779 – [B2G] [RIL] add marionette tests for CDMA call waiting and 3way calling
  • bug 939046 – B2G RIL: Data call and RILNetworkInterface enhancement
  • bug 993311 – Convert Network Stats API to WebIDL
  • bug 866938 – B2G MMS: Support email address in receiver field (in review)

Firefox OS Systems – Front End (gwagner)

  • new homescreen for Fx 2.0; regular app, not a certified app; vertical scrolling

  • new task manager for Fx 2.0
  • fixed last 1.4 blockers for download manager

GFX (milan)

<Read Only>

  • Additional items, escalated to preempt some of the scheduled work

    • B2G debug emulator related

    • Shutdown sequence for graphics ipdl
  • OMTC desktop
    • Accelerated windows in progress, looking at which performance issues can be remedied. Aiming to enable early in 32.

    • Some work also being done on Linux/XP software compositor (E10S).
  • Skia content
    • Greening try

    • Looking at performance results (no conclusions yet)
  • APZ improvements
    • In progress
  • v-sync on B2G
    • In progress

Identity (jedp)

<Read Only>

  • Fx Accounts on FxOS: First QA pass finds we fulfill committed user stories

  • Sync on Desktop: Please keep testing

JS (naveed)

<Read Only>

  • Garbage Collection

    • Continue stomping out remaing GGC crashes. More aggressive diagnostics added to Nightly.
  • Front End and Other

    • bug 995200: Enable strict mode for self-hosted code in opt builds, too

    • bug 911147: Implement ES6 Array.prototype.fill

Layout (jet/dbaron)

<Read Only>

  • Testing: reftest is now testing invalidation rects properly again bug 995410

  • Testing: interruptible reflow is now disabled in reftest harness bug 992324
  • Platform parity of Web features: @font-face { src:local(…) } now supported on Android bug 769194

Media (mreavy)

  • Landed major update of AEC we’d been expecting. AEC is now run on getUserMedia streams directly.

    • Was bounced twice and took a week to land due to b2g emulator issues (see m.d.platform)
  • Found that the fix for delays opening audio streams on Mac (bug 919215) didn’t solve that cubeb_init could take hundreds of ms or even >8 seconds, leading to permanent delay/echo on Macs, especially using speakerphone modes. Fixed.
  • MediaStreamGraph now resamples and mixes to the “preferred” output rate (typically 44100 or 48000) before passing audio to AudioStream.
  • Even moving some tests around from one dir to another broke B2G opt emulator (bug 963244 went perma-orange until the move was reverted)

Necko (dougt/jduell)

  • no update this week

Performance (vladan/avih)

  • IOInterposer non blocking observers – less interruptions for normal browsing when collecting IO data (nightly).

  • Reduced addons compatibility checks – most tests now pass.
  • Still fixing maintrhead IO bugs.
  • Still working on talos profiling. Phase one is likely to not support windows.
  • Improved telemetry dashboard: more analytics integration, slowSQL bugfix, jobs timeout notifications.
  • Handling talos regressions (bug 990644) – process hopefully in place, impact unclear.

Seceng (grobinson)

  • We’re working on an addon to help users protect themselves and learn more about Heartbleed. WIP on Github

WebAPI (overholt)

  • Tobie Langel started on a contract today to help advance our Service Workers implementation

    • speaking of Service Workers, the cache API design is coming along and the necko team is getting involved

Quality Programs

(An opportunity to hear about status with the various quality programs that do not have a formal team structure.)

CritSmash (dbolter)

  • Your attention to security bugs _is_ appreciated.

MemShrink (njn)

  • No update.

OrangeFactor (ryanvm)

  • Past week’s OrangeFactor: 11.82 (Previous Week: 11.88).

  • mochitest-bc chunking landed on trunk, yay! Trying to port to Aurora as well.
  • 21 intermittent failures fixed in the last week – List – Thanks!.

Stability (kairo/bsmedberg)

Roundtable

(Comments and questions that arise during the course of the meeting or otherwise do not have a section.)

<Read only beyond this point>

Mailing List Threads

(Threads that are likely to be of interest to engineering from various mailing lists.)

Good Reads

(Links to blog posts, books, videos, etc. that you think will be of interest to others.)

irc #planning Log From This Meeting

10:56 KaiRo: cpeterson: no stability audible today
10:56 cpeterson: KaiRo: ok
11:01 RyanVM|sheriffduty: mreavy: safe to say that the "right" media people aren't here for me to rant about the current state of the media mochitests? (not webrtc stuff)
11:01 RyanVM|sheriffduty: i.e. bug 994877
11:02 RyanVM|sheriffduty: I think I counted 6-7 bugs in the top 20 OF
11:02 mreavy: RyanVM|sheriffduty: they are sleeping, but I will be speaking to the media mochitests in my media update
11:02 RyanVM|sheriffduty: great
11:02 Waldo: woo taxes /o\
11:02 mreavy: RyanVM|sheriffduty: yeah, way too many :-(
11:02 RyanVM|sheriffduty: always skips hot bug
11:02 Waldo: https://wiki.mozilla.org/Platform/2014-04-15 for anyone who needs it
11:07 Waldo: woo for doing it right from the start in a11y \o/
11:07 davidb: :)
11:11 RyanVM|sheriffduty: bug 994877 is tracking mreavy's comments about media mochitest problems
11:12 davidb: mreavy: what is the best way to test webrtc?
11:12 davidb: (i use nightly)
11:13 mreavy: davidb: soon it will be Loop, which will be landing in the next week or so.  In the meantime opentokrtc.com is what I recommend.  For example, opentokrtc.com/davidb will give you a "room".  You can share that link with whoever you want to have a call with.
11:14 dveditz: unofficial Heartbleed addon: https://addons.mozilla.org/en-US/firefox/addon/heartbleed/
11:14 dveditz: seceng is working on a better one though
11:14 dveditz: (actual input from UX folks, no bad-for-privacy reliance on a server)
11:14 Waldo: also notes that contractor is a longtime Mozillian, if his memory serves \o/
11:15 Waldo: we are laughing in here because of departing just as Bob was being poked
11:15 bhearsum: dveditz++
11:17 jesup: http://mozilla.github.io/webrtc-landing/ has links to several services that use WebRTC that you can use for calls/chatting/file xfer/etc (about to update it with some more)
11:19 jesup: davidb: Updated 
11:20 davidb: ok great
11:20 davidb: i was wondering if one was better than the other
11:20 davidb: this stuff is getting pretty awesome
11:21 mreavy: david: my preference is opentokrtc.com --- but soon it will be Loop :-)
11:21 mreavy: davidb: ^^
11:21 davidb: ty
11:23 KaiRo: realizes he potentially should have put the Mac Flash crashes into the agenda, given how many people at Mozilla use Macs

Engineering Meeting Details

  • Tuesday 2014-04-1511:00 am Pacific Standard Time

  • Dial-in: conference# 98411
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 98411

    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 98411
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 98411
    • CA/Vancouver: +1 778 785 1540, x92 Conf# 98411
    • CA/Toronto: +1 416 848 3114, x92 Conf# 98411
    • UK/London: +44 (0)207 855 3000, x92 Conf# 98411
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 98411
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 98411
  • Engineering Vidyo Room / Air Mozilla / MTV Warp Core / TOR Finch / SFO Warfield / PDX Hair of the Dog
  • join irc.mozilla.org #planning for back channel

Software CarpentryDo Not Be Worried

Sage advice for our instructors and learners from an eight-year-old:

Do not be worried and you will not make mistakes.

Air MozillaEngineering Meeting

Engineering Meeting The weekly Mozilla engineering meeting.

hacks.mozilla.orgPowerful tools for developing Web Apps

In the recent years, web development changed drastically. The emergence of the mobile web and the new form factor of smart phones created the demand for different solutions than the former desktop-only web.

Since then a lot of frameworks and tools have been created, with new ones being added almost weekly. Now, we web developers are faced with a different problem: for every development concern, there are multiple options to consider, without clear pros or cons. It is easy to feel intimidated not only by the choices available, but also by how similar those choices are.

Every day, web developers have to successfully overcome this issue and turn this diversity from a daunting proposition into an empowering one.

But why reinvent the wheel all the time?

A set of solid recommendations for app developers

Mozilla is putting together a core set of tools and recommendations that we believe are the most useful for making Web apps.

The key considerations for what we might recommend are:

  • Sufficiently well-documented and straightforward to use for an average developer (we will concisely document the required knowledge one needs in order to engage with the technology).
  • Loosely coupled and as modular as possible (so you can follow one recommendation but not another if you are so inclined).
  • Tested on Mozilla products (i.e. the UI components will perform well on Firefox OS, etc), but with cross-platform apps in mind

The upcoming, initial set of recommendations involves a toolchain that’s core to any modern web app, like a JavaScript framework, templating interface, UI framework and task runner. We will employ existing solutions wherever possible and write libraries or utilities to fill in the gaps.

On an ongoing basis, we’ll expand this systematically across the different parts of the development experience, such as offline handling or the use of various Web APIs.

All of this will be delivered in one central spot: The App Center on the Mozilla Developer Network (MDN), our established, renowned resource for web app development.

But I already have it all figured out!

We encourage you to share your success story with us. Heck, share your failures too. We need all the feedback we can get from everyday web developers. If you have a tool chain of your own, with your favorite JavaScript framework, etc., we’re not interested in converting you to something else. We’re trying to help developers who aren’t sure how to go about making these kinds of decisions.

Come join us!

In the Mozilla tradition, this is a community-driven process. This means your input is encouraged and appreciated, and we would like your help to make this a successful initiative!

The main discussions around this will happen in the following places:

For the initial tool chain recommendations, I started a thread on the mailing list already, go ahead and weigh in.

If you have ideas for topics worth exploring in future iterations, don’t be shy and open a new thread to get the discussion started.

What’s next?

If this whets your appetite, then great! 2014 is an exciting year to be a web app developer. We’ll keep you updated here on Hacks, as well as the MDN App Center over the coming months.

WebmakerOppi Festival

On April 11 & 12 Webmaker and Open Badges had teachers cutting, gluing, and sharing at the first annual Oppi Festival in Helsinki, Finland. Since “oppi” means “learning” in Finnish, this was the perfect place to have exciting conversations about celebrating learning; we challenged participants who came to our Mozilla Space to share what “open learning” means to them.

Open Learning wall

Over two days, we held 2 discussion sessions and 4 hands-on workshops about everything from Mozilla’s mission to web literacy’s learning pathways and the new Badge Kit (still in private beta). When we first arrived, we were excited at the prospect of building teaching kitOppi Festivals and sharing them with the Webmaker community. In reality, we were a bit too ambitious; the 50-minute sessions didn’t allow for thorough introductions to Thimble and designing teaching kits. Even so, we had rewarding conversations about the intersection of privacy and collaboration, and spoke with young people about how to best surface these ideas in the classroom. And by preparing an etherpad of links used throughout the unconference, everyone had access to all the resources as we went along; hopefully they’ll continue to use them beyond the Festival.

With exhibitors like Rovio’s Angry Birds Playground, speakers like Dr. Sugata Mitra of “Hole in the Wall” fame , and performances by talented artists like Finland’s deaf rapper Signmark, it’s no wonder the 1300 participants were buzzing with conversation and ideas as they came coming through the Oppi doors. We look forward to hearing from the organizers of the Oppi Festival during this week’s Teach the Web call on Thursday.

More photos from the Oppi Festival here.

Meeting NotesMozilla Project: 2014-04-14

All-hands Status Meeting Agenda

Items in this section will be shared during the live all-hand status meeting.

Friends of Mozilla

  • Continued thanks to the people patiently answering posts in .governance – Yoric, nnethercote, Gerv, bz, and so many more!

  • [RyanVM] Thanks to Girish Sharma (Optimizer) for helping fix devtools test leaks and failures that helped us roll out bigger mochitest browser-chrome improvements last week.

Upcoming Events

Monday, 14 April
Thursday, 17 April
  • 10:00 AM Pacific / 17:00 UTC: Grow Mozilla discussion — a forum for discussing community building at Mozilla

Project Status Updates (voice updates)

Firefox Desktop

Speaker Location: Madhava in Toronto

  • Firefox 29 is now a mere 2 weeks away (Tuesday, April 29th)

    • includes the Australis UI changes, easier customization, simple sync-set-up, our first ever update/first-run tour

    • start stretching: it is no exaggeration at this point to use kermit arms
  • 1st Australis video
Firefox Mobile
  • UI telemetry is being collected, and we are starting to analyze

  • Quick Share on context menus landed. Some followups filed for UX tweaks.
Webmaker

Speaker Location: nonverbal

Open Badges

Speaker Location: nonverbal

  • Chicago Mayor Rahm Emanuel Announced Expanded Citywide Summer of Learning and Earning Initiative.

    • The Summer of Learning and Earning will once again engage youth by challenging them to earn digital badges to mark their successes.

    • Read more on the blog.
Mozilla Science Lab

Speaker Location: nonverbal

Grow Mozilla

Speaker Location: San Francisco

When you get your 2 MozLove t-shirts, check out this 3 step guide to connect new people to Mozilla:

  • Tell them about our mission

  • Tell them we need their help
  • Tell them where to find opportunities

Come to the Grow Mozilla discussion this Thursday at 10 pacific to learn more about how to connect new people to Mozilla and to help us make more resources like this to support the contributor growth goal for the year.

Firefox Marketplace

Speaker Location: Non-verbal

Major performance improvements:

  • Re-enabled gzip after addressing security flaws (8x size decrease)

  • Replaced appcache with traditional caching (20x size decrease)
  • Lazy-loading uncachable Persona libraries
  • Caching all responses in IndexedDB; refreshing asynchronously
  • Optimized API responses for Marketplace front-end
  • Caching API hits in our CDN
  • 71 other closed bugs
  • cold start time now being tracked
IT

Speaker Location:mjeffries, San Francisco

VidyoDesktop 3 Goes Live!

Thanks to those who provided feedback on Vidyo 3, we’ve used it to fix a few things and now its ready for prime time. A mandatory and automatic update will be pushed on Monday morning, April 21st – for those that want to check out the client now, the download link is noted below [1]. Ample notice will be provided before v2 is no longer supported.

Some of the new features include:

  • Simplified UI w/ no Flash (means fewer crashes for you)!

  • Client auto sign-in w/ secure token (you no longer need to frequently type in your LDAP password to login)
  • Enhanced echo-cancellation for all OSs (especially for Macs!)
  • Ability to join any meeting by clicking a Vidyo room URL
  • Improved support and stability for Linux

Support Documentation:
https://mana.mozilla.org/wiki/display/SD/Vidyo+Desktop+3

If you have any questions – please submit a Service Now request, reach out to servicedesk@mozilla.com, or ask in #servicedesk

[1] – https://mozilla.box.com/vidyoclient

NOTE: After upgrading/installing the Vidyo client will ask you to upgrade to an older version, please select “Not Now”. You will no longer be prompted after 4/21/14.

MOC Update

  • The Mozilla Operations Center (MOC) is now staffed 24/7, and has begun the transition away from third-party incident handling.

  • The MOC has identified the top IT Services & Systems, and published an SLA framework for Incident handling.

These efforts are to ensure more consistent and timely IT incident handling and communication.

Speakers

Presenter Title Topic Location Share? Media More Details
Who Are You? What Do You Do? What are you going to talk about? Where are you presenting from? (Moz Space, your house, space) Will you be sharing your screen? (yes/no, other info) Links to slides or images you want displayed on screen Link to where audience can find out more information
Debbie Cohen Chief of People Global Workforce MV No N/A N/A
Mihca Anderson HR Business Partner Removing Roadblocks to Productivity Mountain View No N/A Survey Results
Joe Stevensen Operations Security Manager Heartbleed update Mountain View No N/A Heartbleed Security Advisory blog post

Roundtable

Do you have a question about a Mozilla Project or initiative? Let us know by Friday- we’ll do our best to get you an answer.

Please note that we may not always be able to get to every item on this list, but we will try!

Who are you? Area of question Question
What’s your name? What do you work on? Is your question about policy, a product, a Foundation initiative, etc. What would you like to know?

Welcome!

Let’s say hello to some new Mozillians! If you are not able to join the meeting live, you can add a link to a short video introducing yourself.

Introducing New Volunteers

New Volunteer(s) Introduced by Speaker location New Volunteer location Will be working on
Who is the new volunteer(s)? Who will be introducing that person? Where is the introducer? Where is the new person based? What will the new person be doing?

Introducing New Hires

New Hire Introduced by Speaker location New Hire location Will be working on
Hannah Kane Geoffrey MacDougall Toronto office PDX Program Manager for MoFo Engagement Team. Fundraising, Maker Party, advocacy campaigns like StopWatching.Us, government and other large-scale partnerships, contributor engagement, metrics and dashboards, etc.
Jessica Osorio Mary Colvig SF SF Jessica is filling in for Chelsea Novak for a year. She’ll manage supporter engagement activities as part of the Community Engagement team.
Sean Bohan Darren Herman New York New York Strategic Development Principal

<meta>

Notes and non-voice status updates that aren’t part of the live meeting go here.


  • Dial-in: conference# 8600

    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 8600

    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 8600
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 8600
    • CA/Vancouver: +1 778 785 1540, x92 Conf# 8600
    • CA/Toronto: +1 416 848 3114, x92 Conf# 8600
    • UK/London: +44 (0)207 855 3000, x92 Conf# 8600
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 8600
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 8600

Software CarpentrySummarizing Our Instructors' Skills

We've been asking bootcamp participants to tell us about themselves for a while now, so it seems only fair to share some information about our instructors. First, of the 82 instructors who responded to our survey two weeks ago, how many are comfortable teaching which topic to novices, to intermediates, or not at all?

Not At AllNovicesIntermediates
Python42751
...NumPy/SciPy163432
...Packaging442018
...OOP163135
...Data Visualization183727
...Testing164026
R501814
...Data Visualization541315
...plyr6688
...Packaging6868
Unix Shell12358
Git/GitHub43246
Mercurial571312
Subversion392221
SQL342622
Regular Expressions163729
Make322723

Thanks to Jenny Bryan, we have a ranked visualization of those responses:

Instructor Skills

Second, who feels comfortable setting up on which platforms? (The responses don't sum to 82 because many people selected several options.)

Linux71
Mac OS X61
Windows42
Desktop VMs33
Cloud VMs21

And finally, where are people from?

North America60
Europe13
Australia/New Zealand6
Sub-Saharan Africa1
East Asia1
South America1

We have information about instructors' research areas as well, but it's hard to categorize. Once we've recovered from running our biggest events ever, we'll dig into it a little more and share what we find; until then, you can download the raw data and tell us what correlations you can find.

Mozilla Add-ons BlogAdd-on Compatibility for Firefox 29

Firefox 29 will be released on April 29th. Here’s the list of changes that went into this version that can affect add-on compatibility. There is more information available in Firefox 29 for Developers, so you should read that too.

Australis!

This is an actual movie

Yes, this is a joke.

This is a big one. The Australis theme introduces major changes that all add-on developers should be aware of, but it’s nowhere nearly as dramatic as initially thought. We’ve already been blogging about it extensively, so please give these articles a read if you haven’t already:

Notable changes include the removal of the add-on bar and the Firefox button on Windows, the introduction of the menu panel, and an overhaul in the toolbar customization system. Toolbars are no longer hidden for about: pages, there’s no small/large button setting anymore, and tabs are always on top.

Make sure you test your add-on extensively, paying special attention to button customization.

If you notice any problems in your add-ons related to Australis, please file a bug and add it as a dependency to one of these bugs:

  • Add-on issues. This is for add-ons that haven’t been updated yet and are visually broken in Firefox 29 and above.
  • Australis add-on bugs. Use this one if something is broken in your add-on and you believe it’s a bug in the new code.

General

XPCOM

New!

Please let me know in the comments if there’s anything missing or incorrect on these lists. If your add-on breaks on Firefox 29, I’d like to know.

The automatic compatibility validation and upgrade for add-ons on AMO will happen soon, so keep an eye on your email if you have an add-on listed on our site with its compatibility set to Firefox 28.

Air MozillaFirefox Australis

Firefox Australis Learn more about the biggest change to Firefox since Firefox 4.

The Mozilla BlogMozilla Moving Forward

Mozilla finds itself in the midst of an unexpected leadership transition. Along with my fellow board members Reid Hoffman and Katharina Borchert, I am pleased to announce the next step in this transition: the appointment of Chris Beard to the Mozilla Corporation Board of Directors, and as our interim CEO.

We began exploring the idea of Chris joining the Board of Directors some months ago. Chris has been a Mozillian longer than most. He’s been actively involved with Mozilla since before we shipped Firefox 1.0, he’s guided and directed many of our innovative projects, and his vision and sense of Mozilla is equal to anyone’s. I have relied on his judgement and advice for nearly a decade. This is an excellent time for Chris to bring his understanding of Mozilla to the Board.

We have also appointed Chris as interim CEO. In this time of transition there is no better person to lead us. Chris has one of the clearest visions of how to take the Mozilla mission and turn it into programs and activities and product ideas that I have ever seen. In the early years at Mozilla he was responsible for leading the Mozilla product, marketing and innovation teams. More recently, Chris was our CMO, leading user, developer and community engagement activities globally, including the initial launches of Firefox on Android and Firefox OS at MWC. Chris is the right person to lead us through this time and he is a strong candidate for CEO.

Mozilla needs to act quickly and decisively. This is key for any leader at Mozilla, including our CEO, whether interim or otherwise. Chris’ experience and insight is highly aligned with our goals. We will continue to deliver Firefox OS to additional markets and form factors in 2014 as we demonstrate the unique user experiences that only the open Web can provide. We will continue to bring the richness and flexibility of the Web to Firefox users and will further integrate our services offerings.

The open Web and Mozilla are facing challenges that are very similar to those we faced when we first started Mozilla — centralized business models and technology with barriers to interoperability and new entrants. Today, online life is feature-rich, highly centralized and focused on a few giant organizations that exert control over almost all aspects of the experience. In this environment, there is a deep and urgent need for an open, exciting alternative that shows what the open Web brings to this setting.

Mozilla is building these kinds of alternatives for the world. It’s why we’re here. It’s why we gather together to focus on our shared mission and goals. We intend to use recent events as a catalyst to develop and expand Mozilla’s leadership. Appointing Chris as our interim CEO is a first step in this process. Next steps include a long-term plan for the CEO role, adding board members who can help Mozilla succeed and continuing our efforts to actively support each Mozillian to reach his or her full potential as a leader.

Mitchell Baker, Executive Chairwoman

Air MozillaMozilla Weekly Project Meeting

Mozilla Weekly Project Meeting The Monday Project Meeting

QMOFirefox 29 Beta 7 testday results

Hello everyone!

Friday, April the 11th, we held another Testday for Firefox 29 Beta 7. A big thank you is in order for all of you helping us running tests on multiple platforms, doing exploratory testing and updating bugs. More details about the work done can be found in the etherpad.

Special thanks go out to: florin_nechita, madamezou, tiziana, emerson, lakshmi, bsupreeth, sudharani, Meghraj, cbaba20, and to all our moderators! Your work is always appreciated.

We look forward to seeing you at the next Testday, so follow us on QMO for details!

QMOBug Verification Day

Hi everyone!

Wednesday, April 23rd, we will be holding our weekly Bug Verification Day. This event is held on the #testday IRC channel and it’s addressed to everyone willing to get involved in improving Firefox.

You don’t need to have any previous experience in working with bugs. Ask for help on the #testday channel and someone there will give you assistance. More details are available in the wiki page we set up for you.

If you’re unable to attend these meetings and still want to get involved, you can verify bugs on your own time. Just add the [bugday-20140423] tag to the whiteboard or a comment for every bug you work on, so we know you participated to this event.

Join us and help make Firefox better!

When: April 23, 2014.

Mozilla SecurityTesting for Heartbleed vulnerability without exploiting the server.

Heartbleed is a serious vulnerability in OpenSSL that was disclosed on Tuesday, April 8th, and impacted any sites or services using OpenSSL 1.01 – 1.01.f and 1.0.2-beta1. Due to the nature of the bug, the only obvious way to test a server for the bug was an invasive attempt to retrieve memory–and this could lead to the compromise of sensitive data and/or potentially crash the service.

I developed a new test case that neither accesses sensitive data nor impacts service performance, and am posting the details here to help organizations conduct safe testing for Heartbleed vulnerabilities. While there is a higher chance of a false positive, this test should be safe to use against critical services.

The test works by observing a specification implementation error in vulnerable versions of OpenSSL: they respond to larger than allowed HeartbeatMessages.

Details:
OpenSSL was patched by commit 731f431. This patch addressed 2 implementation issues with the Heartbeat extension:

  1. HeartbeatRequest message specifying an erroneous payload length
  2. Total HeartbeatMessage length exceeding 2^14 (16,384 bytes)

Newer versions of OpenSSL silently discard messages which fall into the above categories. It is possible to detect older versions of OpenSSL by constructing a HeartbeatMessage and not sending padding bytes. This results in the below evaluating true:

/* Read type and payload length first */
if (1 + 2 + 16 > s->s3->rrec.length)
  return 0; /* silently discard */

Vulnerable versions of OpenSSL will respond to the request. However no server memory will be read because the client sent payload_length bytes.

False positives may occur when all the following conditions are met (but it is unlikely):

  1. The service uses a library other than OpenSSL
  2. The library supports the Heartbeat extension
  3. The service has Heartbeat enabled
  4. The library performs a fixed length padding check similar to OpenSSL

False negatives may occur when all the following conditions are met, and can be minimized by repeating the test:

  1. The service uses a vulnerable version of OpenSSL
  2. The Heartbeat request isn’t received by the testing client

I have modified the Metasploit openssl_heartbleed module to support the ‘check’ option.

You can download the updated module at
https://github.com/dchan/metasploit-framework/blob/master/modules/auxiliary/scanner/ssl/openssl_heartbleed.rb

We hope you can use this to test your servers and make sure any vulnerable ones get fixed!

David Chan
Mozilla Security Engineer

Air MozillaWebmaker Demos April 11

Webmaker Demos April 11 Webmaker Demos April 11

Firebug BlogFirebug 2.0 beta 1

getfirebug.com has Firebug 2.0 beta 1

Firebug 2.0b1 fixes 13 issues
Firebug 2.0b1 is compatible with Firefox 30-31

 

The feedback we have got for Firebug 2 so far has been positive, some issues reported and fixed. We feel strong and in order to get more feedback we decided to move forward and start beta phase. Beta releases will also be uploaded on AMO to update the beta channel.

Highlights from this release

One little improvement made it into this release. If you deal with Cookies you can now export all cookies for the current page using new Export as JSON to Clipboard action (issue 7197).

In order to have this action available you need to set the following preference to true: extensions.firebug.cookies.jsonClipboardExport
(use about:config)

 


 

One useful concept improved in Firebug 2 is related to JavaScript errors and the debugger. Thanks to JSD2 API Firebug could finally implement it correctly. So, let’s take a look at four scenarios that explains how you can identify JS errors in your code and fix it.

Break On Next Error

This feature is part of Break On … concept in Firebug. This time we are interested in Break On Next Error related to the Console panel.

This features allows to break on an error that happens next. It’s useful in cases where the user knows when the error happens.

The use case is (try live example):

  • Open Firebug and enable the Console and Script panel
  • Switch to the Console panel and click Break On All Errors
  • Operate your page to cause JS error
  • Firebug should switch to the Script panel and break in the debugger
    at the line where the error happened

Error Breakpoint

In this case Firebug integrates JS errors an breakpoints within the Console panel.

This features allows to break on particular error that the user created a breakpoint for.

The use case is (try live example):

  • Open Firebug and enable the Console and Script panel
  • Operate your page to cause an error
  • You should see an error log in the Console panel allowing to set a breakpoint on it
  • Operate your page to cause the same error
  • Firebug should switch to the Script panel and break in the debugger
    at the line where the error happened

Break On Exceptions

In this case we move into the Script panel and use one of its options.

This feature allows to break on any exception that happens in your app. It works as an option and you don’t need to reactivate it after it happens.

The use case is (try live example):

  • Open Firebug and enable the Script panel
  • Switch to the Script panel and check Break On Exceptions option in the panel tab options menu
  • Operate your page to cause an exception
  • Firebug should switch to the Script panel and break in the debugger
    at the line where the error happened

Ignore Caught Exceptions

This case is an extension of the previous one. In some cases the user is only interested in uncaught exceptions since the others are caught and known.

This features allows to break on any exception that happens and is *not* caught by catch clause. It works as an option you don’t need to reactivate it.

The use case is (try live example):

  • Open Firebug and enable the Script panel
  • Switch to the Script panel and check Break On Exceptions and Ignore Caught Exceptions option in the panel tab options menu
  • Operate your page to cause uncaught exception
  • Firebug should switch to the Script panel and break in the debugger
    at the line where the error happened

Please post feedback in the newsgroup, thanks.

Jan ‘Honza’ Odvarko

 

Firefox AppsLINE Adds New Stickers & More

sticker_01LINE continues to add features and improve functionality for the Firefox OS version of its globally popular messaging app.

Performance-wise, LINE has been enhanced for speed and usage efficiency. This means all those insanely adorable stickers you can share with friends will arrive faster than ever before!

Speaking of stickers… LINE has added a bunch of new characters and designs to its catalog of free goodies. Better still, you can now easily gift stickers to your contacts. Who doesn’t enjoy receiving stickers of dancing bears in love?

sticker_02

Firebug BlogFirebug 1.12.8

The Firebug team released Firebug 1.12.8. This version represents a maintenance release fixing compatibility issues with upcoming Firefox versions.

 

Firebug 1.12.8b1 has also been released to update users on AMO beta channel. This version is exactly the same as 1.12.8.

 

Firebug 1.12.8 is compatible with Firefox 23 – 30

Firebug 1.12.8 fixes 2 issues.

 

JSD1 vs. JSD2

This release is solving a compatibility problem related to the JavaScript Debugger Engine API (JSD) in Firefox. This API is going to be removed from Firefox 31 and any extension that is using it (including Firebug) needs to switch to JSD2 that has been around for a while.

The JavaScript debugger in Firebug 1.12.8 is based on the (old) JSD API, so the Script panel will be disabled if you’re running this Firebug version on Firefox 31.

The Script panel displays a message explaining why it’s disabled and a link to the Firebug 2 page. Firebug 2.0 is fully based on JSD2. Firebug 2.0 requires Firefox 30 as the minimum version and all users running it should check it out. Even when Firebug 2.0 is not finished yet, it’s already quite stable.

 

Here is a quick compatibility table:

  • Firefox 23-30 with Firebug 1.12.8
  • Firefox 30+ with Firebug 2.0 beta 1

Please post feedback in the newsgroup, thanks.

Jan ‘Honza’ Odvarko

 

QMOFirefox 30 Aurora Testday, April 18th

Greetings mozillians,

We are happy to announce that Friday,  April 18th, we’re going to hold the Firefox 30.0 Aurora Testday. We will be testing the latest Aurora build, with focus on recent changes and fixes. Detailed instructions on how to get involved can be found in this etherpad.

No previous testing experience is required so feel free to join via #testday IRC channel and our moderators will offer you guidance and answer your questions.

Join us next Friday and let’s make Firefox better!

When: April 18, 2014.

Mozilla Add-ons BlogChanges to unsafeWindow for the Add-on SDK

In Firefox 30 the Add-on SDK is making a change to the execution environment for content scripts. While this change will not affect most add-ons, some patterns will no longer work. Specifically, content scripts will no longer be able to use unsafeWindow or window.wrappedJSObject to make JavaScript objects available to content. The more common pattern of accessing objects in the page directly via unsafeWindow will continue to work as expected.

What we’re introducing instead are some new APIs that you can use to share functions and objects with content explicitly. While you’re working on migrating to these new APIs, there’s a mechanism you can use to switch your add-on back to the old behavior as a short-term measure.

Who’s affected?

Add-on SDK-based add-ons that use unsafeWindow or window.wrappedJSObject in content scripts to share JavaScript objects with the scripts loaded by a web page will be broken by this change.

By default, content scripts and the scripts loaded into web pages are insulated from each other. They can both see the DOM, but content scripts can’t access objects defined by page scripts, and page scripts can’t access objects defined by content scripts:

// content-script.js
var button = document.getElementById("show-page-script-var");
button.addEventListener("click", function() {
  // access object defined in page script
  console.log(window.pageScriptObject.greeting);        // undefined
}, false);
 
window.contentScriptObject = {"greeting" : "hello from add-on"};
// page-script.js
var button = document.getElementById("show-content-script-var");
 
button.addEventListener("click", function() {
  // access object defined by content script
  console.log(window.contentScriptObject.greeting);     // undefined
}, false);
 
// define object to be accessed by content script
window.pageScriptObject = {"greeting" : "hello from web page"};

Sometimes a content script wants to break through this insulation, and to do that it can use unsafeWindow (or window.wrappedJSObject, which is identical):

// content-script.js
var button = document.getElementById("show-page-script-var");
button.addEventListener("click", function() {
  // access object defined in page script
  console.log(unsafeWindow.pageScriptObject.greeting);  // "hello from web page"
}, false);
 
unsafeWindow.contentScriptObject = {"greeting" : "hello from add-on"};
// page-script.js
var button = document.getElementById("show-content-script-var");
 
button.addEventListener("click", function() {
  // access object defined by content script
  console.log(window.contentScriptObject.greeting);     // "hello from add-on"
}, false);
 
window.pageScriptObject = {"greeting" : "hello from web page"};

From Firefox 30 onwards, this mechanism won’t work any more to share objects from the content script to the page script:

// content-script.js
var button = document.getElementById("show-page-script-var");
button.addEventListener("click", function() {
  // access object defined in page script
  console.log(unsafeWindow.pageScriptObject.greeting);  // "hello from web page"
}, false);
 
unsafeWindow.contentScriptObject = {"greeting" : "hello from add-on"};
unsafeWindow.contentScriptPrimitive = 42;
// page-script.js
var button = document.getElementById("show-content-script-var");
 
button.addEventListener("click", function() {
  // access primitive defined by content script
  console.log(window.contentScriptPrimitive);            // 42
  // access object defined by content script
  console.log(window.contentScriptObject.greeting);     // undefined
}, false);
 
window.pageScriptObject = {"greeting" : "hello from web page"};

Again, the use of unsafeWindow to access variables defined in the page script is unaffected, so this change is asymmetric. Content scripts can still access page objects using unsafeWindow, but not vice versa.

Also note that the content script will still be able to share primitive values with the page using unsafeWindow, just not objects.

If the page script tries to read a variable defined using unsafeWindow, it will get the value undefined. If it tries to write to such a variable, the browser will throw an exception with this message: “Permission denied to access property [name of the property]“.

The workaround

In the short term, there’s a new option in package.json called “unsafe-content-script” under the “permissions” key. By setting it to true you can revert to the old behavior:

"permissions": {
  "unsafe-content-script": true
}

However, this is only a temporary fix to enable your add-on to keep working while you update to the new APIs. We will deprecate and eventually remove this flag.

The real fix

The real fix is to use three new APIs to share objects and functions with web content: cloneInto(), exportFunction(), and createObjectIn(). All three of these functions are made available to content scripts as globals.

cloneInto()

You can use cloneInto() to clone an object from the content script’s context into the page script’s context. cloneInto() creates a structured clone of the object in the target context, and returns a reference to the clone. You can then assign that to a property of the target window, and the page script can access it:

// content-script.js
contentScriptObject = {"greeting" : "hello from add-on"};
unsafeWindow.contentScriptObject = cloneInto(contentScriptObject, unsafeWindow);
// page-script.js
var button = document.getElementById("show-content-script-var");
 
button.addEventListener("click", function() {
  // access object defined by content script
  console.log(window.contentScriptObject.greeting);     // "hello from add-on"
}, false);

You can also assign the reference to an object you’ve created using createObjectIn():

var foo = createObjectIn(unsafeWindow, {defineAs: "foo"});
var contentScriptObject = {"greeting" : "hello from add-on"};
unsafeWindow.foo.contentScriptObject = cloneInto(contentScriptObject, unsafeWindow);
// page-script.js
var button = document.getElementById("show-content-script-var");
 
button.addEventListener("click", function() {
  // access object defined by content script
  console.log(window.foo.contentScriptObject.greeting); // "hello from add-on"
}, false);

exportFunction()

You can use exportFunction() to expose a function from a content script to a page script. In this way a function defined in a content script can be called by the page script. Any non-native arguments, and the return value, are cloned into the page script’s context.

You can export the function to the target’s window object:

// content-script.js
var salutation = "hello, ";
function greetme(user) {
  return salutation + user;
}
 
exportFunction(greetme, unsafeWindow, {defineAs: "greetme"});
// page-script.js
var button = document.getElementById("call-content-script-function");
 
button.addEventListener("click", function() {
  console.log(window.greetme("page script"));           // "hello, page script"
}, false);

You can also export the function to an object you’ve created in the page context using createObjectIn(). This code creates a new object in the page’s context called foo, and attaches the greetme() function to that object:

// content-script.js
var salutation = "hello, ";
function greetme(user) {
  return salutation + user;
}
 
var foo = createObjectIn(unsafeWindow, {defineAs: "foo"});
exportFunction(greetme, foo, {defineAs: "greetme"});
// page-script.js
var button = document.getElementById("call-content-script-function");
 
button.addEventListener("click", function() {
  console.log(window.foo.greetme("page script"));
}, false);

createObjectIn()

You can use createObjectIn() to create a new object in the page script’s context. You can then export objects and functions to that object, instead of the target scope’s global window. See the previous sections for some examples of this.

Structured cloning

These functions use the structured clone algorithm to clone objects into the page context. This is more capable than JSON serialization, but still has some serious limitations. Most notably, you can’t clone functions, so you can’t export functions that take functions as arguments (such as callbacks) and functions that return functions. However, we’re working on adding better support at least for common patterns like callbacks.

More details

To learn more about the new APIs see the reference documentation:

If you have any questions, please ask in the Jetpack mailing list or the #jetpack channel on irc.mozilla.org.

Mozilla KoreaThe first Korean Firefox DevCon was crowded

The first Firefox developer conference in Korea was held on April, 10th on COEX 317 in Gangnam, Seoul. It’s co-located with WWW 2014 and memorial event of WWW 25th together. Over 250 web developers registered this event and were interested in Mozilla’s mission and Firefox OS’s new trends.

Thomas Ho, a director of mobile devices in Mozilla Taiwan introduced Firefox OS’s new devices and release schedule in this year and announced ZTE Open C dual core unlock phones from April 15th.

Karl Dubost, a expert on web compatibility presented some issues on mobile compatibility and showed demo of Firefox’s new developer tools including responsive web and 3D view and how to debug efficiently. He presented some examples of Korean sites including Naver, Dauma and Gmarket.

Hyeonseok Shin of a lead on Korea community explained Firefox OS’s app development including marketplace and app review, Sangpil Byun at Daum Firefox OS SIG spoke unique experiences how to contribute source code for Korean keyboard in Gaia. In lighting talk, community members explained how to work and join several projects as like Myungkwon Yang for product l10n, Seunghun Jang for Hacks blog and Sooyoong Seol for Webmaker.

Most of attendees gained their experience at first hand of Firefox OS devices, Keon and ZTE Open. It included Korean user interface and keyboard support as test devices.

In HTML5 session, Daniel Davis of W3C gave a great talk with demonstration of Websocket, WebGL and WebRTC and introduced new features of HTML including template, custom element, responsive image and document hidden event.

Junki Kim, SK Planet shared his development story of HTML5 2D casual game. He explained considering factors for 2D web game on the mobile and how to use proper usages of HTML5 game engine. Channy Yun also shortly presented high performance 3D game on desktop made by Mozilla and Unreal engine.

As a partner session, Jongsu Oh of LG Electronics did dev. story of Fireweb devices for Brazil market cooperated with Mozilla. He explained how to work together global in Mozilla including On-line tools of Bugzilla, IRC and Wiki and offline Firefox OS weeks too. He said all of things in Mozilla are opened and it’s unique to do considerable implementation through consensus.

Finally Kiyong Cha of Line plus did Line app, one of world leading mobile messengers. He emphasized importance of mobile user’s pattern not to recognize web or app. They think it’s just app and smart-phone, so Line app has to be acted like ‘native app’. For this, he used several technologies including push notification, indexed DB, web worker and contact API with async and changing small pieces of data for performance and seamless user experiences.

This event was financially sponsored by Daum and its Firefox OS SIG. (Some of community members also are working there.) Thanks for Daum for full supports. Also LG Electronics and Paygate also helped us to support speakers and payment system too. Line plus also prepared good talk and goodies for attendees. Most of all, this event was fully organized by community volunteers. If you want to join our community, please let you join in mozillakorea@googlegroups.com or refer to how to join.

- #fxdevconkr from Editoy

Air MozillaProblems and cutting costs for Mozilla's hybrid (EC2/in-house) continuous integration

Problems and cutting costs for Mozilla's hybrid (EC2/in-house) continuous integration Issues faced when running an inter data center continuous integration and cost savings on AWS.

WebmakerWebmaker Training with Friends

reposted from Laura Hilliger’s blog at zythepsary.com

This weekend, I’ll be leading a Webmaker Training for the National Citizens Service (NCS). NCS is an organization in the UK that provides learning opportunities for young people living in England and Northern Ireland – young people who are encouraged to lead positive change within their communities. For the first time ever, NCS has invited graduates from their programs to become Digital Champions, a group of people who will lead social action projects and spread web literacy skills in their local communities.

This is the Teaching Kit we’ll be using to guide us during the event. Let me tell you why I’m SO EXCITED to be doing this:

This is the first official “Webmaker Training”

I run trainings all the time, but they’re always one-offs, offshoots, and truncated versions of my dream learning scenario. In 2013 we ran two prototypes – a live training for Mozilla Reps called Training Days and an online training called Teach the Web, both were hugely successful. My dream learning scenario combines these two initiatives. I think a blended-learning program that is open, inclusive, and pedagogically sound – something that helps people teach the culture, mechanics, and citizenship of the Web – is what a Mozilla professional development program should be. Why? Because open.

The NCS has been great to work withimage from https://secure.flickr.com/photos/centurionbd/

I expect the young people who participate in the NCS Community are amazing as well. The partnership started when one of our Sr Directors, the fantastic Paula Le Dieu, opened a conversation with some folks at the NCS to explain that Mozilla isn’t just a technology company, and the Web is not just a delivery mechanism for content. She talked to them about what it truly means to be part of the Open Community and our values resonated. We were asked if we could teach some of the values and skills around openness and web literacy while overlapping with NCS values around social action, personal responsibility and leadership. Spoiler Alert: Yeah, we totally can and will!

I’m truly excited to share what I love about the open source community with the NCS Digital Champions, while helping them level up their social and technical skills. I’m excited to hear their ideas, push them to think bigger, and introduce them to the support networks on the web. I’m excited to learn from them.

As an educator, I view the goals of this partnership (and future partnerships centered on Training) as being less about specific skills and more about big brained theories of education that say things like “You are educated when you can confidently and empathetically participate in society and the world.

The Digital Champions will help us grow

Last year, the Training Days graduates and the Teach the Web participants ran hundreds and hundreds of events, spreading Webmaker and digital skills. Our community’s honesty, participation and drive has made Webmaker what it is today. The 42 NCS Digital Champions are committing to running their own Maker Parties later this year. They’re also committing to spreading web literacy within their local communities and among their peers in the NCS community.

We’ll be inviting them to become mentors within our online training initiatives. In May, we’ll be inviting any and every one to participate in an online learning experience that will help you teach the web and become part of the open community. I’m hoping that this weekend seeds enough interest for the NCS Digital Champions to want to play around with the new and improved Training content and discussion platform*.

It’s going to be fun!

People who know me, know that I don’t really get invested in things that don’t entertain me. One of the reasons I love teaching is because I think it’s fun. It’s fun to watch people learn, see what people make, share ideas and talk about stuff. I even think it’s fun to watch myself fail at relating to people. It’s fun to learn about myself, other people, the world, technology…Our agenda has random, fun activities (ahem) that are designed to get people moving, thinking and growing. I’m enthusiastic about what I do, and enthusiasm is contagious. So, yeah, it’s going to be fun for everyone involved.

All of this means more people will become web literate, more people will spread openness, more people will champion the values we have.

*If YOU’RE interested in helping made the online components of Webmaker Training better, help us test them!

Enhanced by Zemanta

hacks.mozilla.orgIntroducing PredictionIO

PredictionIO is an open source machine learning server for software developers to create predictive features, such as personalization, recommendation and content discovery. Building a production-grade engine to predict users’ preferences and personalize content for them used to be time-consuming. Not anymore with PredictionIO’s latest v0.7 release.

We are going to show you how PredictionIO streamlines the data process and make it friendly for developers and production deployment. A movie recommendation case will be used for illustration purpose. We want to offer “Top 10 Personalized Movie Recommendation” for each user. In addition, we also offer “If you like this movie, you may also like these 10 other movies….”.

Prerequisite

First, let’s explain a few terms we use in PredictionIO.

Apps

Apps in PredictionIO are not apps with program code. Instead, they correspond to the software application that is using PredictionIO. Apps can be treated as a logical separation between different sets of data. An App can have many Engines, but each Engine can only be associated with one App.

Engines

Engines are logical identities that an external application can interact with via the API. There are two types of Engines as of writing: item-recommendation, and item-similarity. Each Engine provide unique settings to meet different needs. An Engine may have only one deployed Algorithm at any time.

Algorithms

Algorithms are actual computation code that generates prediction models. Each Engine comes with a default, general purpose Algorithm. If you have any specific needs, you can swap the Algorithm with another one, and even fine tune its parameters.

Getting Hands-on

Preparing the Environment

Assuming a recent 64-bit Ubuntu Linux is installed, the first step is to install Java 7 and MongoDB. Java 7 can be installed by sudo apt-get install openjdk-7-jdk. MongoDB can be installed by following the steps described in Install MongoDB on Ubuntu.

Note: any recent 64-bit Linux should work. Distributions such as ArchLinux, CentOS, Debian, Fedora, Gentoo, Slackware, etc should all work fine with PredictionIO. Mac OS X is also supported.

Java 7 is required to run PredictionIO and its component Apache Hadoop. Apache Hadoop is optional since PredictionIO 0.7.0.

MongoDB 2.4.x is required for PredictionIO to read and write behavioral data and prediction model respectively.

Installing PredictionIO and its Components

To install PredictionIO, simply download a binary distribution and extract it. In this article, we assume that PredictionIO 0.7.0 has been installed at /opt/PredictionIO-0.7.0. When relative paths are used later in this article, they will be relative to this installation path unless otherwise stated.

The installation procedure is outlined in Installing PredictionIO on Linux.

To start and stop PredictionIO, you can use bin/start-all.sh and bin/stop-all.sh respectively.

Fine Tuning Apache Hadoop (Optional)

PredictionIO relies on Apache Hadoop for distributed data processing and storage. It is installed at vendors/hadoop-1.2.1. The following outlines some optimization opportunities.

vendors/hadoop-1.2.1/conf/hdfs-site.xml

dfs.name.dir and dfs.data.dir can be set to point at a big and persistent storage. Default values usually point at a temporary storage (usually /tmp), which could be pruned by the OS periodically.

vendors/hadoop-1.2.1/conf/mapred-site.xml

mapred.tasktracker.map.tasks.maximum and mapred.tasktracker.reduce.tasks.maximum control the maximum number of mapper and reducer jobs (data processing jobs). It is a good start to set the first value to be the number of CPU cores, and the second value to be half the first value. These should be reduced slightly to provide margin when you serve prediction in production settings if you do not run Hadoop on a separate machine.

mapred.child.java.opts controls the Java Virtual Machine options for each mapper and reducer job. It usually is a good idea to reserve a good amount of memory even when all mapper and reducer jobs are running. If you have a maximum of 4 mappers and 2 reducers, a 1GB heap space (-Xmx1g) for each of them (a total of 6GB max) would be reasonable if your machine has more than 10GB of RAM.

io.sort.mb controls the size of the internal sort buffer and is usually set to half of the child’s heap space. If you have set to 1GB above, this could be set to 512MB.

Creating an App in PredictionIO

This can be done by logging in PredictionIO’s web UI located at port 9000 on the server.

The following is the first screen after logging in and clicking on the “Add an App” button. To add an app, simply input the app’s name and click “Add”.

Importing Data to PredictionIO

Before importing data, the app key of the target app must be obtained. This was done by clicking on “Develop” next to an app. The screen below is what can be seen afterwards.

The app key for the “ml100k” app is NO5FpSnGh1F3PUi7xiSGc910q63z6rxZ4BcYe039Jjf2sTrqyjOc1PmQ3MJowNwM, as shown above. The app key is unique and your app key should be different.

To parse the MovieLens 100k data set and import to PredictionIO, one can use the import_ml.rb Gist. It requires the PredictionIO Ruby gem, which can be installed by sudo gem install predictionio.

Importing the whole set of data is simple:

ruby import_ml.rb NO5FpSnGh1F3PUi7xiSGc910q63z6rxZ4BcYe039Jjf2sTrqyjOc1PmQ3MJowNwM u.data

u.data is a file from the MovieLens 100k data set, which can be obtained from the GroupLens web site.

Adding Engines

Two engines can be added by simply clicking on the “Add an Engine” button. In our case, we have added “itemrec” and “itemsim” engines. Once they are added, they will commence training automatically with a default hourly schedule.

Getting Prediction Results

At the moment, you may access prediction results from these two sample URLs (API server at port 8000):

“Top 10 Personalized Movie Recommendation”:

http://localhost:8000/engines/itemrec/itemrec/topn.json?pio_appkey=NO5FpSnGh1F3PUi7xiSGc910q63z6rxZ4BcYe039Jjf2sTrqyjOc1PmQ3MJowNwM&pio_n=10&pio_uid=1

“If you like this movie, you may also like these 10 other movies….”:

http://localhost:8000/engines/itemsim/itemsim/topn.json?pio_appkey=NO5FpSnGh1F3PUi7xiSGc910q63z6rxZ4BcYe039Jjf2sTrqyjOc1PmQ3MJowNwM&pio_n=10&pio_iid=1

You may change the pio_uid and pio_iid parameters above to see results for other users/items. You are encouraged to take advantage of these endpoints to verify these results. You can also take advantage of our official and community-powered SDKs to simplify this process. Contributed SDKs are also available.

What’s News in PredictionIO v0.7

With the new extended support to GraphChi – a disk-based large-scale graph computation framework, developers can now evaluate and deploy algorithms in both GraphChi and Apache Mahout on one single platform!

Enjoy!

Air MozillaFSA "Video of the Month " for March

FSA FSA Video Tutorial Contest , Winner - "Video of the Month" goes to Mohankumar Duraisamy from India. Look , What Mohan loves about FirefoxOS !

The Mozilla BlogFirefox OS and Medic Mobile use the Web to Connect the World to Healthcare

At Mozilla, we are dedicated to putting the power of the Web in people’s hands in support of our mission to promote openness, innovation and opportunity on the Web. We’re pleased to announce today that we’re partnering with Medic Mobile, a leader in mHealth solutions for developing countries, to take that mission to the world’s most remote and underserved communities.

medic mobileMedic Mobile pioneered the use of feature phones and text messaging to connect remote communities to health care. Their technology tracks outbreaks, schedules maternal health visits, monitors medicine stock, and connects villages with hospitals. The organization works in 20 countries spanning Africa, Asia and Latin America, and supports Community Health Workers overseeing 5 million people.  Medic Mobile’s Hope Phones campaign, a cellphone recycling initiative, is one of many ways that the organization raises funds for new technology needed in the field.

Medic Mobile is the first community health app for Firefox OS and is now available in Firefox Marketplace. This early version allows health workers to document measles outbreaks from their phones, and more features will be added with future updates.

“We see harnessing the Web as our next big step, bringing location data, images, visualizations and analytics to the fingertips of Community Health Workers. Firefox OS is device-agnostic and provides a Web-based, low-cost platform for the developing world,” said Josh Nesbit, CEO of Medic Mobile.

“We look forward to expanding Medic Mobile’s reach through Firefox OS, and will continue pursuing regionalized and localized community apps like Medic Mobile that make the Web even more useful and relevant to people,” added Mary Ellen Muckerman, VP of Brand Strategy and Services at Mozilla.

We’re proud to partner with Medic Mobile, aligning our non-profit missions of using technology to change people’s lives.

For more information:

 

Meeting NotesMobile: 2014-04-09

Details

  • Wednesdays – 9:30am Pacific, 12:30pm Eastern, 16:30 UTC



  • Dial-in: conference# 99998
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 99998

    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 99998
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 99998
    • CA/Vancouver: +1 778 785 1540, x92 Conf# 99998
    • CA/Toronto: +1 416 848 3114, x92 Conf# 99998
    • UK/London: +44 (0)207 855 3000, x92 Conf# 99998
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 99998
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 99998
  • Dial-in: (800) 503-2899 Conf# 9092634
  • irc.mozilla.org #mobile for backchannel
  • Mobile Vidyo Room

Topics for This Week

Firefox Hub
Gathering feedback for the Home Feeds add-on. Fleshed out API docs on MDN. Pull-to-refresh almost ready to land (bug 970707).

Q2 Goals
We plan to meet today to wrap up our goals/projects for Q2.

New Hires wiki page
https://intranet.mozilla.org/Mobile/New_Hires

Welcome ack

Will be focusing on partner related work for the platform team

Friends of the Mobile Team

Give a shoutout/thanks to people for helping fix and test bugs. Make sure friends also get awarded a badge. New contributors are highlighted in bold.

  • Eduard Neculaesi fixed bug 920930 – “Switch to tab” loads the page in the current tab from Reading List

  • anton_11111 fixed bug 948898 – Move inline scripts and styles into separate file for about:healthreport
  • Mark Capella fixed bug 951374 – Lazy load ClipboardHelper
  • Robin Ricard is working on tracking down a zooming regression in bug 990259

Stand ups

Suggested format:

  • What did you do last week?

  • What are working on this week?
  • Anything blocking you?

Please keep your update to under 2 minutes!

James W. (snorp)

  • Continuing on Service Workers and Push Notifications

Alan K. (ack)

  • Remaining work on cloudsync service

  • A few remaining bugs and some cleanup
  • Needs help on UI parts, specifically for third-party account setup through sync UI

JChen

<Read Only>

Past week
  • Native JS object landing

  • Looking at B2G telemetry
Fixed
Working on

GCP

<Read Only>

  • Last week

    • Get H264 decoding on Flame working

    • System updates/install
  • Next week
    • bug 989944 [B2G][WebRTC] Serious frame dropping when enabling HW H.264 video in real-time mode.

    • bug 989945 [B2G][WebRTC] long video lag when using H.264 codec.

Randall Barker

  • Last Week: Continued work to make WebRTC signaling library not require XPCOM or XUL.

  • This Week: Keep going until it links stand alone with out XPCOM or XUL.

Brian Nicholson

<Read Only>

WesJ

  • Quickshare polish.

    • bug 990395 – After installing Link Bubble, all web pages get a HelperApp icon

    • bug 990642 – Regression: ‘Share Image’ shares link and not actual image
  • bug 992964 – Miracast video casting support
  • bug 992308 – Tab thumbnails in tab-sharing tab picker should be larger and have the right aspect ratio
  • Looking into autocomplete with keyboard that use composition events.

jdover

  • Working with fabrice on Web Activities interfaces.

  • Swipe-to-refresh support for home panels & sync’d tabs – waiting on RelEng to update support library
  • You will need to update your android support library using the SDK manager to 19.1.0+

current

LucasR

<Read Only>

Last week

  • bug 933739 – Issues in URL domain autocompletion

  • bug 992921 – First panel always load in parallel with the default one
  • bug 993970 – Implement tests for TopSitesCursorWrapper
  • bug 976064 – Create a loader per panel view instead of per dataset id
  • Experimentation around view tree flattening, blog post coming soon-ish
  • Good progress on suggested sites infra
  • Patch reviews

Next week

  • More focus on suggested sites

  • Hub stuff, if needed
  • More patch reviews

sola

This week

  • bug 977196 – UI Telemetry for opening urls

  • bug 981028 – Add telemetry probes for Top Sites
  • bug 909618 – Remember about:home tab selection
  • bug 967293 – Remove duplicate logic from TopSitesPanel.onContextItemSelected()
  • bug 857990 – Save/Restore scroll position for an article in Reader Mode

liuche

<Read Only>

  • So many UI Telemetry reviews

  • Prototyping unified phone/tablet settings without using PreferenceActivity, Preference*
  • Misc bugs (geo strings, beta notification)
  • And again, new hires wiki: https://intranet.mozilla.org/Mobile/New_Hires
  • Next: Contextual first run…?

Margaret

<Read Only>

Highlights
  • Home Feeds add-on

  • MDN docs
  • Working on improvements to panel picker dialog – bug 987869
Fixed
Working on

mcomella

<Read Only>

Past
  • bug 981872 – Replace use of MessageDigest with NativeCrypto where applicable

  • bug 991256 – Rename preprocessed Gecko* to Themed*
Present
  • Herding bug 941155 (fix talos on mobile to have pageloader tests working in regular mode and nochrome mode) along

  • bug 939350 – Create Python linter wrapper
  • bug 965548 – Add a way to close edit mode in one tap
Future
  • bug 983437 – Delay FHR pruning until the screen is off

  • bug 989441 – Centralized documentation for writing tests

esawin

Fixed
Working on
Summary
  • Zoom history sessions

nalexander

Highlights
  • None. Did you know we no longer have a CEO?

  • Shepherding FxAccounts Sync to the 29 finishing line.
Fixed
Working on

BLassey

  • bug 988471 – Action bar icons flicker while typing and scrolling with an active text selection, landed

  • bug 928096 – UI for Tab streaming, landed
  • looking at e10s for desktop
  • in MV/SF next week

MFinkle

  • Landed client-side Roku casting support. Pref’d off.

  • Need to start filing bugs for new Q2 work.
  • Reviewing IMO (input.mozilla.org) feedback and looking for common pain points.
    • Feeling lost in the UI (How do I clear history?, Where are my bookmarks?)

    • Video hangs or crashes
    • Slow loading of pages

Ian Barlow

<Read Only>
In Denver this week at http://uxim14.uie.com/

Arun

<Read Only>
Working on Tabbed browsing stuff, and misc bugs (bookmarking/history)

WebRT

  • we’re GO for Fx29 Release

  • Fx29 will be developer-focused
  • Marketplace/Content work is currently lower priority for those teams, which are focused on Tarako
  • Noteworthy Bugs:
    • bug 989109 – WebAppRT expects return values from sendMessageToJava – uplifted

    • bug 968129 – crash in java.lang.NullPointerException: at org.mozilla.gecko.gfx.GeckoLayerClient.setFirstPaintViewport(GeckoLayerClient.java) – uplifted
    • bug 989294 – Synthetic APK never launches if downloaded outside Fx Marketplace – fixed, will request uplift
    • bug 889744 – Cannot install packaged apps from reviewer details page on Android – under investigation
    • bug 991394 – previously-installed apps stop running – under investigation
    • bug 990125 – Duplicate reminders to update apps – under investigation
    • bug 993164 – APK Factory stage release/review has 502 – under investigation

Feature Focus

Fx29
Fx30
Fx31
Fx32

Meeting NotesFirefox/Gecko Delivery Planning: 2014-04-09

Schedule & Progress onUpcoming Releases

Developer Tools

  • Jeff is @TRIBE this week, everything seems fine.

Market Insights from the Market Strategy Team

Desktop/Platform

  • Support for Windows XP ended with roughly 27% of Windows users still using it [1], around 76% of IT Pros supporting it, [2] 95% of ATMs still using it pending hardware upgrades. [3] With no further updates to Internet Explorer on Windows XP and support for Chrome on Windows XP ending April 2015, [4], the preferred secure browser for systems running Windows XP is an evolving space.
  • As Google Chrome adds support for new capabilities such as ephemeral mode [5] and password manager updates [6], the Chromium framework is utilized as a platform for building browsers [7] which in some cases cut down features to improve privacy and speed. [8]
  • A research report titled “Cookies that give you away” [9] illustrates how an eavesdropper can use multiple third-party cookies to link about 50% of a user’s history to the same pseudonymous ID even with just 25% of the current density of trackers on the web and then link to a real-life ID exposed on the Web. In the absence of third-party tracking cookies, the attacker’s ability would be severely circumscribed by changes in the user’s IP address. Methods of tracking users that block third-party cookies include HTTP redirect, [10] persistent and unblockable cookies, [11] and history extraction,[12] which are not impossible to execute, but add more complexity.

Planning Meeting Details

  • Wednesdays – 11:00am PT, 18:00 UTC

  • Mountain View Offices: Warp Core Conference Room
  • Toronto Offices: Finch Conference Room
  • irc.mozilla.org #planning for backchannel
  • (the developer meeting takes place on Tuesdays)

Video/Teleconference Details – NEW

  • 650-903-0800 or 650-215-1282 x92 Conf# 99696 (US/INTL)

  • 1-800-707-2533 (pin 369) Conf# 99696 (US)
  • Vidyo Room: ProductCoordination
  • Vidyo Guest URL

about:communityNews from MDN: events, migrations, glossary, and platform improvements

Here are some happenings in the MDN community that were shared in the most recent MDN community meeting. MDN Community meetings take place every other Wednesday, at 10:00 a.m. Pacific Time, in the #mdn channel on irc.mozilla.org. The MDN Community meetings section of the Mozilla wiki has notes for past meetings; a page is created for the agenda of each upcoming meeting a few days beforehand.

Events

MDN community members Jannis Lidel, Florian Scholz, and Jean-Yves Perrier attended the Write The Docs EU conference in Budapest, on March 31 to April 1st. Jannis gave a talk on Search and Find: Making MDN Discoverable. They reported enjoying it thoroughly, and recommend such conferences to other MDN community members. For example, Write The Docs US is coming up in Portland in May (Ali Spivak is speaking), and OpenHelp is in Cincinnati in June (I am speaking; let me know if you want to attend).

Florian and Jean-Yves also went to a Mozilla German community doc sprint Berlin, which covered both MDN and SUMO. They worked on translating docs for Firefox Developer Tools into German, and on recording translations of the Dev Tools screencasts.

Community members at the April 2014 German doc sprint

Content

Now that Kuma’s support for moving pages seems to be working pretty well, a big push will be happening over the next few weeks to move pages into a more rational structure. This work will be based on the analysis of MDN’s “content islands” done by Florian Scholz, and may include archiving obsolete docs and deleting irrelevant docs.

In a similar vein, work on reorganizing MDN’s “meta-documentation” is nearly completed, except for a few straggling pages. Once that’s completed, we’ll have retrospective to look at what still needs to be done to improve it. Stay tuned to the dev-mdc discussion list for details.

The first phase of the project to revitalize the Learning Area of MDN is now underway, which is to flesh out the glossary. Ideally, each item should have a one- or two-sentence summary, a more detailed “In depth” section, and links to other sources to learn more.

Platform

The MDN web development team has greatly improved the experience of the revision dashboard. It’s now much faster and lets you view multiple diffs inline.

On the project to improve compatibility tables on MDN, the data requirements have now been defined and the data schema is being finalized. Follow the tracking bug to stay current. The project leader, Jérémie Patonnier, will start working with the UX team to improve the contribution workflow for compatibility data.

Air MozillaQuality Team (QA) Public Meeting

Quality Team (QA) Public Meeting Weekly Review of the Quality Engineering team at Mozilla

Air MozillaNode.js Paris Meetup

Node.js Paris Meetup Node.js Meetup Francophone Paris - Chapitre 01 - Episode 8

Firefox AppsWhy Localization Is Important: The Word from Mañana

One of the handiest apps on Firefox Marketplace is even more useful because it’s available in multiple languages.

Mañana, which lets you save for tomorrow interesting articles you find but don’t have time to read today, is the first Firefox OS app from developer Alberto Granzotto and graphic designer Valentina Montagna. In fact, it’s their first app, period.

Mañana is available in English, German, Spanish, Portuguese, Italian, and Polish—with Russian and Greek on the way soon.

So why would first-time developers take the extra time and effort to localize an app?

“Considering that the emerging markets have been crucial for Firefox OS since the beginning, localizing the app in several languages has come naturally,” said Chiara Zecchetto, business development manager. “Don’t forget that one of the goals of Firefox OS, which we proudly support, is to guarantee internet access to as many people as possible.”

Mozilla allows developers to choose where their apps are available—something that can’t be said of all apps stores. (Read our post, “Geo-Targeting: Keeping Developers in the Driver’s Seat,” for more information.)

That choice is significant to the Mañana team.

“Openness, through localization, is important to let more people access the internet—so they can gain and share knowledge, culture, and life experience,” Chiara noted. “We also think that localizing a product, in this case one app or an entire marketplace, is really crucial in helping people familiarize themselves with new technology.”

Developing the app took about three weeks (not full time), from concept to delivery of the first version.

“We started it as a ‘hobby project’ to test the new Firefox OS and optimize languages we already know (HTML5, CSS, and JavaScript) for this new adventure,” Alberto explained.

In deciding which languages to focus on first, the team had specific goals in mind.

“We focused on the Firefox OS launches in Spain/LATAM, Italy, and Germany in late 2013,” Alberto said. “Then, we added languages following two criteria: potential Firefox OS markets, and languages that were quick to translate because of the international community that surrounds us.”

A note about translation work: Based in Berlin, the Mañana team found it easy to connect with enthusiastic Mozillians who supported them. But if you don’t have friends to help translate, you can still localize you apps, with Transifex. (Check out “App Localization with Transifex” on the Mozilla Developer Network. Mozilla’s Technical Evangelism team is piloting a program that uses Transifex for managing translation work, both for app developers and localizers.)

Useful resources for developers: While they created Mañana, the team put together this list of links and resources about creating apps for Firefox OS.

Mozilla SecurityHeartbleed Security Advisory

Issue

OpenSSL is a widely-used cryptographic library which implements the TLS protocol and protects communications on the Internet. On April 7, 2014, a bug in OpenSSL known as “Heartbleed” was disclosed (CVE-2014-0160). This bug allows attackers to read portions of the affected server’s memory, potentially revealing data that the server did not intend to reveal.

Impact

Two Mozilla systems were affected by Heartbleed. Most Persona and Firefox Account (FxA) servers run in Amazon Web Services (AWS), and their encrypted TLS connections are terminated on AWS Elastic Load Balancers (ELBs) using OpenSSL. Until April 8, when Amazon resolved the bug in AWS, those ELBs used a version of OpenSSL vulnerable to the Heartbleed attack.

Because these TLS connections terminated on Amazon ELBs instead of the backend servers, the data that could have been exposed to potential attackers was limited to data on the ELBs: TLS private keys and the plaintext contents of encrypted messages in transit.

For the Persona service, this included the bearer tokens used to authenticate sessions to Persona infrastructure run by Mozilla (including the “fallback” Persona IdP service). Knowledge of these tokens could have allowed forgery of signed Persona certificates.

For the Firefox Account service, this included email addresses, derivatives of user passwords, session tokens, and key material (see the FxA protocol for details).

Raw passwords are never sent to the FxA account server. Neither the account server nor a potential attacker could have learned the password or the encryption key that protects Sync data.

Sensitive FxA authentication information is only transmitted during the initial login process. On subsequent messages, the session token is used as an HMAC key (in the HAWK protocol), and not delivered over the connection. This reduces the amount of secret material visible in ELB memory.

Status

We have no evidence that any of our servers or user data has been compromised, but the Heartbleed attack is very subtle and leaves no evidence by design. At this time, we do not know whether these attacks have been used against our infrastructure or not. We are taking this vulnerability very seriously and are working quickly to validate the extent of its impact.

Amazon has updated their ELB instances to fix the vulnerability. We have re-generated TLS keys for all production services, and revoked the possibly exposed keys and certificates. Subsequent sessions with Persona and Firefox Accounts are not vulnerable to the Heartbleed attack.

As a precaution, we have revoked all Persona bearer tokens, effectively signing all users out of Persona. The next time you use Persona you may need to re-enter your password.

Because Firefox Accounts session tokens are not used as bearer tokens, we believe it was unnecessary to revoke them.

Additional User Precautions

Although we have no evidence that any data was compromised, concerned users can take the following additional precautions:

  • Persona: if you have a fallback account, you can change the password. This will require you to re-enter your password, on each browser, the next time you use Persona.
  • Firefox Accounts (FxA): you can change your account password. This will invalidate existing sessions, requiring you to sign back into Sync on all your devices. Devices will not sync until you sign back in.
  • If you have used the same password on multiple sites or services, in order to protect yourself, you should change the password on all services.

Meeting NotesMozilla Platform: 2014-04-08

Hot Bugs

(Important bugs for which we need to find owners or additional help. If known, please include suggested team or knowledge needed to advance the bug.)

Orange Factor

Stability

Other

The Need To Know

(Release and system issues that may impact engineering this week.)

Notices/Schedule (lsblakk/sylvestre)

Next Merge: April 28, 2014 Next Release: April 29, 2014
Trains
Central: 31 Aurora: 30 Beta: 29 Release: 28
37 bugs (?? bugs last week) 58 bugs (?? bugs last week)
Unresolved Aurora 30 Trackers (non-security, not tracked for Beta) Unresolved Beta 29 Trackers (non-security)

Build Changes (gps)

(Build changes of which engineers should be aware.)

RelEng (catlee)

(Repo, test, and other information for engineers from the release engineering team.)

Upcoming Outages/Upgrades

(System outages/upgrades and tree closures that impact engineering.)

Team Stand-ups

(In <2 mins, what did your team accomplish last week, on what is your team working on this week, and on what, if anything, is your team blocked? No questions during the stand-ups. All questions should be asked during the roundtable.)

Accessibility (dbolter)

<Read Only>

  • heads down.

  • goals almost ready for prime time.

App Tools (prouget)

<Read Only>

  • Released FxOS Simulators 1.4 and 1.5

  • network monitor now works with FxOS
  • Gaia Developer HUD now supports certified apps and includes memory widgets and CSP errors
  • Some Gaia tests now instrument the devtools actors
  • Preferences (about:config) actor has landed (UI in review)
  • Fennec tabs support has landed

Developer Tools (Mossop)

  • bug 850336 – Box model is editable

  • bug 985924 – CodeMirror updated
  • bug 899054 – Add-on debugger landed, blog post and more features coming soon

DOM (jst/overholt)

  • No update.

Firefox Desktop (gavin)

Firefox Mobile (mfinkle/blassey)

Some great WIP’s
  • bug 776027 – Add Web Activities support to Android

  • bug 759448 – Prevent listeners from being registered until needed. Worked on resolving undefined xpcom/xul symbols is WebRTC code for Roku
  • bug 981694 – Show a notice to beta users when we turn telemetry on by default on the beta channel – Firefox for Android
  • bug 977196 – UI Telemetry for opening urls
  • bug 988635 – Telemetry: Device orientation
  • Nightly and Aurora users should test out Margaret’s home feed panels: https://addons.mozilla.org/en-US/android/addon/home-feeds/
Preff’d off but landed \o/

bug 921948 – Integrate roku support into Firefox

Firefox OS Devices/Porting (ericchou)

<Read Only>

  • Device porting (Gonk team)

    • Dolphin Reach demo quality for SPRD

    • Tarako
      • One engineer onsite support at SPRD shanghai
  • Bluetooth (members: Shawn Huang, Ben Tian, Jamin Liu, Jocelyn Liu)

    • Fixed bugs which were reported from in-house certification test (PTS test).
  • Media Playback (members: Bruce Sun, Blake Wu, Star Cheng)

    • 1.3+/1.3T+ bugs

      • bug 984498 – Busy tone won’t be played when the device is muted (WIP)

      • bug 990957 – Ringtone does not play out if the ringtone is a AMR file (WIP)
  • Device Storage & Stability (members: Alan Huang, Alphan Chen)

    • Figured out why memory reporter doesn’t work in Tarako PVT

    • Analyzed 19 Tarako bugs which were reported (or not even reported, just in partner’s ITS) from SPRD.
    • New DeviceStorage API and FeatureDetection API

Firefox OS Performance (mlee)

<Read Only>

GFX (milan)

  • Back from a work week

  • Big ticket items proposed for the next couple of trains:
    • OMTC desktop (let’s us simplify and remove some of the main thread compositing code)

    • Skia content Windows (clear some way for the B2G and Android Skia content)
    • APZ improvements (some architectural, some performance, some usability)
    • v-sync on B2G (smooth scrolling, more consistent scrolling speed)

Identity (jedp)

<Read Only>

  • Cloud Services work-week last week in MV

  • Please keep testing Sync on Desktop

JS (naveed)

<Read Only>

  • Garbage Collection

    • NOTE: We are aware there are many crashes in Nightly. We are working to stamp those out quickly. If the crash stats (and performance) are not

back in line by the week before uplift, we will disable GGC for this cycle. Note, b2g and mobile are still building non-ggc, so the non-ggc
paths are still getting actively tested.

  • Front End and Other

    • bug 992998: Run jit-tests in spidermonkey builds again, bug 992998

    • bug 813366: Gracefully fail instead of crashing in some Yarr OOM situations
    • bug 878399: toString / toSource for asm.js modules and functions.

Layout (jet/dbaron)

<Read Only>

  • Speed: Made progress on the remaining issues for bug 931668 in 台北 two weeks ago. This eliminates the per-descendant cost of many (but not all) style changes of noninherited properties, though a bunch of “interesting” cases disable the optimization.

  • Speed: bug 950526 landed on inbound yesterday; this avoids reconstructing text runs for style changes to text frames that don’t require this work
  • Test Coverage (for Speed): bug 964646 changed off-main-thread (OMT) Animations from having very little test coverage to actually having some decent test coverage, though more is still needed
  • New Web Feature: bug 985838 changed the syntax for CSS Custom Properties for Cascading Variables (a.k.a. CSS Variables) from a “var-” prefix to a “–” prefix, and bug 957833 enabled CSS variables by default for all release builds so that they should ship in Firefox 31 unless something changes

Media (jesup)

  • echo cancellation in getUserMedia bug 694814 is landing and bouncing for multiple b2g-emulator issues (none of which are bugs in the patches). See m.d.platform for discussion. tl;dr: b2g emulator sucks perf-wise and that messes up classes of tests.

    • emulator is an unending source of pain. Cost us most of a week for two people already on this alone

    • This will enable noise suppression by default as a trial.
  • Next steps are to refactor the MediaStreamGraph to change all the time units and reclock based on the output clock. padenot is working on this

Necko (dougt/jduell)

  • Necko will be reporting incomplete downloads as errors (bug 237623). This is so the Download Manager can detect incomplete downloads, but will affect other clients too.
  • The necko bits to make off-main-thread Websockets work are landed (bug 925623). Now we need the DOM work to make websockets in workers use it.

Performance (vladan)

  • Decided (with gfx, others) to mostly ignore small OS X 10.6 regressions.

  • Addon manager: quicker startup block of addon compatibility check bug 760356
  • Telemetry dashboard: ability to see own jobs logs and data, added google analytics.
  • Stopped working and filing power usage bugs (took a ~month). Facebook uses more power on Firefox than other browsers bug 962594. How to address?
  • Talos profiling – still failing on windows. Still being worked on.
  • Session restore: talos test being finalized. Planning optimizations.
  • asyncCopy working on fully off main thread.
  • Async test errors: harness now treats uncaught async exceptions as errors, now fixing tests.
  • Working with fx team to unblock australis regressions (linux keyhole).
  • jmaher started filing regressions, big question: what to do about them? acceptance threshold, etc.

Seceng (grobinson)

<Read Only>

  • mozpkix, our new certificate validation library, is on in Nightly! Please consider helping us by testing it or reviewing the code. See the announcement on dev-tech-crypto for details.

  • Bug 971341, a nasty bug that prevented users from accessing pages with invalid CSP’s, was fixed in Nightly and uplifted to Aurora and Beta.

WebAPI (overholt)

  • No update this week.

Quality Programs

(An opportunity to hear about status with the various quality programs that do not have a formal team structure.)

MemShrink (njn)

  • Kyle Huey, Ben Kelly, Andrew McCreight and Nathan Froyd did some great work tracking down and fixing some slow B2G leaks.

OrangeFactor (ryanvm)

  • Past week’s OrangeFactor: 11.88 (Previous Week: 8.86).

  • Steady progress being made on Cedar getting mochitest-bc running in chunks with devtools in a separate test suite on all platforms. Hoping to get it in production by the end of the week.
  • 13 intermittent failures fixed in the last week – List – Thanks!.

Stability (kairo/bsmedberg)

  • Overall numbers look good for beta and release, the nightly and aurora issues are known and tracked.

Roundtable

(Comments and questions that arise during the course of the meeting or otherwise do not have a section.)

<Read only beyond this point>

Friends of the Tree

There were great changes by volunteers in Core and Toolkit during the past week. Thanks to all of these contributors for their passion and hard work, and say hi to new contributor Dragos Nicolae! Here are some highlights:

  • Tom Schuster (evilpie) fixed some e10s problems (bug 910729, bug 980582).

  • Stefan (stefanh) fixed a preference UI issue (bug 957281).
  • [first patch!] Noel Cragg fixed a XULRunner startup assertion (bug 964902).
  • Douglas Crosher (dougc) fixed an asm.js crash (bug 919592).
  • James Kitchener (jkitch) corrected a MathML layout assertion (bug 947557).
  • [first patch!] Aaro Koskinen made SpiderMonkey build on PA-RISC (bug 958940).
  • Oleg Romashin (romaxa) added pointer capture for pointer events (bug 968148).
  • Masatoshi Kimura (emk) fixed an FTP encoding problem (bug 989576, bug 991690).
  • Marco Castelluccio (marco) fixed some b2g test errors (bug 956904, bug 991246).
  • Rik Cabanier turned on Path objects for canvas (bug 988088, bug 988409).
  • Tetsuharu Ohzeki (tetsuharu) fixed a Places helper (bug 984015).
  • Branislav Rankov refactored SpiderMonkey for the MIPS backend (bug 985876).
  • Anuj Agarwal (anujagarwal464) updated some old hashtable users (bug 975681, bug 984124).
  • Rick Eyre (reyre) furthered the WebVTT implementation (bug 879431, bug 882677, bug 903030).
  • Ms2ger converted an XPIDL DOM interface to WebIDL (bug 860731).
  • [first patch!] Arun Raghavan fixed a Firefox interaction with PulseAudio (bug 986985).
  • Martin Stransky fixed some GTK3 issues (bug 982964, bug 983903).
  • Xidorn Quan refactored some CSS code (bug 990297).
  • [first patch!] xKhorasan made the document URL property follow the spec (bug 859095).
  • [first patch!] Danny Chen (DChen) fixed a video playback UI problem (bug 729111).

Mailing List Threads

(Threads that are likely to be of interest to engineering from various mailing lists.)

Good Reads

(Links to blog posts, books, videos, etc. that you think will be of interest to others.)

irc #planning Log From This Meeting

10:58 KaiRo: bsmedberg: do you have any voice update on stability for the platform mtg?
11:01 KaiRo: cpeterson: if bsmedberg doesn't have anything, we have no voice update from stability today
11:01 cpeterson: ok
11:01 bsmedberg: KaiRo: you really don't need to ask me each week. If I have something, I'll have put it in the wiki.
11:02 Waldo: in living color
11:02 KaiRo: bsmedberg: ok
11:04 Pike: is everyone silent how it's supposed to be?
11:05 Pike: oh, voice update
11:05 kbrosnan: there is sound
11:05 jedp: Mossop that's awesome
11:06 jedp: gavin do you have a link to that post?
11:06 gavin: https://mail.mozilla.org/pipermail/firefox-dev/2014-April/001548.html
11:07 gavin: https://mail.mozilla.org/pipermail/firefox-dev/2014-April/001551.html
11:07 gavin: I'll put those in the wiki
11:07 jedp: thanks
11:15 dveditz: I think dougt is exagerating
11:15 dougt: ?
11:16 dveditz: platform engineering mtg
11:16 dveditz: you were quoted as saying the pkix change is the scariest thing to land in Firefox in 10 years
11:16 dveditz: I think misquoted....
11:16 kbrosnan: SeaMonkey not spider [in comm-centrl]
11:16 dholbert: cpeterson, ^
11:17 Waldo: and yet we're still supporting it [Windows XP] a year longer :-\ or so I remember
11:17 dveditz: if it [mozkpix] really breaks the web we would find it in nightly/aurora
11:17 dveditz: if it makes it past that it will break edge cases (possibly big ones) at most
11:18 khuey: I think the real concern is what vulnerabilities we will introduce

Engineering Meeting Details

  • Tuesday 2014-04-0811:00 am Pacific Standard Time

  • Dial-in: conference# 98411
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 98411

    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 98411
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 98411
    • CA/Vancouver: +1 778 785 1540, x92 Conf# 98411
    • CA/Toronto: +1 416 848 3114, x92 Conf# 98411
    • UK/London: +44 (0)207 855 3000, x92 Conf# 98411
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 98411
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 98411
  • Engineering Vidyo Room / Air Mozilla / MTV Warp Core / TOR Finch / SFO Warfield / PDX Hair of the Dog
  • join irc.mozilla.org #planning for back channel

Mozilla Add-ons BlogAdd-on Debugger now in Firefox Nightly

Since the dawn of Firefox debugging add-ons has been a task fraught with peril. The old JavaScript Debugger existed but hasn’t received the care and attention it needed. Most of us resorted to logging with dump statements to try to figure out why things were going wrong.

That is going to change. Recently landed in Firefox Nightly is the new Add-on Debugger. A full JavaScript debugger targeted at add-ons. It behaves like the developer tools debugger for webpages and the browser toolbox but will show the scripts that your add-on uses to make it easy to find where things are going wrong.

The feature is still experimental and we need your help to make it shippable. To use it you need to turn on two options. Open the developer tools, go to the settings and enable chrome debugging and remote debugging. Once they are on you can find debug buttons for add-ons in the Add-ons Manager. We support debugging any restartless add-on, older style add-ons won’t be supported for now. We want to focus on making the experience as awesome as possible for the newer style.

When the debugger opens you’ll see a list of all the scripts from your add-on that are currently in use. If your add-on uses the Add-on SDK then the modules you use will show up in their own section as well. As you might expect you can set breakpoints and step through code. You won’t see all of your code immediately, only scripts that are in use. When new code is loaded it should show up. We’ve put together a short screencast showing enabling the debugger and a few things you can do with it:

Many thanks to our intern on the SDK team last year, Mike Hordecki, for doing the bulk of this work assisted by Eddy Bruel. Also thanks to Jordan Santell for getting it landed.

As I said we need your help to make this better. Please file bugs anywhere you see problems, either scripts not appearing in the debugger that you expect to be there or being unable to use the debugger properly. For now the debugger is the only part of the toolbox that you’ll see. In the future we want to add an add-on specific console as well as start showing the other developer tools where they make sense for add-on developers. Let us know what you want to see either in comments here or by filing bug reports in the Firefox Developer Tools Debugger component.

Air MozillaEngineering Meeting

Engineering Meeting The weekly Mozilla engineering meeting.

Air MozillaWebRTC - Meet Up Francophone (Paris)

WebRTC - Meet Up Francophone (Paris) WebRTC Meet Up Francophone - Paris Salle des Fetes

hacks.mozilla.orgMeasuring power consumption on phones

While learning about and measuring what happens on phones, we’re learned a great deal around power consumption. Therefore we want to share some learnings and what have resulted in the FxOS Powertool!

Introducing the FxOS Powertool!

With the FxOS Powertool!, we can optimize apps for power consumption, but also verify and fix bugs related to that. It is a command line utility with a number of options:

usage: powertool [-h] -d {yocto,mozilla} [-p PATH] -u {tk,cli} [-f FILE]
                 [-o OUT] [-s SHOW]
 
Mozilla Powertool
 
optional arguments:
  -h, --help            show this help message and exit
  -d {yocto,mozilla}, --device {yocto,mozilla}
                        specify ammeter device to use
  -p PATH, --path PATH  specify path to ammeter device (e.g. /dev/ttyACM0)
  -u {tk,cli}, --ui {tk,cli}
                        specify which UI to use
  -f FILE, --file FILE  test run config file
  -o OUT, --out OUT     output data file
  -s SHOW, --show SHOW  name of the sample source to display

Get the code by cloning the repository:

$ git clone git://github.com/JonHylands/fxos-powertool

The FxOS Powertool! is written in Python and uses the Tkinter UI package and should be cross-platform. Then install the application and dependencies:

$ cd fxos-powertool
$ sudo python ./setup.py install

The next step is to create a test suite description file. The FxOS Powertool! uses the description file to know what tests you plan on running and it organizes the collected data under each test. A test suite description file looks like:

{
  "title": "My Tests",
  "tests": [
    "My first test",
    "My second test",
    "My third test"
  ]
}

Building a battery harness

This is what you need:

Next you need to set up your hardware:

1. Pull the battery from your FxOS device & place it in the battery harness

2. Put the battery harness into your device

3. Plug in your ammeter

Yocto Ammeter

Running FxOS Powertool!

Now you’re ready to start the FxOS Powertool! and begin collecting data.

With the FxOS Powertool!, you can save the collected data in two different formats: JSON and comma separated values. The format is determined from the file extension of the file specified in the --out option. For example:

  • My test suite description file is called mytests.json
  • I’m using a Yoctopuce ammeter
  • I want the Tk GUI to show the current consumption graph
  • I want the collected data to be saved in .csv files

Then my command line would look like this:

$ powertool -d yocto -p /dev/ttyUSB0 -u tk -s current -f mytests.json -o mytests.csv

If I were to use the Mozilla ammeter instead, with the same test parameters:

$ powertool -d mozilla -p /dev/ttyACM0 -u tk -s current -f mytests.json -o mytests.csv

The Tk GUI should start up and the title of your first test will be shown in the title bar of the app:

Powertool Launch

To control the collection of data and navigate through the tests, FxOS Powertool! uses keyboard shortcuts. With the GUI open, you can start/stop collecting data for the currently selected test by hitting the space bar. The first time you hit the spacebar, data collection begins; to stop data collection, just hit the spacebar again. Each data collection run will be recorded as a row of data in the output files:

Powertool Test One Data Run

You can repeat data runs for a given test as many times as you like, navigate to another test or tests, do data runs for those test, then come back to a previous test and continue doing those data runs. No data will be lost in the FxOS Powertool! will not lose any data and it will, for each test, aggregate the data runs into the correct data files. Use the ‘L’ and ‘H’ keys on the keyboard for navigating between tests. ‘L’ moves to the next test in the list, ‘H’ moves to the previous test.

Powertool Test Two Data Run

When you have collected all of your test data, the data files are written to disk when you quit the application: do so by either clicking on the close window button in the title bar or pressing the ‘Q’ button on the keyboard. In this example, the data was written out in CSV format by giving it “mytests.csv” as the –out paramter value. The application will create a “mytests” directory and then write out a CSV file for each test with all of the data gathered for the test.

CSV File Open in a Spreadsheet Application

Like we’ve gone through in this article, the FxOS Powertool! will do some very basic statistics calculations for you. Along with the raw data, it also calculates the minimum and maximum value, mean, and standard deviation for all of the data collected for the test.

Meeting NotesMozilla Project: 2014-04-07

All-hands Status Meeting Agenda

Items in this section will be shared during the live all-hand status meeting.

Friends of Mozilla

  • Thanks to Andrew Halligan for all his well-written/tested/thought-out contributions to Firefox Marketplace. We especially appreciate his diligence going through Bugzilla, GitHub, and working on priority bugs – great work all around!

  • Thanks to Regnard Raquedan, Benjamin Kerensa and Katt Taylor for organizing the North America Reps meetup last weekend at the beautiful Mozilla Space in Portland!
  • Thanks to Kohei and Pmac for some unplanned updates to mozilla.org over the weekend.
  • Thanks to the various folks patiently answering the posts in .governance

Upcoming Events

This Week

Mozilla is sponsoring Pycon 2014 (https://us.pycon.org/2014/), April 9-17 in Montreal, Canada.
Events include:

Tuesday, 08 April
  • 1PM PST : Security Champions {for the curious or more details ping curtisk in IRC}

    • CANCELED as FxA is more important
  • 1PM PST : Firefox Accounts & Sync Brownbag – overview of FxA covering architecture, security and privacy
Wednesday, 09 April
  • Homebrew Website Club Meeting, 18:30-19:30 simultaneously at Mozilla SF and MozPDX. Description:

    Are you building your own website? Indie reader? Personal publishing web app? Or some other digital magic-cloud proxy?

    If so (or you want to!), come on by and join a gathering of people with like-minded interests. Bring your friends that want to start a personal web site. Exchange information, swap ideas, talk shop, help work on a project…

    Any questions? See the wiki page or irc://irc.freenode.net/indiewebcamp.

Thursday, 10 April
  • Christian Heilmann is speaking at Codebits in Lisbon, Portugal – FirefoxOS – HTML5 for a truly world-wide-web

  • Noon @ SFO – Armen Zambrano is presenting on SFO (hopefully through air.m.o) a quick presentation about Release Engineering’s recent improvements in our Amazon continuous integration (tbpl) and how we are saving 60-70% on our monthly bill – Saving on our AWS bill

Project Status Updates (voice updates)

Webmaker

Speaker Location: OpenMatt in Toronto

Received this from one of our community members:

  • #WeAreMozilla

  • “I’m just recovering from nearly a month of debilitating illness, so I’m not really able to lead much of anything. However, I’m wondering if what’s needed now is an opportunity for people to affirm what they love about Mozilla, and what they *do* with and for Mozilla. People have spent the last few weeks trying to figure out how to be individuals. I would love to participate in participatory media-making that gives us a chance to be a community again. Thoughts? The idea would be to ask people to share one thing they have experienced/done/worked on with Mozilla, and then also to list two things from others that they also find inspiring.”
  • Interested? Got ideas? Get in touch with @OpenMatt and I’ll connect you. https://twitter.com/OpenMatt

Non-verbal updates:

  • Help us test Webmaker Training!

    • Official training kicks off in May, but we’d love feedback on the ‘Building’ module, which is all about using Webmaker tools to create learning resources and teaching kits.

    • https://wiki.mozilla.org/Webmaker/Testing
Open Badges

Speaker Location: nonverbal update

  • Peruse the latest happenings on the Badges team in this blog post.
OpenNews

Speaker Location: MozPDX

Just want to give a quick, in person hello and update on OpenNews.

Mozilla Science Lab

Speaker Location: non-verbal

IT

Speaker Location: mjeffries, San Francisco

  • Vidyo 3.0 update: Thanks for all the feedback on the new Vidyo client. We have been making changes to the environment based on the feeback you have provided. Please keep the feeback coming – preferrably via Bugzilla and ServiceNow (though you Yammer junkies can keep submitting, too! ;) ).
  • The ServiceNow update, with the easier-to-use UI, is now LIVE! Come check it out, and click on this intro video link to learn more about how the redesign can make things easier for you: https://www.youtube.com/watch?v=-Xv_wU-6_VQ
Web Compat

Speaker Location: non-verbal

Lots of wins for the open non-WebKit mobile web recently:

  • touch.groupon.com adds non-WebKit-only CSS for all to enjoy.

  • wikia.com layout fixes for Firefox OS and Firefox for Android.
  • cnet.com now sends rich mobile site to Firefox OS users.
  • ehow.com moves away from non-standard CSS button layout.
  • m.dictionary.com redesigned to not only serve -webkit- CSS.

Speakers

Presenter Title Topic Location Share? Media More Details
Who Are You? What Do You Do? What are you going to talk about? Where are you presenting from? (Moz Space, your house, space) Will you be sharing your screen? (yes/no, other info) Links to slides or images you want displayed on screen Link to where audience can find out more information
Lars Bergstrom Researcher Servo – ACID2 support Chicago, IL No, but stream video YouTube MP4 http://github.com/mozilla/servo

Roundtable

Do you have a question about a Mozilla Project or initiative? Let us know by Friday- we’ll do our best to get you an answer.

Please note that we may not always be able to get to every item on this list, but we will try!

Who are you? Area of question Question
What’s your name? What do you work on? Is your question about policy, a product, a Foundation initiative, etc. What would you like to know?

Welcome!

Let’s say hello to some new Mozillians! If you are not able to join the meeting live, you can add a link to a short video introducing yourself.

Introducing New Volunteers

New Volunteer(s) Introduced by Speaker location New Volunteer location Will be working on
Who is the new volunteer(s)? Who will be introducing that person? Where is the introducer? Where is the new person based? What will the new person be doing?

Introducing New Hires

New Hire Introduced by Speaker location New Hire location Will be working on
Ting-Yu Lin Steven Lee Taipei office Taipei office Firefox OS – Platform Engineering team
Guillaume Marty Gregor Wagner San Francisco London Software Engineer -

Introducing New Interns

New Intern Introduced by Speaker location New Hire location Will be working on
Theo Chevalier Chris Hofmann Mountain View Mountain View Localization Driver

<meta>

Notes and non-voice status updates that aren’t part of the live meeting go here.

Chris Heilmann: I put together a blog post outlining how to communicate to the outside world without becoming a target for misquotes or attacks. Please have a read. I am also happy to help anyone who wants to say something but feels intimidated or unhappy to do it publicly. This is a time to stand strong and together and not give people wrong quotes. It is not a time to be silent when you are unhappy. Have a read, it has a cute baby bat.


  • Dial-in: conference# 8600

    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 8600

    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 8600
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 8600
    • CA/Vancouver: +1 778 785 1540, x92 Conf# 8600
    • CA/Toronto: +1 416 848 3114, x92 Conf# 8600
    • UK/London: +44 (0)207 855 3000, x92 Conf# 8600
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 8600
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 8600

WebmakerChanges to Thimble URLs: goodbye naming conflicts, hello bit.ly

Creating web pages in Thimble? You may notice some changes to your Thimble links.

What’s different?

Your Thimble URLs now have an extra bit in the middle: a unique identifier made up of random letters. So for example, in the past your URL might have looked like this:

Why did we do this?

To prevent naming conflicts. Previously, the lack of any project identifier meant you could only ever create one page with a specific title.

Say, for example, you needed two pages with the title “my projects” or “test.” Or maybe you made a page called “School project” a year ago, and now you want to make a new one with that same title. Before, you couldn’t do that, because the URLs would have confllicted. Now you can.

We’ve basically taken the same strategy we were already using for Popcorn and applied it to Thimble. And following the same convention as sites like Twitter, Medium and You Tube.

Coming soon: shorter, shinier links with bit.ly

We know these URLs are longer, and maybe a little harder to share. That’s why we’re working on bit.ly URL shortening next, so that you can publish your page and get a super short URL for sharing.

The new short URLs will use “mzl.la,” and look like http://mzl.la/shortcode — so that everyone can see your URL is special, and spread some Mozilla pride. :)

We’re also working on fixing up Thimble sharing for Twitter. If you have underscores or spaces in your Webmaker account name, you may have noticed problems when you try to Tweet about your makes. This problem has to do with how Twitter parses URLs. Luckily, this issue will disappear once we get bit.ly integrated, so we should have a fix coming for you soon!

Questions or comments?

Air MozillaMozilla Weekly Project Meeting

Mozilla Weekly Project Meeting The Monday Project Meeting

QMOBug Verification Day

Hello Mozillians!

Wednesday, April 16th, we will be holding our weekly Bug Verification Day. This event is held on the #testday IRC channel and it’s addressed to everyone willing to get involved in improving Firefox.

You don’t need to have any previous experience in working with bugs. Ask for help on the #testday channel and someone there will give you assistance. More details are available in the wiki page we set up for you.

If you’re unable to attend these meetings and still want to get involved, you can verify bugs on your own time. Just add the [bugday-20140416] tag to the whiteboard or a comment for every bug you work on, so we know you participated to this event.

Join us and help make Firefox better!

When: April 16, 2014.

QMOBug Triage Day

Hi everyone!

Monday, April 14th we will be holding our weekly Bug Triage Day. Join us on the #testday IRC channel and get involved!

You don’t need to have any previous experience in working with bugs. Ask for help on #testday and someone there will offer you assistance. Details are also available in this event’s wiki page.

If you aren’t able to attend this event but still want to get involved, you can triage bugs on your own time.  Just add the [bugday-20140414] tag to the whiteboard or a comment for every bug you work on, so we know you participated to this event.

Join us and help make Firefox better!

When: April 14, 2014.

The Mozilla BlogFAQ on CEO Resignation

On April 3, 2014 Brendan Eich voluntarily stepped down as CEO of Mozilla. It has been well documented that Brendan’s past political donations led to boycotts, protests, and intense public scrutiny. Upon his resignation, Brendan stated: “Our mission is bigger than any one of us, and under the present circumstances, I cannot be an effective leader.” The intense pressure from the press and social media made it difficult for Brendan to do his job as CEO and effectively run Mozilla.

Since then, there has been a great deal of misinformation. Two facts have been most commonly misreported:

1. Brendan was not fired and was not asked by the Board to resign. Brendan voluntarily submitted his resignation. The Board acted in response by inviting him to remain at Mozilla in another C-level position. Brendan declined that offer. The Board respects his decision.

2. Around the time of Brendan’s appointment as CEO, three members of the Board of Directors resigned from the Mozilla Corporation Board. None of these board members resigned over any concerns about Brendan’s beliefs. Gary Kovacs and Ellen Siminoff had previously stated they had plans to leave, and John Lilly did not resign over any concerns about Brendan’s personal beliefs. Katharina Borchert was appointed to replace one of the empty Board seats after Brendan was appointed CEO.

Currently, Mitchell Baker continues to lead Mozilla as Executive Chairwoman and co-founder. The executive team is reporting directly to Mitchell, and she is also leading the search for a new CEO with support from the Board. The executive team is committed to moving forward with Mozilla’s 2014 goals under guidance from Mitchell and the Board.

Mozilla was built on the mission to promote openness, innovation and opportunity on the Web. Every day, we bring together over half a billion users and thousands of contributors from more than 80 countries to advance the cause outlined in the Mozilla Manifesto. The Web is a vital public resource and Mozilla exists to protect it. That is what we do at Mozilla, our singular point of focus.

Additional facts have been provided in the FAQ below.

FAQ:

Q: What was the sequence of events around Brendan’s appointment and eventual resignation as CEO?

A:  The events unfolded as follows:

  • 1998: Brendan Eich and Mitchell Baker co-founded the Mozilla Project

  • 2003: Brendan and Mitchell co-founded the non-profit Mozilla Foundation

  • 1998-2014: Brendan served in a variety of technology leadership roles at Mozilla, including CTO and SVP Engineering of the Mozilla Corporation

  • 2012: The Los Angeles Times reported that Brendan made a political contribution in 2008 to California Proposition 8

  • March 24, 2014: Because of his unique and proven ability to build both Mozilla and the Open Web, Brendan was appointed CEO of the Mozilla Corporation

  • March 25: Initial blog posts, social media and media stories appeared citing Brendan’s past political donations and raising concerns about his appointment as CEO

  • March 25: CREDO, a social change organization and mobile phone company that supports activism and funds progressive nonprofits, contacted Mozilla to inform that they planned a petition in response to Brendan’s appointment

  • March 26: Mitchell published a blog post in support of Mozilla’s commitment to inclusiveness

  • March 26: Brendan published a blog post re-affirming his commitment to inclusiveness at  Mozilla

  • March 27: Media coverage began to focus on fewer than 10 Mozilla employees who used Twitter to ask Brendan to step down from the role of CEO

  • March 29: Mozilla Chairwoman Mitchell Baker wrote a blog post about Mozilla’s support for marriage equality

  • March 30: CREDO petition calling for Brendan’s resignation launched

  • March 31: OkCupid launched an action asking its users to boycott Mozilla, impeding access to their site from Mozilla products

  • April 1: Brendan spoke to national media to respond to public concerns

  • April 3: Amid organized boycotts, protests and intense public scrutiny, Brendan resigned and stepped down as CEO

Q: Was Brendan Eich fired?

A: No, Brendan Eich resigned. Brendan himself said:

“I have decided to resign as CEO effective April 3rd, and leave Mozilla. Our mission is bigger than any one of us, and under the present circumstances, I cannot be an effective leader. I will be taking time before I decide what to do next.”

Brendan Eich also blogged on this topic.

Q: Was Brendan Eich asked to resign by the Board?

A: No. It was Brendan’s idea to resign, and in fact, once he submitted his resignation, Board members tried to get Brendan to stay at Mozilla in another C-level role.

Q: Was Brendan Eich forced out by employee pressure?

A: No. Mozilla employees expressed a wide range of views on Brendan’s appointment as CEO: the majority of them positive and in support of his leadership, or expressing disappointment in Brendan’s support of Proposition 8 but that they nonetheless felt he would be a good leader for Mozilla. A small number (fewer than 10) called for his resignation, none of whom reported to Brendan directly. However media coverage focused disproportionately on the small number of negative comments — largely ignoring the wide range of reactions across the Mozilla community.

Mozilla’s culture of openness extends to encouraging our staff and community to be candid about their views on Mozilla’s direction, including during and after Brendan’s appointment as CEO. We’re proud of that openness and how it distinguishes Mozilla from most organizations.

Q: Did Board members resign over Brendan’s Prop 8 donation?

A: No. Gary Kovacs and Ellen Siminoff had previously stated they had plans to leave. John Lilly did not resign over Proposition 8 or any concerns about Brendan’s personal beliefs. Katharina Borchert was appointed to replace one of the empty Board seats after Brendan was appointed CEO.

Q: Do I need to support Mozilla’s marriage equality statement to be a Mozillian?

A: No. The Mozilla Project is the overall umbrella for Mozilla’s global community, and as a community organization does not take stands on issues outside the scope of the Mozilla Manifesto. Every Mozillian is free to have his or her view, and we welcome all. The Mozilla Corporation and Mozilla Foundation, like many of their peers in the US tech industry a) have provided benefits and support to same-sex couples and b) recently issued the following statement about marriage equality. You do not need to agree with these actions or statements to be a Mozillian.

Q: Is Mozilla becoming a social activist organization?

A: No. Mozilla is committed to a single cause: keeping the Web free and open. Our specific goals as an organization are outlined in the Mozilla Manifesto. We are activists for the open Web. Mozilla has a long history of gathering people with a wide diversity of political, social, and religious beliefs to work with Mozilla.

Q. Do you need to support marriage equality to contribute to Mozilla as an employee, volunteer, or in a leadership role?

A: No. There is no litmus test to work at Mozilla.

Everything from Mozilla’s own Community Participation Guidelines, to employment law, to the Mozilla Mission mandates that employees and community members can and should hold whatever beliefs they want. We are an organization made up of a global community of people with widely diverse views coming together for a common shared goal: protecting and building an open Web.

Software CarpentryBridging the Writing Gap

A few months ago, we had an interesting discussion about what Software Carpentry should teach about writing and publishing in the 21st Century. One thing that came through loud and clear was the gulf between people who value the "I can see what I'm doing" of Microsoft Word and those who care more about the "I can tell what I did" of version control1.

Sites like Authorea, writeLaTeX, and ShareLaTeX are trying to bridge that gulf by giving people a WYSIWYG authoring tool in the browser that uses LaTeX as a storage format. This is pretty exciting: since it (potentially) allows collaborators to interact in whichever mode they prefer, it allows people to transition from one to the other instead of requiring them to make a great leap sideways.

Both sites currently allow people to save work on site or in Dropbox. It would be very cool if they also allowed people to save work in online version control repositories such as GitHub. Someone who isn't comfortable with version control could simply select "Save..." to push their changes, while someone who's already mastered pull requests and merging could interact that way, so that once again, the system could help people transition gradually from one mode to the other.

A lot of technical issues would have to be worked out, of course: would successive saves from the WYSIWYG tool be rebased automatically, how would merge conflicts be presented in the WYSIWYG interface, and so on. But I really like the idea that we could show bootcamp participants how to write the way they're used to, then how to do better when and as they are ready. If you're interested in working on this, please mail us; we'd be happy to help assemble a coalition of the willing.

[1] I still don't understand why diff-and-merge tools for Word, Excel, and PowerPoint (and their Open/LibreOffice equivalents) don't ship with Git, Mercurial, and Subversion; I can't think of any technical advance more likely to increase uptake of version control by non-programmers.

Software CarpentryDoes Continuous Publication Require Continuous Attention?

I read this post by Martin Fenner a couple of weeks ago. His thesis is that scientific publication is still very much a manual process, which makes publications relatively infrequent (and fairly painful) events. Instead, we ought to strive for continuous delivery: production of the "paper" (including release of associated code and data) should be fully automated so that authors can ship whenever they want with relatively little effort.

Continuous delivery is popular among software developers, who frequently argue it's more efficient using diagrams like this:

Continuous Delivery

What's missing from this picture, though, is the cost to customers (or in the case of publishing, readers). Every time Mozilla releases an update to Firefox, millions of people have to wait thirty seconds for it to download, install itself, and restart. And despite the best efforts of a world-class release engineering team, every update will destabilize somebody, somewhere.

Similarly, every time someone updates a pre-print on arXiv.org, everyone who has read the original has to choose between ignoring the changes or re-reading the paper. In the first case they risk missing results, but in the second they pay an opportunity cost, just as users do when companies update software over and over.

Things are worse for the readers of scientific papers. Release engineers can check that upgrades work for common configurations before shipping them, but there's no equivalent for semantic changes to papers. And as more scientists start communicating via blogs and twitter, keeping up to date with changes to things previously read will only become harder.

What science may be moving toward is a "continuous patch" model rather than a "continuous release" model. Lex Nederbragt wrote in a comment on an early draft of this post:

What I think may happen is that research is released not through arXiv anymore, but on either personal or central sites where researchers add and update results. Each small but significant change will be summarised in some sort of..."release note". Authors also may use their blog to give an overview of recent changes. Discussions of the work will ensue through the release site comment section, or issues a la github, and perhaps another researcher who wants to add an analysis [will fork] the repo and submit a pull request... At certain points, researchers will want to write up a somewhat larger overview paper, which actually may be submitted and published through the traditional journal...

To which Pauline Barmby replied:

From an author point-of-view though, there is something to be said for having an end goal: my experience to date is that I never really finish a research project, I just get sick of it. While you could always improve something, at some point you just have to stop and move on to the next thing... From a reader point-of-view: I already struggle to keep up with the literature in my field as it currently exists. It's not obvious where I would find the time to "check for updates" when I am referring to existing work. If my own current project might have dependencies on published work then I might do so, although again that delays getting my project done. So I agree... there is a cost to incremental publishing, and I think it applies to both reader and writer.

The tradeoff here is not new. Encapsulated context gives you the whole story at once: you need to carry less around in your head, but you have to notice and synthesize changes. Incremental context gives you the changes, and is quicker to assimilate if (and only if) you're keeping track of the current state of the conversation. Diff and merge tools do a decent job of translating encapsulated context into incremental context for simple text files like programs, but are oblivious to semantics. More complicated tools have mostly failed in practice, leaving the burden of comprehension on the reader.

And of course (and as always), there's the problem of attribution. If I make a small incremental improvement in your work, how should it be cited and credited? Returning to the conversation about the first draft of this article:

Pauline Barmby wrote: I see that (given 20 years or so) some kind of new recognition model can be developed.

W. Trevor King wrote: Until then, I think you just have to highlight your contributions in your CV, and talk about how awesome folks think your release process is in your research statement ;).

Software CarpentryDoes Continuous Publication Require Continuous Attention?

I read this post by Martin Fenner a couple of weeks ago. His thesis is that scientific publication is still very much a manual process, which makes publications relatively infrequent (and fairly painful) events. Instead, we ought to strive for continuous delivery: production of the "paper" (including release of associated code and data) should be fully automated so that authors can ship whenever they want with relatively little effort.

Continuous delivery is popular among software developers, who frequently argue it's more efficient using diagrams like this:

Continuous Delivery

What's missing from this picture, though, is the cost to customers (or in the case of publishing, readers). Every time Mozilla releases an update to Firefox, millions of people have to wait thirty seconds for it to download, install itself, and restart. And despite the best efforts of a world-class release engineering team, every update will destabilize somebody, somewhere.

Similarly, every time someone updates a pre-print on arXiv.org, everyone who has read the original has to choose between ignoring the changes or re-reading the paper. In the first case they risk missing results, but in the second they pay an opportunity cost, just as users do when companies update software over and over.

Things are worse for the readers of scientific papers. Release engineers can check that upgrades work for common configurations before shipping them, but there's no equivalent for semantic changes to papers. And as more scientists start communicating via blogs and twitter, keeping up to date with changes to things previously read will only become harder.

What science may be moving toward is a "continuous patch" model rather than a "continuous release" model. Lex Nederbragt wrote in a comment on an early draft of this post:

What I think may happen is that research is released not through arXiv anymore, but on either personal or central sites where researchers add and update results. Each small but significant change will be summarised in some sort of..."release note". Authors also may use their blog to give an overview of recent changes. Discussions of the work will ensue through the release site comment section, or issues a la github, and perhaps another researcher who wants to add an analysis [will fork] the repo and submit a pull request... At certain points, researchers will want to write up a somewhat larger overview paper, which actually may be submitted and published through the traditional journal...

To which Pauline Barmby replied:

From an author point-of-view though, there is something to be said for having an end goal: my experience to date is that I never really finish a research project, I just get sick of it. While you could always improve something, at some point you just have to stop and move on to the next thing... From a reader point-of-view: I already struggle to keep up with the literature in my field as it currently exists. It's not obvious where I would find the time to "check for updates" when I am referring to existing work. If my own current project might have dependencies on published work then I might do so, although again that delays getting my project done. So I agree... there is a cost to incremental publishing, and I think it applies to both reader and writer.

The tradeoff here is not new. Encapsulated context gives you the whole story at once: you need to carry less around in your head, but you have to notice and synthesize changes. Incremental context gives you the changes, and is quicker to assimilate if (and only if) you're keeping track of the current state of the conversation. Diff and merge tools do a decent job of translating encapsulated context into incremental context for simple text files like programs, but are oblivious to semantics. More complicated tools have mostly failed in practice, leaving the burden of comprehension on the reader.

And of course (and as always), there's the problem of attribution. If I make a small incremental improvement in your work, how should it be cited and credited? Returning to the conversation about the first draft of this article:

Pauline Barmby wrote: I see that (given 20 years or so) some kind of new recognition model can be developed.

W. Trevor King wrote: Until then, I think you just have to highlight your contributions in your CV, and talk about how awesome folks think your release process is in your research statement ;).

Air MozillaWebmaker Demos April 4

Webmaker Demos April 4 Webmaker Demos April 4

Mozilla KoreaBrendan Eich의 CEO 사임에 대해

lovemozilla standformozilla

본 글은 Mozilla 블로그 Brendan Eich Steps Down as Mozilla CEO 한국어 번역입니다. 이를 성원하기 위해, 커뮤니티에서는 #ilovemozilla 및 #standformozilla 캠페인을 진행하고 있습니다. 여러분의 소셜 네트워크 프로필을 변경하여 성원해주실 수 있습니다.(역자주)

Mozilla는 다른 조직과 달리 독특한 가치 기준에 따르고 있음을 자랑으로 삼고 왔으나, 지난 2주간 우리는 그 기대에 부응할 수 없었습니다. 우리는 사람들이 왜 상처받고 화 내는지 그리고 그 사람들이 올바르다는 점을 잘 알고 있습니다. 왜냐하면 우리가 Mozilla 자신의 가치 기준에 대한 충실하지 않아서입니다.

Mozilla는 여러분이 기대되는 행동을 취하지 않았습니다. 논쟁이 일어났을 때, 충분히 신속하게 사람들과 마주 하는 것을 못한점에 대해 죄송하게 생각하고 있습니다. 향후에는 보다 적절하게 대응해 나가겠습니다.

우선 Brendan Eich는 CEO를 사임하게 되었습니다. 그는 Mozilla와 그 커뮤니티를 위해 직접 이러한 결정을 내렸습니다.

Mozilla는 평등과 표현의 자유를 신조로 하고 있습니다. 표현의 자유가 의미가 있으려면, 누구나 평등하다는 점이 필요합니다. 그리고 평등을 요구하고 싸우기 위해서는 표현의 자유가 필요합니다. 이 두 가지를 동시에 유지하는 방법을 찾기는 매우 어렵습니다.

Mozilla의 조직 문화는 다양성과 관용의 정신을 반영하고 있습니다. 우리는 나이, 문화, 민족, 성별, 성 동일성, 언어, 인종, 성적 지향, 지리적인 장소, 종교적인 사고 방식 등을 불문하고 모든 사람들의 커뮤니티 참여 및 공헌을 환영합니다. Mozilla는 모든 사람들의 평등을 지지합니다.

Mozilla에는 다양한 사고 방식을 가진 직원이 있습니다. 개방성을 중요시하는 Mozilla의 문화는 스탭이나 커뮤니티로 퍼져 그들의 신조나 의견을 공개하고 또한 공유할 것을 촉구해 왔습니다. 그럼으로써 Mozilla가 많은 조직과 달리 보다 높은 가치 기준을 유지하게 하기 때문입니다. 그러나, 이번에 우리는 커뮤니티의 소리에 귀을 기울이며 마주보고 그 의견에 따를지 못했습니다.

그동안 괴로운 일이 있었지만, 지난 일련의 사태는 바로 왜 웹이 필요인지를 직접 나타내는 것이었습니다. 세상을 더 잘 되도록 하려면, 필요한 어려운 논의에도 우리는 누구나 자유롭게 참가할 수 있어야 합니다.

Mozilla는 이러한 웹의 보호에 다시 힘을 내어 나아가야 합니다. 특히, 여러분이 Mozilla에 대한 지원을 자랑스럽게 생각하도록 해야 합니다

Mozilla의 다음 리더쉽에 대해서는 아직 의논을 하고 있습니다. 조직의 향후를 결정하는 데 있어 진척 상황을 투명하게 진행하고 싶다고 생각하고 있으며, 다음 주에는 더 자세한 정보를 알려드리는 게 가능할 것입니다.

Mozilla의 사명이 보다 개방적인 웹을 실현하고, 모든 사람에게 관용과 공평할 수 있도록 하는 사실은 바뀌지 않습니다. 이를 위해 개방적인 웹 세상을 보호한다는 것입니다.

Mozilla는 겸손함을 가지고 이번 사건에서 더욱 전진할 것입니다. Mozilla는 특별한 존재로서 그 사명을 실현하도록 지탱하는 것은 다양성을 가진 대규모 글로벌 커뮤니티입니다. 여러분의 협력에 의해서 Mozilla는 더욱 강해질 것입니다.

앞으로도 더욱 성원해 주시기 부탁드립니다.

Mozilla 재단 의장 Mitchell Baker

Firebug BlogFirebug 2.0 alpha 2

getfirebug.com has Firebug 2.0 alpha 2

Firebug 2.0a2 fixes 20 issues
Firebug 2.0a2 is compatible with Firefox 30-31

 

The Firebug team is hardworking to make sure version 2.0 is ready when Firefox 30 is ready. Today’s alpha 2 is fixing reported issues and also finishing some features that have been in-progress for some time. We are planning to switch to beta phase soon to get yet more feedback.

Inspect JavaScript Function Return Value

issue 6857

 

This is a great feature that allows to examine and modify the return value of a JavaScript function. See this little example:

function myFunction()
{
    return foo();
}

 

The question is how to examine the return value of foo()? Firebug allows that by stepping through a return statement and displays it within the Watch side panel. It even allows you to modify the return value by double-clicking on it.

 

Let’s go through an example (available online) and see some screenshots describing the user experience.

The JS execution is halted at line 17 and the Watch panel shows some global scopes, but it isn’t clear what the return value is.

One of the new JSD2 features is stepping through the return statement, so if you step over once (F10), the debugger will sit at the same executable line (17), but the current return value will be available and displayed in the Watch panel at this time.

Now you can edit the return value (double clicking on number 100) just like any other variable in the Watch panel. You can even change the type to make the value a string or a JS object. Try it for yourself, install Firebug 2 alpha 2 and load the online test case.

 

Pretty Print

issue 6920 and 1238

 

Another nice feature introduced for the first time is source code prettifying. This feature is available for the Command Editor:

as well as the Script panel source:

 

 

We’d love to hear about how this version works for you.

 

Please post feedback in the newsgroup.

 

Jan ‘Honza’ Odvarko

 

QMOFirefox 29 Beta 7 Testday, April 11th

Greetings Firefox friends,

We are happy to announce that Friday,  April 11th, we are organizing the Firefox 29.0 Beta 7 Testday. We will be testing a new beta build with focus on recent changes and fixes. You can see all the details in this etherpad.

No previous testing experience is needed. Just join us on the #testday IRC channel and our moderators will offer you guidance and answer your questions.

Join us and let’s make Firefox better together!

When: April 11, 2014.

Software CarpentryUniting the Narrative

The Victoria workshop that just wrapped a few hours ago was my first stab at teaching SWC live, and I have to say - few things feel better in teaching than the tiny victory of having material that is right on pitch. I've had the lurking notion for years that the hilariously overshot lectures ('I need to cover the syllabus in half time so I can go on sabbatical'), conference talks ('One slide per 30 seconds for a solid hour seems reasonable') and lab presentations ('A 5 by 5 grid of histograms on one slide will communicate ALL the science!') were the tragic offspring of time constraints and one-upmanship, and in desperate need of a pan-academia slide deck disarmament treaty. I always pushed my students to strip it down, just hit the highlights and leave the details for the paper, because I always suspected that that little bit of entertainer's savvy was how we could really reach people: not by fact-bombing the audience into a glassy torpor, but by electrifying their curiosity just enough that the energy that propelled them forward was their own.

The SWCv5 beta material is hair-close to realizing this. That a totally green instructor could lay down the Git material - the hardest novice unit, which I presented almost exactly verbatim - and have it all work with no real hitches (except supporting older OSX'es, and 10.6 isn't really that old) is already a pedagogical blue ribbon for this content; by all rights that should have been a way bigger mess than it was. Where I knew we were really zeroing in on pitch-perfect content was in how excited a lot of the students reported being about version control after this workshop; getting people to git in the past has been like breaking rocks with my hands, but a lot of these students got it and were keen to apply it.

The internal content of the git unit is almost where it ought to be; I would tone down diff to the clearest case and introduce the very simplest example of a repo fork by getting learners to pair up rather than going through the slightly artificial exercise of cloning their own repo, but other than that I think it's where it should be (PR TBD). Beyond internal content, I think the way forward with the novice material in general and the git material in particular is to start exploring unit integration. We delivered really solid fundamentals in SQL, git, Python and the shell in Victoria, but it still felt like all the ingredients were sitting beside the pot rather than in it. Is there a way to construct a cohesive narrative with these units, that over two days tells the story of a real project and its workflow? I think so.

The easiest narrative hook comes with the git material. As long as it isn't the very first unit taught, git can be built right on top of the results of a previous unit, whether it's the SQL table dump, the *.ipynb notebook JSON or the shell scripts written at the end of the bash lesson - just git init on top of that and off you go. Notice that this preserves very loose coupling between the lessons - all that's actually required of the preceding lesson is that it generated a file (any file) - so no real constraints are being put on what the instructor can teach or how successful the students will have had to have been in the unit before git, but still the students get to see some continuity between tools, and we begin to paint a picture of what a real practice involving these tools looks like.

Similar strategies can be used to integrate the other units without strong coupling; start with the easy win of SQL as many instructors like to do, and then in the shell lesson, generate some CSVs from the SQL database for the Python lesson to then later plot - throw git in at any point as described above, and we've got a completely integrated picture of a workflow, without introducing any new tools or content into the units, or putting inflexible demands on the results of each; the only breakpoint in that recipe would be if a student failed to produce a CSV successfully, in which case we can just give them one so they can move on, and no one gets left behind.

A comment I got from several students after the workshop was 'hey this stuff is awesome, but I'm having trouble imagining how I'm going to merge this into my existing practice' - I think that illustrating a united, whole-picture workflow for them will help them make contact between the cool things we're talking about, and the realities of their work - and I think we are sitting right on the doorstep of being able to do that for them successfully.

Software CarpentrySummary of March 2014 Meeting to Discuss Novice R Material

Last week we had our first meeting to discuss the development of the novice R material. Our goal was to determine our plan for collaboratively creating the lessons.

Current state of SWC R material

We have already taught many R bootcamps. However, since there is no canoncial set of SWC lessons, SWC R instructors have been independently developing separate sets of lessons. Great material has been developed, but organizing and teaching a bootcamp is already a lot of work without also having to develop the curriculum. Furthermore, this approach divides our contributions leading to lots of duplicated effort. Ideally we would all contribute to the same lessons to create a better result than any of us could have acheived individually. However, this state of affairs was not surprising since collaborative lesson development is still immature.

Thus we had four main options to choose from:

  1. Use an existing set of R materials as the base to build from.
  2. Combine multiple existing sets of R materials.
  3. Translate the novice Python lessons to R.
  4. Start from scratch.

Option #1 requires a lot of effort from the original creator of the materials since she or he is the most familiar with the state of the material (as an example, this is the option we chose for the intermediate R lessons, with Karthik Ram not only developing the materials but also updating them after others reviewed each lesson). Option #2 has the benefit of combining the best parts of multiple sets of bootcamp lessons, but the big drawback is that it would require volunteers becoming familiar with the content of the multiple sets of lessons. Option #3 aligns the Python and R materials, but also presents the challenge of introducing R-specific control flow and data structures within a lesson originally developed for Python. Option #4 is the most open-ended option, but also requires the most work.

Our plan

We decided on Option #3, translating the novice Python lessons to R. This allows the SWC R community to benefit from the recent discussion around creating novice Python material (and of course hopefully allow us to contribute back our findings from teaching these lessons at bootcamps to improve both the R and Python lessons). Here is our plan:

Between each round of edits, everyone will be able to contribute comments/suggestions to the pull requests.

How to get involved

There are lots of ways you can get involved in the development of the novice R material, including:

  • Join the r-discuss mailing list.
  • Review the forthcoming pull requests.
  • Test rblocks, a new R package developed by Ramnath Vaidyanathan to implement Matt Davis' ipythonblocks.
  • Create domain-specific lessons that could supplement the main novice R materials (I'd recommend proposing your idea on the mailing list prior to developing an entire lesson).

Air MozillaToronto Data Science Group - April 2014

Toronto Data Science Group - April 2014 Toronto Data Science Group - April 2014 edition

The Mozilla BlogBrendan Eich Steps Down as Mozilla CEO

Mozilla prides itself on being held to a different standard and, this past week, we didn’t live up to it. We know why people are hurt and angry, and they are right: it’s because we haven’t stayed true to ourselves.

We didn’t act like you’d expect Mozilla to act. We didn’t move fast enough to engage with people once the controversy started. We’re sorry. We must do better.

Brendan Eich has chosen to step down from his role as CEO. He’s made this decision for Mozilla and our community.

Mozilla believes both in equality and freedom of speech. Equality is necessary for meaningful speech. And you need free speech to fight for equality. Figuring out how to stand for both at the same time can be hard.

Our organizational culture reflects diversity and inclusiveness. We welcome contributions from everyone regardless of age, culture, ethnicity, gender, gender-identity, language, race, sexual orientation, geographical location and religious views. Mozilla supports equality for all.

We have employees with a wide diversity of views. Our culture of openness extends to encouraging staff and community to share their beliefs and opinions in public. This is meant to distinguish Mozilla from most organizations and hold us to a higher standard. But this time we failed to listen, to engage, and to be guided by our community.

While painful, the events of the last week show exactly why we need the Web. So all of us can engage freely in the tough conversations we need to make the world better.

We need to put our focus back on protecting that Web. And doing so in a way that will make you proud to support Mozilla.

What’s next for Mozilla’s leadership is still being discussed. We want to be open about where we are in deciding the future of the organization and will have more information next week. However, our mission will always be to make the Web more open so that humanity is stronger, more inclusive and more just: that’s what it means to protect the open Web.

We will emerge from this with a renewed understanding and humility — our large, global, and diverse community is what makes Mozilla special, and what will help us fulfill our mission. We are stronger with you involved.

Thank you for sticking with us.

 

Mitchell Baker, Executive Chairwoman

 

For more information:

 

 

 

hacks.mozilla.orgCoordinate Conversion Made Easy – the power of GeometryUtils

In a previous post we introduced the GeometryUtils interface and the getBoxQuads() API for retrieving the CSS box geometry of a DOM node. GeometryUtils also takes care of another important problem: converting coordinates reliably from one DOM node to another. For example, you might want to find the bounding-box of one element relative to another element, or you might want to convert event coordinates from the viewport to some arbitrary element.

Existing APIs

Until now, simple cases could be handled using getBoundingClientRect() and some math, but complex cases (e.g. involving CSS transforms) were almost impossible to handle using standard APIs. The nonstandard APIs webkitConvertPointToPage and webkitConvertPageToPoint are a big improvement, but apart from not being standardized, they’re not as powerful as they need to be. In particular it’s more convenient and more robust to provide an API for directly converting coordinates from one element to another.[1]

New APIs

GeometryUtils introduces three new methods for coordinate conversion:

  • to.convertPointFromNode(point, from) converts a a point relative to the top-left of the first border-box of “from” to a point relative to the top-left of the first border-box of “to”. The point is a DOMPointInit, which means you can pass a DOMPoint or a JS object such as {x:0, y:0}.
  • to.convertRectFromNode(rect, from) converts a a DOMRect relative to the top-left of the first border-box of “from” to a DOMQuad relative to the top-left of the first border-box of “to” by converting the vertices of the DOMRect. It converts to a DOMQuad to ensure that the result is accurate even if it needs to be rotated or skewed by CSS transforms.
  • to.convertQuadFromNode(quad, from) converts a DOMQuad from “from” to “to”. It’s just like convertRectFromNode except for taking a DOMQuad.

As with getBoxQuads, a node can be an Element, TextNode or Document; when a Document is used, the coordinates are relative to the document’s viewport.

Example:

<div id="d" style="position:absolute; transform:rotate(45deg); left:100px; top:100px; width:100px; height:100px;"></div>
<div id="e" style="position:absolute; left:100px; top:100px; width:100px; height:100px;"></div>
var p1 = document.convertPointFromNode({
    x:0, y:0
  }, document.getElementById("e")
);
// p1.x == 100, p1.y == 100
 
var p2 = document.convertPointFromNode({
    x:0, y:0
  }, document.getElementById("d")
);
// p2.x == 150, p2.y == 150 - 50*sqrt(2) (approx)
 
p2 = document.getElementById("e").convertPointFromNode({
    x:0, y:0
  }, document.getElementById("d")
);
// p2.x == 50, p2.y == 50 - 50*sqrt(2) (approx)
 
var q1 = document.convertRectFromNode(
  new DOMRect(0, 0, 50, 50), 
  document.getElementById("e")
);
// q1.p1.x == 100, q1.p1.y == 100
// q1.p2.x == 150, q1.p2.y == 100
// q1.p3.x == 150, q1.p3.y == 150
// q1.p4.x == 100, q1.p4.y == 150
 
var q2 = document.convertQuadFromNode(
  new DOMQuad({
    x:60, y:50
  }, {
    x:90, y:50
  }, {
    x:100, y:100
  }, {
    x:50, y:100
  }), 
  document.getElementById("e")
);
// q2.p1.x == 100, q2.p1.y == 100
// q2.p2.x == 150, q2.p2.y == 100
// q2.p3.x == 140, q2.p3.y == 150
// q2.p4.x == 110, q2.p4.y == 150
p1
p2

Sometimes it’s useful to convert to or from an element’s CSS content-box, padding-box or margin-box. This is supported via an optional ConvertCoordinateOptions dictionary with the following options:

  • fromBox: one of "content", "padding", "border" or "margin", selecting which CSS box of the first fragment of the from node the input point(s) are relative to.
  • toBox: selects which CSS box of the first fragment of the to node the returned point(s) are relative to.

As a special case, this makes it easy to convert points between different
CSS box types of the same element. For example, to convert a point from an
element’s border-box to be relative to its content-box, use
element.convertPointFromNode(point, element, {toBox:"content"}).

Example:

<div id="e" style="position:absolute; padding:20px; left:100px; top:100px; width:60px; height:60px;"></div>
var p1 = document.convertPointFromNode({
    x:0, y:0
  }, document.getElementById("e"), 
  {fromBox:"content"}
);
// p1.x == 120, p1.y == 120
 
p1 = document.getElementById("e").convertPointFromNode({
    x:120, y:120
  }, document,
  {toBox:"content"}
);
// p1.x == 0, p1.y == 0
 
p1 = document.getElementById("e").convertPointFromNode({
    x:0, y:0
  }, document.getElementById("e"), 
  {fromBox:"content"}
);
// p1.x == 20, p1.y == 20
 
p1 = document.getElementById("e").convertPointFromNode({
    x:20, y:20
  }, document.getElementById("e"), 
  {toBox:"content"}
);
// p1.x == 0, p1.y == 0
p1
e content-box
e border-box

These APIs are available in Firefox nightly builds and should be released in Firefox 31. Firefox is the first browser to implement these APIs.

Footnote

[1] Consider the following example:

<div style="transform:scale(0)">
  <div id="a">...<>
  <div id="b">...<>
</div>

In this case, converting a point relative to a to be relative to b by converting first to page coordinates and then back to b doesn’t work, because the scale(0) maps every point in a to a single point in the page.