Honza Bambas: New Gecko performance tool: Backtrack |
Backtrack aims to show a complete code path flow from any point back to its source, crossing asynchronous callbacks, threads, processes, network requests, timers and any kind of implementation specific queuing plus capturing any I/O or mutex blockade. The ‘critical flow execution path’ is put to a context of all the remaining concurrent execution flows. It’s then easy to examine how the critical flow is blocked and delayed by concurrent tasks.
The work is tracked in this bug, where you also find patches and build instructions. There is also an add-on that, in Backtrack enabled builds, allows you to view actual captured data.
Click the screenshot bellow to view an interactive preview. It’s capture of load of my blog main page till the first-paint notification (no e10s and no network predictor to demonstrate the capture capabilities.)
Backtrack combines*) Gecko Profiler and Task Tracer.
Gecko Profiler (PSP) provides instrumentation (already spread around the code base) to capture static call stacks. I’ve enhanced the PSP instrumentation to also capture objects (i.e. 'this'
pointer value) and added a simple base class to easily monitor object life time (classes must be instrumented.)
Task Tracer (TT) on the other hand provides a generic way to track back on runnables – but not on e.g. network poll results, network requests or implementation specific queues. It was easy to add a hook into the TT code that connects the captured object inter-calls with information about runnables dispatch source and target.
The Backtrack experimental patch:
ProfilerTracked
as a base class to track the object lifetime and class name automatically)PROFILER_LABEL_FUNC
instrumentation recording this
pointer value automatically ; this way it collects calls between objectsconnect()
and DNS resolution)Followups:
Disadvantages: just one – significant memory consumption.
*) The implementation is so far not deeply bound to SPS and TT memory data structures. I do the capture my own – actually a third data collection, side by SPS and TT. I’m still proving the concept this way but if found useful and bearable to land in this form as a temporary way of collecting the data, we can optimize and cleanup as a followup work.
The post New Gecko performance tool: Backtrack appeared first on mayhemer's blog.
http://www.janbambas.cz/new-gecko-performance-tool-backtrack/
|
Air Mozilla: Martes mozilleros |
Reuni'on bi-semanal para hablar sobre el estado de Mozilla, la comunidad y sus proyectos. Bi-weekly meeting to talk (in Spanish) about Mozilla status, community and...
|
David Burns: WebDriver Specification - Have you read it lately? |
A lot of work has gone into the WebDriver Specification this year. The methods in there have had a major make over to make them more specific in the steps that are required as well as having the relevant links. Go have a read of it and feel free to raise bugs against it, we will be updating it quite regularly. You can see all the work that is happening on Github. We do everything via pull requests so you can read things before they land.
My team have also been working hard at making sure that our implementation is following the specification and are making some great leaps with it. I will be releasing a development version of the python bindings soon that use the httpd, like InternetExplorerDriver and ChromeDriver, to drive the browser. Currently our httpd only works against Nightly but there is a merge to Aurora happening soon when we will be sending out links for you to start playing with it all. I am actually looking forward to some of the feedback that we get about it.
http://www.theautomatedtester.co.uk/blog/2015/webdriver-specification-have-you-read-it-lately.html
|
Byron Jones: happy bmo push day! |
the following changes have been pushed to bugzilla.mozilla.org:
discuss these changes on mozilla.tools.bmo.
https://globau.wordpress.com/2015/06/09/happy-bmo-push-day-146/
|
Mike Conley: Things I’ve Learned This Week (June 1 – June 5, 2015) |
I’m working on a patch for bug 1116188 to make gathering profiles from subprocesses asynchronous. In order to do that, I’m exposing a new method on nsIProfiler called getProfileDataAsync that is returning a DOM Promise. What’s interesting about this is that I’m returning a DOM Promise from C++! 1
In order to construct a DOM Promise in C++, I need to hand it something that implements nsIGlobalObject. I suspect that this helps the Promise determine which memory region that it belongs to.
My new method gets a JSContext* because I’ve got the [implicit_jscontext] bit about the method definition in the nsIProfiler.idl file… so how do I go about turning that into an nsIGlobalObject?
Here’s the maneuver:
// Where aCX is your JSContext*: nsIGlobalObject* go = xpc::NativeGlobal(JS::CurrentGlobalOrNull(aCx));
That will, as the name suggests, return either an nsIGlobalObject*, or a nullptr.
For my patch for bug 1116188, it’s all well and good to create a DOM Promise, but you have to resolve or reject that Promise for it to have any real value.
In my case, I wanted to take a string, parse it into a JS Object, and resolve with that.
Resolving or rejecting a DOM Promise in Javascript is pretty straight-forward – you’re given back resolve / reject function, and you just need to call those with your results and you’re done.
In C++, things get a little hairier. As I discovered in my most recent episode of The Joy of Coding, conditions need to be right in order for this to work out.
Here’s what I ended up doing (I’ve simplified the method somewhat to remove noise):
void ProfileGatherer::Finish() { AutoJSAPI jsapi; jsapi.Init(); JSContext* cx = jsapi.cx(); JSAutoCompartment ac(cx, mPromise->GlobalJSObject()); // Now parse the JSON so that we resolve with a JS Object. JS::RootedValue val(cx); { UniquePtr buf = mWriter.WriteFunc()->CopyData(); NS_ConvertUTF8toUTF16 js_string(nsDependentCString(buf.get())); MOZ_ALWAYS_TRUE(JS_ParseJSON(cx, static_cast(js_string.get()), js_string.Length(), &val)); } mPromise->MaybeResolve(val); }
The key parts here are getting the AutoJSAPI on the stack, initting it, gettings its JSContext, and then putting the JSAutoCompartment on the stack. Note that I had to pass not only the JSContext, but the global JS Object for the Promise as well – I suspect that’s, again, to ensure that the right compartment is being entered. Otherwise, I start failing assertions like crazy.
Note that the code above is by no means perfect – I’m missing error handling functions for when the JSON parsing goes wrong. In that case, I should probably reject the Promise instead. bz pointed me to a good example of that going on here in Fetch.cpp:
if (!JS_ParseJSON(cx, decoded.get(), decoded.Length(), &json)) { if (!JS_IsExceptionPending(cx)) { localPromise->MaybeReject(NS_ERROR_DOM_UNKNOWN_ERR); return; } JS::Rooted exn(cx); DebugOnlygotException = JS_GetPendingException(cx, &exn); MOZ_ASSERT(gotException); JS_ClearPendingException(cx); localPromise->MaybeReject(cx, exn); return; } localPromise->MaybeResolve(cx, json); return;
I’ll probably end up doing something similar in the next iteration of my patch.
http://mikeconley.ca/blog/2015/06/08/things-ive-learned-this-week-june-1-june-5-2015/
|
Jeff Muizelaar: Intel driver crash of the day |
http://muizelaar.blogspot.com/2015/06/intel-driver-crash-of-day.html
|
Christian Heilmann: UA Sniffing issue: Outdated PageSpeed sending WebP images to Microsoft Edge |
PageSpeed by Google is a great way to add clever performance enhancements to your site without having to do a lot by hand. Not surprisingly, a lot of people used it when it came out. Sadly enough, people then don’t upgrade it when Google does which means there are a lot of sub-optimal installations out there.
This wouldn’t be an issue, if the old versions didn’t use user agent sniffing to try to detect a browser, which leads to a lot of false positives.
One of these false positives is that Microsoft Edge Mobile is detected as Chrome, which means that PageSpeed converts images to WebP. MS Edge does not support WebP, which is why you’ll have broken images:
The fix is easy: just upgrade your PageSpeed to the latest version as the team moved on from UA Sniffing. There should not be any backwards compatibility issues. Upgrading can be done via package managers on Apache, but with NGINX, it requires compilation. Version 1.8 was the first version that turned on WebP transcoding by default. Version 1.9 fixed it by making sure it worked off of accept header rather than UA string.
If you want to test if a server does the right thing (which is using accept headers instead of UA sniffing), use MS Edge.
A quick and dirty way is also to change your user agent string to the following and surf to the site. This is effectively doing reverse sniffing, so it is OK to detect falsy detection scripts, but not a good idea to do real capability/interoperability testing.
Mobile UA String for Edge (please, don’t use for sniffing)
Mozilla/5.0 (Windows Phone 10; Android 4.2.1; Microsoft; NOKIA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Mobile Safari/537.36 Edge/12.0
Desktop UA String for Edge (please, don’t use for sniffing)
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0
You can do this in most developer tools (I use the User Agent Switcher extension in Firefox which is also available for Chrome). If you are on Windows/IE or MS Edge, you can go to the F12 developer tools and change the browser profile to “phone”.
If you upgraded and fixed this interop issue, feel free to ping me or @MSEdgeDev and we’ll be happy! Let’s fix the web, one bad sniff at a time.
|
Air Mozilla: Mozilla Weekly Project Meeting |
The Monday Project Meeting
https://air.mozilla.org/mozilla-weekly-project-meeting-20150608/
|
About:Community: MDN Contributor of the Month for May 2015: Saurabh Nair |
Congratulations to Saurabh Nair, who is the MDN Contributor of the Month for May 2015. He was selected from among the MDN contributors who received an MDN Star badge in May for significant contributions to MDN.
Saurabh has been contributing to MDN since 2011, and became more active in the last year. He was one of the participants at the Hack on MDN weekend in Berlin earlier this year. He is on the “spam watch” team, who look out for spam pages, deleting them and banning the spammers as soon as they appear. Since he lives in India, he can do this while MDN staff members in Europe and North America are sleeping.
Here is an interview with Saurabh, conducted via email:
When and how did you get started contributing to MDN?
I started referring to MDN docs in 2011 when I started my web development career. Whenever I found typos or errors, I used to correct them. I would also add links where more clarification was required and such. But it was only in 2014 that I began to spend more time on MDN, still mostly for my own learning, but doing editorial reviews, etc. Around that time I got involved with the MDN community also, which is a really nice bunch of people.
The first full article I wrote on MDN was on a new CSS property called will-change, under guidance from Jean-Yves Perrier. Writing it was a great learning experience and finishing it was gratifying. I’ve written a couple other full articles since then and looking forward to write more. Also, it fills me with pride every time I see one of the articles I wrote translated by someone I don’t know to some language I can’t read. Seriously, I feel like Shakespeare right about then.
How does what you do on MDN affect other parts of your life, or vice versa?
I’m a web developer by profession, and very interested in the happenings around web technologies. Correctness and clarity are very much stressed at MDN. For instance, I once witnessed a discussion on the #mdn IRC channel about whether to use the word “updated” or “overwritten” in an article. The difference was subtle in the case, but it still mattered, and was valued and debated. I know for a fact that working on MDN has improved my knowledge and in turn improved the quality of my office work. Also I got to meet a number of great people through MDN, and that has positively affected my personal life too.
And in reverse, being a professional web developer has made it kind of easy and natural for me to work on related things on MDN.
What advice do you have for new contributors on MDN?
Everything you do is valued, whether it is tagging articles, doing reviews, writing, or just about anything. If you like technical writing and learning about new web technologies, helping with MDN is going to be a really rewarding experience.
http://blog.mozilla.org/community/2015/06/08/mdn-contributor-of-the-month-for-may-2015-saurabh-nair/
|
QMO: Firefox 39 Beta 3 Testday Results |
Hello mozillians!
As you already may know, last Friday – June 5th – we held another Testday event, this time for Firefox 39 Beta 3.
We’d like to take this opportunity to thank everyone for getting involved in the proposed testing activities and in general, for helping us make Firefox better.
Many thanks are due again to our very active Bangladesh QA Community (Nazir Ahmed Sabbir, Rezaul Huque Nayeem, Rakibul Islam Ratul, Md.Ehsanul Hassan and Mohammad Maruf Islam), Aleksej, and kenkon for their extraordinary efforts and contributions, and to all our moderators. Thanks a bunch!
Keep an eye on QMO for future events!
https://quality.mozilla.org/2015/06/firefox-39-beta-3-testday-results/
|
Mozilla Open Policy & Advocacy Blog: Announcing the 2015 Ford-Mozilla Open Web Fellows |
Building and supporting leaders equipped to protect the open Web is a core part of Mozilla’s advocacy strategy. After a comprehensive, worldwide search, we are excited to introduce the 2015 Ford-Mozilla Open Web Fellows!
Paola Villarreal | Americal Civil Liberties Union, Massachusetts
Tim Sammut | Amnesty International
Andrea Del Rio | Association for Progressive Communications
Drew Wilson | Free Press
Gem Barrett | Open Technology Institute
Tennyson Holloway | Public Knowledge
Find out more about what they will be doing in 2015.
The 2015 class represents the diversity of the Web — they come from around the world and bring skills ranging from security analysis and digital campaigning to games and apps development. Each Fellow will spend 10 months immersed in a host organization, working to advance Mozilla’s mission in policy areas including privacy, access, expression and more.
Learn about the competitive selection process.
The Open Web Fellows program — a collaboration between the Ford Foundation and Mozilla — is an international program designed to engage developers, engineers, technologists, programmers and other webmakers with civil society organizations around the world to help protect the Internet. The Fellowship program is designed to create an ecosystem that will strengthen and build leaders dedicated to advancing the free and open Web.
During the 10-month Fellowship, this next generation of leaders will be immersed in projects that address key needs with respect to digital freedom. The Fellowships will produce better technical understanding among civil society and government policy-making bodies, a stronger affirmative agenda that creates better public awareness and understanding of Internet policy issues, and improved cross-sector coordination. Fellows will serve as mentors, advisors and ambassadors, helping to develop a better-informed global policy discussion.
The 2015 class of Ford-Mozilla Open Web Fellows are working with some of the world’s leading organizations to help ensure the public policy climate safeguards the Internet as a shared, global and public resource. In this inaugural year, Fellows are embedded within six organizations: the American Civil Liberties Union (ACLU), Amnesty International, the Association for Progressive Communications (APC), Free Press, Open Technology Institute and Public Knowledge.
Please join us in welcoming the 2015 class of Ford-Mozilla Open Web Fellows. We are eager to see their impact in the months to come.
https://blog.mozilla.org/netpolicy/2015/06/08/announcing-the-2015-ford-mozilla-open-web-fellows/
|
Robert O'Callahan: Israel, Part 1 |
I just got back today from an amazing trip to Israel. I was invited by the Technion to speak at their TCE 2015 conference. So I did that, added a few days for sight-seeing since I don't like to travel halfway around the world for just a couple of days of work, and also had a full day in Hong Kong on the way there.
I've never been outside the airport in Hong Kong before, so I was excited to finally do that. I took the tram up Tai Ping Peak, walked the Lugard Road circuit and back down to the city, then spent the afternoon at Cheung Chau island. It was incredibly hot and humid, and I was so busy looking for drinks and icy desserts that I forgot to eat proper food until the end of the day. I enjoyed the coastal track on Cheung Chau island, through jungle and the back streets of villages, though the Cheng Po Tsai "pirate cave" was a bit disappointing --- comparable sea caves at Piha don't even have names :-).
Checking into my El Al flight I experienced the famous El Al security. The very nice security man asked me endless questions, including topics like what I did in the USA and who I knew there from the Middle East. It all went well, aided by the Technion's letter, but I was nervous and felt a bit of an urge to confess to something (anything!) to make the man happy. Two local security officers with very large guns were watching the whole area and I wondered what happens if you accidentally give a wrong answer...
Early Sunday morning I got a taxi from Ben Gurion airport to Haifa. Excitingly, the taxi driver drove at 130km/h most of the way, with one hand on the steering wheel --- because he only had one arm. I stayed at the Colony Hotel, which was generally excellent and who very generously checked me into a room at 6am! Later in the morning I walked around the waterfront and up the front side of the famous Mount Carmel, then to the Bahai Gardens tour with my friend Nimrod --- amazing. We had a late, long lunch with a couple of other conference people and I spent the rest of the day relaxing and working in my room.
An unexpected blessing of my trip was the food. I've never had much Middle Eastern/Mediterranean food before --- there's not much of it here in Auckland --- so I had a lot of very good food that's new to me. I will never think about hummus the same way again.
The TCE conference was held on Monday and Tuesday. It was an eclectic group of speakers, but most of them were very good at giving talks accessible to a broad audience, and I really enjoyed hearing a broad range of computer science talks like I used to in my grad student days at CMU. There were very interesting talks on complexity theory, databases, architecture, compilers, testing, verification, and more. One of the speakers was my former CMU officemate Bianca --- an unexpected pleasure to meet again in such an exotic location! Having been mostly out of the academic circuit for a long time, I felt many waves of imposter syndrome, and so I was rather nervous leading up to my talk. It all seemed to mysteriously come right as soon as I got started --- I'll chalk that up to God and prayer. Without a clock or a proper practice run, even the timing was perfect; we had time for a couple of questions before a wailing siren cut us off --- a scheduled national-defense drill. I think we were supposed to flee to a shelter but most people just went to get coffee. I had a great time talking to researchers at the conference, and learned a lot of useful information.
On Monday night we had a speakers' dinner at the Technion, on a balcony with a view towards the Golan (and on a clear day, Mount Hermon, apparently). It was sobering to think of the brutal civil war raging just beyond our vision. On Tuesday night I had one of the most extraordinary meals of my life at a Druze village near Haifa --- a dozen large side dishes, most new to me; a huge main dish consisting of kebab meats, rice and cheese, with a layer of bread baked on top; and an irresistable kanafe dessert. I had no desire or need to eat anything the whole of the following day --- which I'll cover in the next post.
|
Dave Hunt: Joining Web QA |
I’m excited to announce that as of last week I am officially on Mozilla’s Web QA team! Despite working closely with the team since I started at Mozilla over four years ago, I’ve always reported to another team. Originally I had a hybrid role, where I reported to the Director of QA and assisted with automation of both Web and Desktop products. Later, we formed the QA Automation Services team, which existed to provide automation services to any QA team. This was mostly absorbed into the A-Team, which shares a lot of the same goals but is not just focused on QA. During my time with the A-Team a lot of my work started to shift towards Firefox OS, so it made sense during a organisational shift towards vertical stacks for me to officially join the Firefox OS automation team.
Many times since I started at Mozilla I’ve felt that I had more to offer the Web QA team, and I’ve always been a keen contributor to the team. I can’t say it was an easy decision to move away from Firefox OS, as it’s a terrifically exciting project, but the thought of joining Web QA just had me bursting with enthusiasm! In a time where there’s been a number of departures, I’m pleased to say that I feel like I’m coming home. Look out web – you’re about to get even more automated!
Last week Stephen Donner interviewed me on being a Mozilla Web QA contributor. You can read the blog post over on the Web QA blog.
I’d like to take this opportunity to thank Stephen Donner, Matt Evans, Clint Talbert, Jonathan Griffin, and James Lal for their support and leadership. I’ve made so many great friendships at Mozilla, and with our Whistler work week just around the corner I’m so looking forward to catching up with many of them in person!
|
Mozilla Release Management Team: Firefox 39 beta2 to beta3 |
A reasonable beta in term of number of changesets accepted. Mostly some stability fixes and minor improvements.
Extension | Occurrences |
cpp | 21 |
json | 17 |
h | 15 |
py | 9 |
js | 6 |
jsm | 3 |
build | 3 |
sh | 2 |
in | 2 |
xul | 1 |
xhtml | 1 |
list | 1 |
ini | 1 |
html | 1 |
c | 1 |
Module | Occurrences |
js | 22 |
b2g | 17 |
dom | 12 |
testing | 7 |
toolkit | 6 |
layout | 4 |
browser | 4 |
widget | 3 |
netwerk | 3 |
gfx | 3 |
modules | 2 |
mobile | 1 |
ipc | 1 |
build | 1 |
List of changesets:
Boris Zbarsky | Bug 1168207. Be a bit more careful with overflow checking in XHR. r=baku a=lizzard - cf279fc867d5 |
Andrea Marchesini | Bug 1166924 part 0 r=bent a=lizzard - 36bf5bcceb27 |
Wes Kocher | Bug 1166924 part 1 r=baku a=lizzard - 528d47773256 |
Milan Sreckovic | Bug 1166082: Check if the lock succeeded before using it. r=bschouten a=lizzard - 15a7bce855fe |
Ben Turner | Bug 1163109 - Restrict the resource:// weirdness in workers to loads from a system principal. r=bzbarsky, a=lizzard - f49be454944b |
Gijs Kruitbosch | Bug 995697 - Remove obsolete geolocation private browsing test. r=jdm, a=test-only - 4b0c26bdab21 |
Tim Nguyen | Bug 1166867 - Support -moz-os-version: windows-win10. r=jimm, a=sledru - e712de047451 |
Seth Fowler | Bug 1163740 - Paper over qcms crashes due to NaN values in qcms_transform::matrix. r=dmajor, a=sledru - 9463b7173dd9 |
Joel Maher | Bug 1162753 - Update talos. r=wlach, a=test-only - 5c4d05edc7cf |
Francois Marier | Bug 1167493 - Application Reputation: disable remote lookup of zip files on Mac/Linux. r=gcp, a=sledru - 80cde01ed15c |
Maire Reavy | Bug 1137057 - Interactive Intelligence added to screensharing whitelist. r=jesup, a=sledru - 415472b5a680 |
Mats Palmgren | Bug 1003441 - Check that the new frame is also a nsSubDocumentFrame (i.e. that Init has picked up the detached views). r=roc, a=sledru - abcd95bb7212 |
Honza Bambas | Bug 1122420 - Improve after-shutdown dispatch assertion on CacheIOThread. r=michal, a=sledru - 082a23c146bd |
Chris Manchester | Bug 1169798 - Refresh the marionette server's window reference when switching between windows to avoid intermittent exception.;r=ato a=test-only - d8904a3f0278 |
Jan de Mooij | Bug 1160884 - Add KeepAlive instructions after elements/slots uses. r=nbp, a=abillings - 6d8c0c9dc553 |
Ted Mielczarek | Bug 1162060 - Add Socorro auth token to Android and B2G mozconfigs. r=mshal, a=NPOTB - adbf7c8af745 |
Ted Mielczarek | Bug 1162060 - Add socorro auth token to B2G device build mock environments. r=bhearsum, a=NPOTB - 683cbf33c92a |
Terrence Cole | Bug 1156045 - Only print jstests assertion output on failure. r=sfink, a=test-only - b8a4ed23ed26 |
Tooru Fujisawa | Bug 1162456 - Part 1: Add --format option in jstests.py and jit_test.py as a replacement for --tinderbox. r=sfink, a=test-only - 9d6eae8f4c6e |
Tooru Fujisawa | Bug 1162456 - Part 2: Use --format=automation instead of --tinderbox. r=sfink, a=test-only - ec01909d713e |
Tooru Fujisawa | Bug 1169199 - Check platform argument on linux SpiderMonkey shell build and specify target and host on 32bit build. r=sfink, a=test-only - 05122c19b3d7 |
Tooru Fujisawa | Bug 1155985 - Set FieldInto::mType just before storing to reserved slot. r=jonco, a=abillings,lizzard - 04e07d5a9b00 |
Patrick McManus | Bug 1144602 - test_rel_preconnect orange. r+a=test-only - 499efe6e8a4b |
Dave Townsend | Bug 1168954 - Unexpected "Install" button appears on add-on install progress doorhanger. r=dao, a=lizzard - bb5ac2094352 |
Aaron Klotz | Bug 1133351 - Part 1: Make Windows IPC play nicely with COM STA marshaling. r=bsmedberg, a=lizzard - 8f1677195e6f |
Aaron Klotz | Bug 1133351 - Part 2: Use SetWinEventHook to detect OLE Window. r=bent, a=lizzard - 59793d7e1b7e |
James Willcox | Bug 1167197 - Fix GMPProvider on Android r=cpearce a=lizzard - e2ed03987d19 |
Liz Henry | Post Beta 3 for short beta cycle: disable EARLY_BETA_OR_EARLIER a=lizzard - 49e75ecb84f8 |
Daniel Holbert | Bug 765078 - Give SMIL time events a longer grace period to fire, in test_smilTimeEvents.xhtml. a=test-only - c271d2f06862 |
Nihanth Subramanya | Bug 1163559 - Search engine icons are always displayed at low resolution. r=florian, a=lizzard - 8ecfee4a2185 |
Edwin Flores | Bug 1160101 - Disable Adobe EME by default; enable only in Mozilla builds. r=glandium, a=lizzard - 516ef88d8790 |
Aaron Klotz | Bug 1151318 - Add quirks flag to help Unity plugin release mouse capture. r=jimm, a=lizzard - a75365b95a17 |
Andrea Marchesini | Bug 1169867 - nsXMLHttpRequest should use and free mProxy correctly. r=ehsan, a=abillings - f16daa2effd1 |
Andrea Marchesini | Bug 1166900 - Better string length check in nsZipArchive::GetDataOffset. r+a=dveditz - 634d32969bd6 |
Andrea Marchesini | Bug 1167888 - Better string length check in nsZipArchive::BuildFileList. r=smaug, a=dveditz - 62bb5056f458 |
http://release.mozilla.org/statistics/39/2015/06/08/fx-39-b2-to-b3.html
|
Karl Dubost: Old CSS syntax with prefixes |
Working on Web Compatibility issues for Japan is a kind of nightmare. The two biggest offenders are first versions of WebKit flexbox and gradient. Basically Web developers hurried to use flexbox for their Web sites, but never dared fixing it when the new stable syntax had been released.
When we do not update our site to include the stable standardized syntax, we do a couple of things.
Conclusion: Nobody wins!
Otsukare!
|
Raniere Silva: Mathml May Meeting |
Note
Sorry for the delay in write this post.
This is a report about the Mozilla May IRC Meeting (see the announcement here). The topics of the meeting can be found in this PAD (local copy of the PAD) and the IRC log (local copy of the IRC log) is also available.
The next meeting will be in June 10th at 8pm UTC (check the time at your location here). Please add topics in the PAD.
|
Robert O'Callahan: Small Change To rr Behavior |
To address issue 1490, I just checked in an rr improvement that changes the behavior of gdb+rr in a user-visible way. When the last thread of the debuggee process exits, rr generates a fake SIGKILL signal before exiting the process. This gives the user a chance to reverse-execute from the end of the debuggee execution, when previously rr would have let the process terminate normally so reverse execution cannot occur. The new behavior is a little bit of a lie since in most cases SIGKILL was never actually sent, but I hope the usefulness of this new behavior outweights any possible confusion.
http://robert.ocallahan.org/2015/06/small-change-to-rr-behavior.html
|
Mike Conley: The Joy of Coding (Ep. 17): Frustrations in the Key of C++ |
In this episode, I gave a quick update on the OS X printing bug we’d been working on a for a few weeks (Spoiler alert – the patch got reviewed and landed!), and then dove into my new problem: getting performance profiles from subprocesses asynchronously.
And, I won’t lie to you, this is probably the most frustrating episode in the series so far. I really didn’t make much headway.
The way I want to solve this problem involves passing a DOM Promise back to the Javascript caller that resolves when all of the profiles have been gathered asynchronously.
If I were writing this in Javascript, it’d be a cinch. Creating, passing around, and resolving Promises is pretty straight-forward in that world.
But the Gecko profiler backend is written entirely in C++, and so that’s where I’d have to create the Promise.
A few weeks back, I posted a “Things I’ve learned this week” about how to create DOM Promises in C++. That’s all well and good, but creating the Promise is only half of the job. You have to resolve (or reject) the Promise in order for it to be useful at all.
The way I wanted to resolve the Promise involved parsing a JSON string and resolving with the resulting object.
That turned out to be a lot harder than I thought it’d be. Watch the video to see why. Suffice it to say, I spend a lot of it asking for help in IRC. It’s a 100% accurate demonstration of what I do when I’m lost, or can’t figure something out, and I need help.
Since I recorded this episode, I’ve figured out what I needed to do – I’ve posted a “Things I’ve learned this week” containing that information. Hopefully that’ll help somebody else in the future!
Oh – also, this episode has sound effects, courtesy of Wacky Morning DJ (which I demonstrated in last week’s episode).
Bug 1116188 – [e10s] Stop using sync messages for Gecko profiler – Notes
http://mikeconley.ca/blog/2015/06/06/the-joy-of-coding-ep-16-frustrations-in-the-key-of-c-plus-plus/
|
Julien Pag`es: Python code cleanup – vulture |
I’m pretty sure you all already know about flake8, a great tool that combine other tools (PyFlakes, pep8 and Ned Batchelder’s McCabe script) to check style issues and code errors.
Working on Talos, I needed to find a way to find dead code on the codebase (the less code, the better!). I found a pretty good tool that helped me: vulture. This is a one shot tool – it can not be automated like flake8 as there is some false positives, but still running it once on an old codebase may be a big win to find and remove useless stuff.
Obviously it is easier to use on python programs – you will have to whitelist a lot of things if you run this on a python library that offers a public API.
If you want to seek and destoy dead code on your python program, give it a try!
https://parkouss.wordpress.com/2015/06/06/python-code-cleanup-vulture/
|
Mozilla Reps Community: Reps Weekly Call – June 4th 2015 |
Last Thursday we had our weekly call about the Reps program, where we talk about what’s going on in the program and what Reps have been doing during the last week.
Shoutouts to the Reps who helped at Festival TIK 2015 in Bandung, Indonesia: @fauzanalfi, Shinta, @rara, Fadhil, Rizky Ariestiyansyah, Bimo, @tampubolonbudiman and Eriska.
@Chelsea joined the call to talk about this new campaign that is now based in US but will be expanded to Europe and Asia soon. Even if you are not in the US you can participate sharing the “keep it personal” message and checking youtube videos.
You can create #foxyeah content even in your language asking people to download Firefox, just make sure you share it with the #foxyeah hashtag.
You can submit any question to @Chelsea.
@Costenslayer introduced the Youth Mozilla program that aims to get young people to Mozilla for the first time and show them how to be involved. The idea is to connect them to functional areas and get mentors.
You can get more information from this blog post.
@yofiesetiawan introduced the new website of Mozilla Indonesia, developed in Joomla! and now responsive!
The site is in English and Bahasa Indonesia and they hope this to be the central place of information for every Mozilla activity in the country.
These are some of the events that took place last week.
Do you want to get more visibility for your events? Check how!
In this section the floor is yours to present in 1 minute a project you are working on and ask other Reps for help and support.
@franc is looking for help with the “External experts” project to identify local organizations that do a great job in participation and Mozilla can learn from them. Ping Francisco if you want to help.
Don’t forget to comment about this call on Discourse and we hope to see you next week!
https://blog.mozilla.org/mozillareps/2015/06/05/reps-weekly-call-june-4th-2015/
|