-Поиск по дневнику

Поиск сообщений в rss_planet_mozilla

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 19.06.2007
Записей:
Комментариев:
Написано: 7

Planet Mozilla





Planet Mozilla - https://planet.mozilla.org/


Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://planet.mozilla.org/.
Данный дневник сформирован из открытого RSS-источника по адресу http://planet.mozilla.org/rss20.xml, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

William Quiviger: Exploring volunteer-run community spaces

Суббота, 02 Августа 2014 г. 17:10 + в цитатник

674px-Comm_space_taipei.png

As a follow-up to my blog post last month, I wanted to introduce the second component of the Community Building partnership I’ve been shepherding with WPR. This component focuses on Mozilla Community Spaces ie. work spaces that are 100% managed by Mozilla volunteers and funded by WPR.

Since I joined Mozilla, a bit more than 6 years ago, I’ve traveled to more than 50 countries to meet and work with dozens of Mozilla communities and hundreds upon hundreds of passionate contributors. If there is one recurrent topic brought up by Mozillians during my trips, it’s the importance of face-to-face interaction and collaboration. While we Mozillians love hacking, sharing, chatting, debating together remotely online (ie. the power of the web in all its splendor!), we also love being together and seeing each other’s faces. And this goes beyond natural social interaction (ie. hanging out with people who share a common passion and interests). As awesome as IRC, email or video conferencing may be, the virtual cross-pollination of ideas has its limits. There is real tangible value in spending time working on a project together, brainstorming, discussing and debating, all under the same roof. That’s why events at Mozilla have always been so important. Historically, events have been, for many Mozillians, the only opportunity they had to meet their fellow Mozillians in person. And to be sure, one of the big rationales of launching the Mozilla Reps programs was precisely to enable more Mozillians to organize more events in more places around the world. Since the launch of the Mozilla Reps program, there has been a surge in the number of Mozilla happening in more than 80 countries. Predictably, this increase in the number of events has resulted in not only the growth and consolidation of existing Mozilla communities, but also in the birth of new ones.

And it's precisely because Mozilla’s most established communities have grown so much and that the concentration of contributors in a given city is such that having a dedicated physical work space appears to be the logical next step to sustain this growth. Having a dedicated work space Mozillians can run on their own is much more practical, productive and cost efficient than running weekly community events to meet in a rented venue. Last but not least, those Mozillians in countries where broadband is still a rare and expensive commodity (eg. Kenya) can greatly benefit from working from a well-connected space. It is clear, community spaces can help more Mozillians do more, together.

And this is where the Community Space initiative comes in. Over the past couple of months, I’ve been gathering feedback from different communities who have expressed a strong interest in having a community space to work from. I’ve also gathered lots of feedback and ideas as to how these community spaces could be run by volunteers while being funded by WPR. This led Rob Middleton (Director of WPR) and I to kick off several “pilots” around the world over the next 12 months, specifically in Athens, Bogota, Bangalore, Madrid, Manila, Nairobi and Taipei.

The selection criteria for these pilot cities include: - level of interest expressed by community - level of the community's preparedeness to manage a space - located in a strategic market for Firefox OS

These pilots will, hopefully, help us test out different sizes of spaces, gather important learnings and best practices to enable us to eventually roll-out a global community space initiative next year, which will support *all* communities who wish to run their own community spaces.

For more details on the initiative, make sure to peruse through the official wiki page which I'll be updating regularly: https://wiki.mozilla.org/Contribute/WPR/Community_Space_Initiative

In the next few months, I’ll be sharing regular progress reports for each space on this blog and also on the Grow Mozilla calls. Feedback and ideas are, as always, more than welcome. These pilots will be critical in the planning and design of the official community space initiative next year.

The first pilot we’re running is with the Taiwanese community in Taipei, which officially inaugurated its community space a few weeks ago. This will be the focus of my next blog post. Stay tuned!

http://somethin-else.org/index.php?post/2014/08/02/Exploring-community-spaces


Eric Shepherd: The Sheppy Report: Week of July 28, 2014

Суббота, 02 Августа 2014 г. 02:12 + в цитатник

It’s been a while since my last Sheppy Report; there several good(ish) reasons for that. I won’t rehash all that today, though.

My intent is to resume these weekly reports; they were well-received back then, and I hope they’ll help improve my ability to keep people apprised of what I’m doing and about what’s new on MDN.

What I’m up to

My primary mission this week was to work on the MDN documentation project plans, getting them prepared for use by moving them to MDN, building any necessary content and macros  to support their presence, and so forth. This has gone pretty well, although it’s not quite finished yet. I plan to work on Saturday to complete this project.

Next week, I intend to tackle integration of the project plans with doc status pages and to write the WebGL documentation project plan. This will let us get started with the job of finding someone to write that important content.

There’s plenty more on my to-do list, and it’s possible priorities could shift, but finishing the current work is pretty much my Most Important Thing right now.

What I did this week

  • Created the landing page for the new home of MDN documentation project plans.
    • We decided to move these planning documents to MDN (even though planning docs don’t traditionally belong on MDN) in order to integrate them with our processes better. Having them on MDN means we can use KumaScript to automatically populate tables from bug lists, other areas of MDN, and so forth.
    • This will also let us integrate them with our existing doc status page system, which has been a great tool. I look forward to this augmentation work.
    • This page automatically rebuilds every four hours so its macro-generated list of subpages can be kept up to date.
  • Archived our old “Team Status Board” page. This was an experiment in tracking what individual MDN contributors were working on that didn’t work out.
  • Updated the non-standardGeneric macro
    • Corrected a typo that broke the macro, causing a KumaScript error on all pages using this macro or one that calls it.
    • Improved performance slightly by adding code to bounce out of loops when an end condition is detected early.
  • Migrated the developer phone documentation project plan to MDN, reformatting it to follow the new organizational structure for these plans.
  • Copy-edited the string.repeat() documentation.
  • Rewrote parts of the MakeColumnsForDL macro on MDN; this macro, which breaks up a
    into two columns for our landing pages, was in some cases splitting the list in the midst of a
    tag.
  • Migrated the Game Developer Zone documentation project plan to MDN.
  • Created a framework doc plan page for the RecRoom project.
  • Created a framework doc plan page for the WebGL docs project.
  • These framework doc plans will require filling -out, of course.
  • Corrected an accidental “translation-in-place” incident that replaced the English Apps zone landing page with Italian.
  • Created the element doc plan page on MDN.

There’s lots not covered here, such as email catch-up from my vacation a week or two ago, and all sorts of non-meeting discussions about MDN features, ideas for improving articles, etc. But you’re likely not interested. In fact, I bet you didn’t actually read this far anyway. :)

Meetings attended this week

Monday

  • #mdndev planning meeting
  • #mdndev pull request triage
  • MDN bug triage
  • Mozilla staff meeting

Tuesday

  • Developer Relations town hall meeting

Wednesday

Thursday

  • One-on-one meeting with Jean-Yves
  • Employee training meeting

Friday

  • One-on-one meeting with Ali

Unfortunately, a personal meeting ran very long on Friday, causing me to miss several scheduled meetings. Repeat apologies to everyone affected.

In general, a pretty productive week. A lot got done, and I’m making definite progress.

http://www.bitstampede.com/2014/08/01/the-sheppy-report-week-of-july-28-2014/


Margaret Leibovic: Firefox for Android: Search Experiments

Суббота, 02 Августа 2014 г. 01:10 + в цитатник

Search is a large part of mobile browser usage, so we (the Firefox for Android team) decided to experiment with ways to improve our search experience for users. As an initial goal, we decided to look into how we can make search faster. To explore this space, we’re about to enable two new features in Nightly: a search activity and a home screen widget.

Android allows apps to register to handle an “assist” intent, which is triggered by the swipe-up gesture on Nexus devices. We decided to hook into this intent to launch a quick, lightweight search experience for Firefox for Android users.

image image

Right now we’re using Yahoo! to power search suggestions and results, but we have patches in the works to let users choose their own search engine. Tapping on results will launch users back into their normal Firefox for Android experience.

We also created a simple home screen widget to help users quickly launch this search activity even if they’re not using a Nexus device. As a bonus, this widget also lets users quickly open a new tab in Firefox for Android.

image image

We are still in the early phases of design and development, so be prepared to see changes as we iterate to improve this search experience. We have a few telemetry probes in place to let us gather data on how people are using these new search features, but we’d also love to hear your feedback!

You can find links to relevant bugs on our project wiki page. As always, discussion about Firefox for Android development happens on the mobile-firefox-dev mailing list and in #mobile on IRC. And we’re always looking for new contributors if you’d like to get involved!

Special shout-out to our awesome intern Eric for leading the initial search activity development, as well as Wes for implementing the home screen widget.

http://blog.margaretleibovic.com/post/93528710518


Michael Kaply: New Certificate Verification Library in Firefox 31

Суббота, 02 Августа 2014 г. 00:25 + в цитатник

I just learned that Firefox 31 contains a new Certificate Verification Library.

If you are running into certificate errors with Firefox 31 that were not happening before, it is important that you report them as soon as possible.

It's also important that you test your infrastructure as soon as possible.

More information about this change can be found in this blog post and this Wiki article.

More information about testing can be found in this Wiki article.

If you run into problems you can change the preference security.use_mozillapkix_verification to false and this will turn off the new verification.

This is not recommended, though, because the old code will be removed in Firefox 33, so we need to make sure we get any problems worked out.

http://mike.kaply.com/2014/08/01/new-certificate-verification-library-in-firefox-31/


Jared Wein: Faster and snappier searches now in Firefox Aurora

Пятница, 01 Августа 2014 г. 23:28 + в цитатник

nice-red-running-foxIn case you haven’t noticed yet, Firefox Aurora contains some great speed ups when searching from the location bar. For far too long, searches that consisted of a single-word or arithmetic expressions would either result in errors or long delays before a search results page was presented.

This has all changed starting in Firefox Aurora. Take for example, a search for “867-5309'':

Previously when a single word was typed in to the location bar and Enter was pressed (or the Go button clicked), Firefox would look for a website at http://867-5309/. After the lookup timed out, Firefox would redirect to a search for “867-5309“. If the hyphen was removed and “8675309” was entered, Firefox would immediately go to an error page saying that it was unable to connect to the server at 8675309.

Some people may have become accustomed to placing a `?` at the beginning of the location bar to subvert this behavior. With the new Firefox Aurora, this is no longer necessary.

Slow and broken search behavior seen in Firefox 32 and older

Slow and broken search behavior seen in Firefox 32 and older

Now, in both of these cases Firefox will kick off the search request immediately. In the background, Firefox will look for locally-hosted sites that have a hostname matching the value that was typed in. Most people will see search results on average 5 seconds quicker!

In cases where there is a potential match, Firefox will show a notification bar asking if the locally-hosted site was the intended destination. Clicking “Yes, take me to 8675309'' will navigate to the matched site and whitelist it for future.

Screenshot of new behavior coming in Firefox 33

Screenshot of new behavior coming in Firefox 33

Whitelisting a serverIf you’d like to proactively whitelist a site, you can go to about:config and create a new Boolean pref with the name of `browser.fixup.domainwhitelist.` followed by the single word that you would like whitelisted. Set the pref to true, and the search will be skipped. localhost is already whitelisted.

Firefox continues to gain speed, customizability, and security with each release. This feature will find its way to the Release population with Firefox 33. In the meantime, you can install Firefox Aurora or Firefox Nightly and begin using it today.

There are two minor cases left to fix:

  • Queries that end with a period still fail. This is in the process of being fixed and can be tracked at bug 1042519.
  • Queries containing a period in the middle also fail. This is not currently being worked on, but is tracked at bug 494092.

Tagged: firefox, mozilla, planet-mozilla, snappy, usability

http://msujaws.wordpress.com/2014/08/01/faster-and-snappier-searches-now-in-firefox-aurora/


Mozilla Reps Community: Arjun and Rahid

Пятница, 01 Августа 2014 г. 21:56 + в цитатник
It brings us great sadness to share with you the recent news about two of our dear Reps we will so fondly remember. Nagarjuna Verma and Rahid Hasan of the Mozilla South Asia community are no longer with us.

Arjun – widely known by his IRC nick, Infinity – was an Indian developer contributor to WebRTC, privacy, a wildlife advocate, and an adventurer-kid at core. He spoke ideas, and helped to improve Mozilla India’s developer engagement and relations. He was recently studying in Amsterdam VU, and living his life to the fullest with friends. We got to know that during one of his adventure outings in Germany last week, he passed away of natural causes.
Arjun

Arjun – Picture by Mozilla India

Rahid was one of the front-line community leaders, Mobilizer & Mozilla Rep from Bangladesh, with passion for open source and mobile app development. He was also a curious and jolly persona – an all around awesome person. We got the news that during the Eid vacation in his hometown, Rahid passed away in a tragic accident. Reps Council member Emma Irwin wrote a post about Rahid, and I think it is fair to say it sums up the feelings of many of us who were touched by him.
Rahid

Rahid

Both passings are extremely sad, for it was not their time. They had so much to contribute to the world, to the society, and to the Web – as they so passionately continued to do. They’ve inspired many Mozillians, and even though we have a heavy heart, we know that their inspiration, legacy and memory will sustain us moving forward.
——-
Thanks to Soumya Deb and the other Reps who helped write this post.

https://blog.mozilla.org/mozillareps/2014/08/01/arjun-and-rahid/


Pascal Finette: A Personal Update

Пятница, 01 Августа 2014 г. 07:33 + в цитатник

Last year, on November 11th I joined Google.org. Exactly 90 days later I quit.

My plan for 2014 was to take some time off and focus on the things I love doing most - which is the magic which happens at the intersection of entrepreneurship, technology and impact.

I founded/co-founded two non-profits: POWERUP and The Coaching Fellowship. I did a ton of public speaking and mentored a whole bunch of entrepreneurs. I spent a week in Boulder, CO, working with the incredible Unreasonable Institute. I worked with a couple of very large companies on their innovation strategy. I became an executive coach working with some of the most inspiring individuals I’ve ever met.

And then everything changed.

For a long time I’ve been a huge fan of the work being done at Singularity University. Their mission of leveraging bleeding edge technologies to solve for the most intractable problems in the world is what I live and breath. It feels like we have been circling each other for a long time now - I have spoken a whole bunch of people there for years; and every conversation ended with “we should do something together”.

That “something” is now here!

Today I joined Singularity University to head up their Startup Lab.

We grow startups solving the world’s most intractable problems. We support, convene, collaborate and innovate. We bring the support of the world’s biggest companies to the table. We work together with the leading impact organizations worldwide.

I am at home. Let’s get cranking!

http://blog.finette.com/a-personal-update-1


Karl Dubost: IE is aliasing some WebKit properties

Пятница, 01 Августа 2014 г. 02:20 + в цитатник

DOUBLE RAINBOW. Microsoft Internet Explorer is aliasing some of the WebKit properties. Read their blog post The Mobile Web should just work for everyone.

Two men around a fire

A little while ago I was working for Opera in the Open The Web (aka Web Compatibility) team when Opera decided an experiment for Opera on Mobile. A version of the browser was released with aliases for popular CSS WebKit prefixes which were often forgotten by Web developers and name_here_your_popular framework. I can tell you that it didn't please anyone in particular at Opera, but as Bruce is mentionning in his blog post:

It’s difficult to argue for ideological purity when a simple aliasing makes the user experience so demonstrably better – and one thing I’ve learned at Opera is most users don’t care two hoots for ideology if their favourite site works better in another browser.

Any Web professional who is shocked by IE announcement has first to go through a serious introspection assessment about his/her own Web practices. What is the browser you are using on Desktop, on Mobile? Do you even know what is it to use a Web browser which is not Webkit compatible as your main browser, not just for testing? Go use Firefox for Android for one year or IE on mobile and then talk about the issues at stake. Mike on his blog, Hallvord on his and here myself are regularly talking about these issues. We specifically started Webcompat.com because of these issues. IE Team is participating to this. We hope to get wider participation from Chrome and Opera teams too.

No, what IE has announced is not surprising or even shocking. What really surprises me is that they didn't in fact fully switch to Blink or implemented a dual rendering engine. I'm not in the known, but I would not be surprised it happens one day. That would left Mozilla in a pretty nasty place of the Web and would probably force Mozilla to switch to Blink.

After wiping out all our tears if this was announced that would raise an interesting set of questions on Web governance around some projects. For example, you could imagine that Blink becomes a real opensource library not mainly controlled by Google. You may be too young for remembering, but at the very beginning of the Web most Web clients were using a single common opensource library: LibWWW.

The common code library is the basis for most browers. It contains the network access code and format handling.

Note that I'm not wishing a Blink world, because in the current situation, we don't really have an equilibrium of powers around the Blink project. Libwww was not driven by one company with a few participants. The work for standard organizations like W3C and IETF around Web technology would be dramatically be shifted from specifications to managing issues and pull requests. It would be another social dynamics.

Otsukare.

http://www.otsukare.info/2014/08/01/ie-webkit


Jeff Walden: mfbt now has UniquePtr and MakeUnique for managing singly-owned resources

Пятница, 01 Августа 2014 г. 02:17 + в цитатник

Managing dynamic memory allocations in C++

C++ supports dynamic allocation of objects using new. For new objects to not leak, they must be deleted. This is quite difficult to do correctly in complex code. Smart pointers are the canonical solution. Mozilla has historically used nsAutoPtr, and C++98 provided std::auto_ptr, to manage singly-owned new objects. But nsAutoPtr and std::auto_ptr have a bug: they can be “copied.”

The following code allocates an int. When is that int destroyed? Does destroying ptr1 or ptr2 handle the task? What does ptr1 contain after ptr2‘s gone out of scope?

typedef auto_ptr auto_int;
{
  auto_int ptr1(new int(17));
  {
    auto_int ptr2 = ptr1;
    // destroy ptr2
  }
  // destroy ptr1
}

Copying or assigning an auto_ptr implicitly moves the new object, mutating the input. When ptr2 = ptr1 happens, ptr1 is set to nullptr and ptr2 has a pointer to the allocated int. When ptr2 goes out of scope, it destroys the allocated int. ptr1 is nullptr when it goes out of scope, so destroying it does nothing.

Fixing auto_ptr

Implicit-move semantics are safe but very unclear. And because these operations mutate their input, they can’t take a const reference. For example, auto_ptr has an auto_ptr::auto_ptr(auto_ptr&) constructor but not an auto_ptr::auto_ptr(const auto_ptr&) copy constructor. This breaks algorithms requiring copyability.

We can solve these problems with a smart pointer that prohibits copying/assignment unless the input is a temporary value. (C++11 calls these rvalue references, but I’ll use “temporary value” for readability.) If the input’s a temporary value, we can move the resource out of it without disrupting anyone else’s view of it: as a temporary it’ll die before anyone could observe it. (The rvalue reference concept is incredibly subtle. Read that article series a dozen times, and maybe you’ll understand half of it. I’ve spent multiple full days digesting it and still won’t claim full understanding.)

Presenting mozilla::UniquePtr

I’ve implemented mozilla::UniquePtr in #include "mozilla/UniquePtr.h" to fit the bill. It’s based on C++11's std::unique_ptr (not always available right now). UniquePtr provides auto_ptr‘s safety while providing movability but not copyability.

UniquePtr template parameters

Using UniquePtr requires the type being owned and what will ultimately be done to generically delete it. The type is the first template argument; the deleter is the (optional) second. The default deleter performs delete for non-array types and delete[] for array types. (This latter improves upon auto_ptr and nsAutoPtr [and the derivative nsAutoArrayPtr], which fail horribly when used with new[].)

UniquePtr i1(new int(8));
UniquePtr arr1(new int[17]());

Deleters are callable values, that are called whenever a UniquePtr‘s object should be destroyed. If a custom deleter is used, it’s a really good idea for it to be empty (per mozilla::IsEmpty) so that UniquePtr is as space-efficient as a raw pointer.

struct FreePolicy
{
  void operator()(void* ptr) {
    free(ptr);
  }
};

{
  void* m = malloc(4096);
  UniquePtr mem(m);
  int* i = static_cast(malloc(sizeof(int)));
  UniquePtr integer(i);

  // integer.getDeleter()(i) is called
  // mem.getDeleter()(m) is called
}

Basic UniquePtr construction and assignment

As you’d expect, no-argument construction initializes to nullptr, a single pointer initializes to that pointer, and a pointer and a deleter initialize embedded pointer and deleter both.

UniquePtr i1;
assert(i1 == nullptr);
UniquePtr i2(new int(8));
assert(i2 != nullptr);
UniquePtr i3(nullptr, FreePolicy());

Move construction and assignment

All remaining constructors and assignment operators accept only nullptr or compatible, temporary UniquePtr values. These values have well-defined ownership, in marked contrast to raw pointers.

class B
{
    int i;

  public:
    B(int i) : i(i) {}
    virtual ~B() {} // virtual required so delete (B*)(pointer to D) calls ~D()
};

class D : public B
{
  public:
    D(int i) : B(i) {}
};

UniquePtr MakeB(int i)
{
  typedef UniquePtr::DeleterType BDeleter;

  // OK to convert UniquePtr to UniquePtr:
  // Note: For UniquePtr interconversion, both pointer and deleter
  //       types must be compatible!  Thus BDeleter here.
  return UniquePtr(new D(i));
}

UniquePtr b1(MakeB(66)); // OK: temporary value moved into b1

UniquePtr b2(b1); // ERROR: b1 not a temporary, would confuse
                     // single ownership, forbidden

UniquePtr b3;

b3 = b1;  // ERROR: b1 not a temporary, would confuse
          // single ownership, forbidden

b3 = MakeB(76); // OK: return value moved into b3
b3 = nullptr;   // OK: can't confuse ownership of nullptr

What if you really do want to move a resource from one UniquePtr to another? You can explicitly request a move using mozilla::Move() from #include "mozilla/Move.h".

int* i = new int(37);
UniquePtr i1(i);

UniquePtr i2(Move(i1));
assert(i1 == nullptr);
assert(i2.get() == i);

i1 = Move(i2);
assert(i1.get() == i);
assert(i2 == nullptr);

Move transforms the type of its argument into a temporary value type. Move doesn’t have any effects of its own. Rather, it’s the job of users such as UniquePtr to ascribe special semantics to operations accepting temporary values. (If no special semantics are provided, temporary values match only const reference types as in C++98.)

Observing a UniquePtr‘s value

The dereferencing operators (-> and *) and conversion to bool behave as expected for any smart pointer. The raw pointer value can be accessed using get() if absolutely needed. (This should be uncommon, as the only pointer to the resource should live in the UniquePtr.) UniquePtr may also be compared against nullptr (but not against raw pointers).

int* i = new int(8);
UniquePtr p(i);
if (p)
  *p = 42;
assert(p != nullptr);
assert(p.get() == i);
assert(*p == 42);

Changing a UniquePtr‘s value

Three mutation methods beyond assignment are available. A UniquePtr may be reset() to a raw pointer or to nullptr. The raw pointer may be extracted, and the UniquePtr cleared, using release(). Finally, UniquePtrs may be swapped.

int* i = new int(42);
int* i2;
UniquePtr i3, i4;
{
  UniquePtr integer(i);
  assert(i == integer.get());

  i2 = integer.release();
  assert(integer == nullptr);

  integer.reset(i2);
  assert(integer.get() == i2);

  integer.reset(new int(93)); // deletes i2

  i3 = Move(integer); // better than release()

  i3.swap(i4);
  Swap(i3, i4); // mozilla::Swap, that is
}

When a UniquePtr loses ownership of its resource, the embedded deleter will dispose of the managed pointer, in accord with the single-ownership concept. release() is the sole exception: it clears the UniquePtr and returns the raw pointer previously in it, without calling the deleter. This is a somewhat dangerous idiom. (Mozilla’s smart pointers typically call this forget(), and WebKit’s WTF calls this leak(). UniquePtr uses release() only for consistency with unique_ptr.) It’s generally much better to make the user take a UniquePtr, then transfer ownership using Move().

Array fillips

UniquePtr and UniquePtr share the same interface, with a few substantial differences. UniquePtr defines an operator[] to permit indexing. As mentioned earlier, UniquePtr by default will delete[] its resource, rather than delete it. As a corollary, UniquePtr requires an exact type match when constructed or mutated using a pointer. (It’s an error to delete[] an array through a pointer to the wrong array element type, because delete[] has to know the element size to destruct each element. Not accepting other pointer types thus eliminates this class of errors.)

struct B {};
struct D : B {};
UniquePtr bs;
// bs.reset(new D[17]()); // ERROR: requires B*, not D*
bs.reset(new B[5]());
bs[1] = B();

And a mozilla::MakeUnique helper function

Typing out new T every time a UniquePtr is created or initialized can get old. We’ve added a helper function, MakeUnique, that combines new object (or array) creation with creation of a corresponding UniquePtr. The nice thing about MakeUnique is that it’s in some sense foolproof: if you only create new objects in UniquePtrs, you can’t leak or double-delete unless you leak the UniquePtr‘s owner, misuse a get(), or drop the result of release() on the floor. I recommend always using MakeUnique instead of new for single-ownership objects.

struct S { S(int i, double d) {} };

UniquePtr s1 = MakeUnique(17, 42.0);   // new S(17, 42.0)
UniquePtr i1 = MakeUnique(42);     // new int(42)
UniquePtr i2 = MakeUnique(17); // new int[17]()


// Given familiarity with UniquePtr, these work particularly
// well with C++11 auto: just recognize MakeUnique means new,
// T means single object, and T[] means array.
auto s2 = MakeUnique(17, 42.0); // new S(17, 42.0)
auto i3 = MakeUnique(42);     // new int(42)
auto i4 = MakeUnique(17);   // new int[17]()

MakeUnique(...args) computes new T(...args). MakeUnique of an array takes an array length and constructs the correspondingly-sized array.

In the long run we probably should expect everyone to recognize the MakeUnique idiom so that we can use auto here and cut down on redundant typing. In the short run, feel free to do whichever you prefer.

Conclusion

UniquePtr was a free-time hacking project last Christmas week, that I mostly finished but ran out of steam on when work resumed. Only recently have I found time to finish it up and land it, yet we already have a couple hundred uses of it and MakeUnique. Please add more uses, and make our existing new code safer!

A final note: please use UniquePtr instead of mozilla::Scoped. UniquePtr is more standard, better-tested, and better-documented (particularly on the vast expanses of the web, where most unique_ptr documentation also suffices for UniquePtr). Scoped is now deprecated — don’t use it in new code!

http://whereswalden.com/2014/07/31/mfbt-now-has-uniqueptr-and-makeunique-for-managing-singly-owned-resources/


Fr'ed'eric Harper: HTML5 to the next level, the recording of my presentation at Montreal Python

Пятница, 01 Августа 2014 г. 01:45 + в цитатник

Fred@PythonMontreal

Last month I spoke at the monthly Python Montr'eal meetup about, guess what, Firefox OS. I already uploaded the slides online, and now the recording of my talk.

Thanks again to the friend Christian Aubry, who, like always, did an amazing job with the recording. Thanks also to Python Montr'eal for having me and Google Montr'eal for sponsoring the event.


--
HTML5 to the next level, the recording of my presentation at Montreal Python is a post on Out of Comfort Zone from Fr'ed'eric Harper

Related posts:

  1. HTML5 to the next level with Firefox OS at Python Montreal On the 12nd of May, next Monday, I’ll speak for...
  2. Firefox OS love in the Python world   Yesterday, I was the Mozilla guy, talking about Firefox...
  3. Personal branding, the recording of my presentation Remember the presentation I did on personal branding at Kongossa...

http://outofcomfortzone.net/2014/07/31/html5-to-the-next-level-the-recording-of-my-presentation-at-montreal-python/?utm_source=rss&utm_medium=rss&utm_campaign=html5-to-the-next-level-the-recording-of-my-presentation-at-montreal-python


Kent James: Thunderbird’s Future: the TL;DR Version

Пятница, 01 Августа 2014 г. 00:16 + в цитатник

In the next few months I hope to do a series of blog posts that talk about Mozilla’s Thunderbird email client and its future. Here’s the TL;DR version (though still pretty long). These are my personal views, I have no authority to speak for Mozilla or for the Thunderbird project.

Current Status

  • Thunderbird usage is growing, we have a strong core team, and expect to remain relevant to the internet for the foreseeable future. Thunderbird is mission critical to tens of millions of users.
  • The last two “community-developed” Thunderbird releases, 24 and 31, while successful as stability releases, had few new features. The enormous effort required to maintain that stability left little time for feature development.
  • Thunderbird is an important piece, under the Mozilla Manifesto, of maintaining an open internet. But it is not “The Web” and is outside of the current Mozilla Mission of “Our mission is to promote openness, innovation & opportunity on the Web.” Mozilla and the Thunderbird team need to better define the implications of that.
  • Mozilla’s strategic focus on a “Web” that excludes Thunderbird has indirectly resulted in dis-empowerment of the Thunderbird team in a variety of ways. This is becoming an existential threat to the product that needs addressing.

Where We Need to Go

  • Thunderbird should be a full-featured desktop personal information management system, incorporating messaging, calendar, and contacts. We need to incorporate the calendaring component (Lightning) by default, and drastically improve contact management.
  • We should be actively promoting open internet standards in messaging, calendaring, and contacts through product implementations as well as advocacy and standards development.
  • Our product should continually adapt to changing internet usage patterns and issues, including messaging security challenges and mobile interoperability.
  • We need to focus on the needs of our existing user base through increased reliability and performance, as well as adding long-requested features that are expected of a full-featured application.

How We Get There

  • Three full-time developers are needed to ensure a stable core base, and allow forward progress on the minimum feature set expected of us.
  • We cannot reasonably expect Firefox and MoCo to subsidize our operations, so we need to raise income independently, through donations directly from our users.
  • We are proudly Mozillians and expect to remain under the Mozilla umbrella, but the current governance structure, reporting through a Web-focused corporate management, is dis-empowering and needs conversion to a community-focused model that is focused on the needs of Thunderbird users.
  • We should ask MoFo to fund one person on the Thunderbird team to serve as an advocate for open messaging standards, contributing product code as well as participating publicly in standards development and discussions.

The Thunderbird team is currently planning to get together in Toronto in October 2014, and Mozilla staff are trying to plan an all-hands meeting sometimes soon. Let’s discussion the future in conjunction with those events, to make sure that in 2015 we have a sustainable plan for the future.

 

http://mesquilla.com/2014/07/31/thunderbirds-future-the-tldr-version/?utm_source=rss&utm_medium=rss&utm_campaign=thunderbirds-future-the-tldr-version


Vladimir Vuki'cevi'c: VR and CSS Integration in Firefox

Четверг, 31 Июля 2014 г. 22:56 + в цитатник

It’s taken a little longer than expected, but he second Firefox build with VR support and preliminary CSS content rendering support is ready. It is extremely early, and the details of interactions with CSS have not yet been worked out. I’m hoping that experimentation from the community will lead to some interesting results that can help us define what the interaction should be.

These builds support both the Oculus Rift DK1 and DK2 (see DK2 instructions towards the end of the post). No support for other devices is available yet.

API changes since last build

The API for accessing the VR devices has changed, and is now using Promises. Additionally, the “moz” prefix was removed from all methods. Querying VR devices now should look like:

function vrDeviceCallback(devices) {
  ...
}

navigator.getVRDevices().then(vrDeviceCallback);

CSS content integration

This build includes experimental integration of CSS 3D transforms and VR fullscreen mode. It also allows for mixing WebGL content along with browser-rendered CSS content. Within a block element that is made full screen with a VR HMD device, any children that have the transform-style: preserve-3d CSS property will cause the browser to render the content twice from different viewpoints. Any elements that don’t have preserve-3d will cause those elements to be stretched across the full display of the output device. For example:



Hello World

Will cause the css-square element to be rendered by the browser in the 3D space, but the WebGL canvas will be rendered only once, in this case underneath all content. No depth buffering is done between elements at this time.

The interaction between CSS transformed elements and the VR 3D space is poorly defined at the moment. CSS defines a coordinate space where 0,0 starts at the top left of the page, with Y increasing downwards, X increasing to the right, and Z increasing towards the viewer (i.e. out of the screen). For 3D content creation using CSS, “camera” and “modelview” elements could be used to provide transforms for getting a normal scene origin (based on the page’s dimensions) and camera position. It should also take care of applying orientation and position information from the HMD.

The browser itself will take care of applying the per-eye projection matrices and distortion shaders. Everything else is currently up to content. (I’ll go into detail exactly what’s done in a followup blog post.) So, a suggested structure could be:

...
...

One issue is that there currently is no way to specify the min and max depth of the scene. Normally, these would be specified as part of the projection, but that is inaccessible. For regular CSS 3D transforms, the perspective property provides some of this information, but it’s not appropriate for VR because the browser itself will define the projection transform. In this particular build, the depth will range from -(max(width,height) / 2) * 10 .. +(max(width,height) / 2) * 10. This is a complete hack, and will likely be replaced with an explicit CSS depth range property very soon. Alternatively, it might be replaced by an explicit setDepthRange call on the VR HMD device object (much like the FOV can be changed there).

I have not yet worked out the full best practices here. Some combination of transform-origin and transform will be needed to set up a useful coordinate space. A simple demo/test is available here.

As before, issues are welcome via GitHub issues on my gecko-dev repo. Additionally, discussion is welcome on the web-vr-discuss mailing list.

DK2 Support

These builds can support the DK2 when it is run in legacy/extended desktop mode. The following steps should enable rendering to the DK2, with orientation/position data:

  1. Install the DK2 runtime, and update the firmware as specified in the manual.
  2. Inside the OculusConfigTool, under Tools -> Rift Display Mode, switch to extended desktop mode
  3. The DK2 display will now appear as a normal display, in a tall-and-narrow configuration (1080 x 1920). You need to change this to normal 1920x1080 – On Windows, in the NVIDIA Control Panel, you can select the “Portrait” orientation under “Rotate display” for the DK2. This will rotate it so that it becomes 1920x1080. Similar steps should be possible on other video cards.
  4. At this point, you should be able to fire up the Firefox build and be able to get input from the DK2, as well as going fullscreen on the DK2.
  5. If you can’t, quit Firefox, and kill the “wscrip.exe” process that’s running an Oculus script, and “ovservice_x64.exe”. This seems to be a service that mediates access to the Rift, which is not compatible with the older SDK in use by the current Firefox build.

http://blog.bitops.com/blog/2014/07/31/css-and-vr-integration/


Bogomil Shopov: Optimize your GitHub Issues and 4 tricks and facts you should know about GitHub

Четверг, 31 Июля 2014 г. 15:48 + в цитатник

I wrote an article, that can be found here about the new GitHub Issues, web development processes, using visual feedback and some facts about GitHub:['bigdata','github stats','xkcd comic ban','more''].

Actually I am using one old bug from input.mozilla.org project (a.k.a) Fjord. It’s a good 4 mins read full of useful stuff and fun.

If you are interested in the tool I am using to optimize your GitHub Issues processes, it is available for free for F(L)OSS projects from here, but you should read the article first.

Any thoughts?

http://talkweb.eu/optimize-your-github-issues-and-4-tricks-and-facts-you-should-know-about-github/


Lucas Rocha: The new TwoWayView

Четверг, 31 Июля 2014 г. 15:33 + в цитатник

What if writing custom view recycling layouts was a lot simpler? This question stuck in my mind since I started writing Android apps a few years ago.

The lack of proper extension hooks in the AbsListView API has been one of my biggest pain points on Android. The community has come up with different layout implementations that were largely based on AbsListView‘s code but none of them really solved the framework problem.

So a few months ago, I finally set to work on a new API for TwoWayView that would provide a framework for custom view recycling layouts. I had made some good progress but then Google announced RecyclerView at I/O and everything changed.

At first sight, RecyclerView seemed to be an exact overlap with the new TwoWayView API. After some digging though, it became clear that RecyclerView was a superset of what I was working on. So I decided to embrace RecyclerView and rebuild TwoWayView on top of it.

The new TwoWayView is functional enough now. Time to get some early feedback. This post covers the upcoming API and the general-purpose layout managers that will ship with it.

Creating your own layouts

RecyclerView itself doesn’t actually do much. It implements the fundamental state handling around child views, touch events and adapter changes, then delegates the actual behaviour to separate components—LayoutManager, ItemDecoration, ItemAnimator, etc. This means that you still have to write some non-trivial code to create your own layouts.

LayoutManager is a low-level API. It simply gives you extension points to handle scrolling and layout. For most layouts, the general structure of a LayoutManager implementation is going to be very similar—recycle views out of parent bounds, add new views as the user scrolls, layout scrap list items, etc.

Wouldn’t it be nice if you could implement LayoutManagers with a higher-level API that was more focused on the layout itself? Enter the new TwoWayView API.

TWAbsLayoutManagercode is a simple API on top of LayoutManager that does all the laborious work for you so that you can focus on how the child views are measured, placed, and detached from the RecyclerView.

To get a better idea of what the API looks like, have a look at these sample layouts: SimpleListLayout is a list layout and GridAndListLayout is a more complex example where the first N items are laid out as a grid and the remaining ones behave like a list. As you can see you only need to override a couple of simple methods to create your own layouts.

Built-in layouts

The new API is pretty nice but I also wanted to create a space for collaboration around general-purpose layout managers. So far, Google has only provided LinearLayoutManager. They might end up releasing a few more layouts later this year but, for now, that is all we got.

layouts

The new TwoWayView ships with a collection of four built-in layouts: List, Grid, Staggered Grid, and Spannable Grid.

These layouts support all RecyclerView features: item animations, decorations, scroll to position, smooth scroll to position, view state saving, etc. They can all be scrolled vertically and horizontally—this is the TwoWayView project after all ;-)

You probably know how the List and Grid layouts work. Staggered Grid arranges items with variable heights or widths into different columns or rows according to its orientation.

Spannable Grid is a grid layout with fixed-size cells that allows items to span multiple columns and rows. You can define the column and row spans as attributes in the child views as shown below.


    ...

Utilities

The new TwoWayView API will ship with a convenience view (TWView) that can take a layoutManager XML attribute that points to a layout manager class.


This way you can leverage the resource system to set layout manager depending on device features and configuration via styles.

You can also use TWItemClickListener to use ListView-style item (long) click listeners. You can easily plug-in support for those in any RecyclerView (see sample).

I’m also planning to create pluggable item decorations for dividers, item spacing, list selectors, and more.


That’s all for now! The API is still in flux and will probably go through a few more iterations. The built-in layouts definitely need more testing.

You can help by filing (and fixing) bugs and giving feedback on the API. Maybe try using the built-in layouts in your apps and see what happens?

I hope TwoWayView becomes a productive collaboration space for RecyclerView extensions and layouts. Contributions are very welcome!

http://lucasr.org/2014/07/31/the-new-twowayview/


Daniel Stenberg: Me in numbers, today

Четверг, 31 Июля 2014 г. 13:39 + в цитатник

Number of followers on twitter: 1,302

Number of commits during the last 365 days at github: 686

Number of publicly visible open source commits counted by openhub: 36,769

Number of questions I’ve answered on stackoverflow: 403

Number of connections on LinkedIn: 608

Number of days I’ve committed something in the curl project: 2,869

Number of commits by me, merged into Mozilla Firefox: 9

Number of blog posts on daniel.haxx.se, including this: 734

Number of friends on Facebook: 150

Number of open source projects I’ve contributed to, openhub again: 35

Number of followers on Google+: 557

Number of tweets: 5,491

Number of mails sent to curl mailing lists: 21,989

TOTAL life achievement: 71,602

http://daniel.haxx.se/blog/2014/07/31/me-in-numbers-today/


Brian Warner: To Infinity And Beyond!

Четверг, 31 Июля 2014 г. 10:52 + в цитатник

It’s been a great four and a half years at Mozilla, where I’ve had the privilege to work with the wonderful and brilliant people in Labs, Jetpack, Identity, and most recently Cloud Services. I’m grateful to you all.

Now it’s time for me to move on. This Friday will be my last day in the office (but certainly not as a Mozillian!), and this blog will probably be closed down or frozen at that time. You can reach me at warner@lothar.com, and my home blog lives at http://www.lothar.com/blog .

Mozilla is an amazing place, and will always be in my heart. Thank you all for everything!

https://blog.mozilla.org/warner/2014/07/30/to-infinity-and-beyond/


Zbigniew Braniecki: Reducing MozL10n+Gaia technical debt in Firefox OS 2.1 cycle

Четверг, 31 Июля 2014 г. 00:49 + в цитатник

Firefox OS is becoming a more mature platform, and one of the components that is maturing with it is the mozL10n library.

In 2.0 cycle, which is already feature complete, we introduced the codebase based on the L20n project.

The 2.1 cycle we’re currently in is a major API cleanup effort. We’re reviewing how Gaia apps use mozL10n, migrating them to the new API and minimizing the code complexity.

Simplifying the code responsible for localizability of Firefox OS is crucial for our ability to maintain and bring new features to the platform.

There are four major areas we’re working on:

  • mozL10n.translate – with introduction of Mutation Observer, we want to phase out manual DOM translation calls.
  • mozL10n.localize – this function is extremely hard to maintain and does enough “magic” to confuse devs.
  • mozL10n.get – manual l10n gets are the biggest cause of bugs and regressions in our code. They are synchronous, not retranslatable and badly misused
  • mock_l10n – many apps still use custom MockL10n class in tests, some even use real MozL10n code in tests. This makes testing harder to maintain and develop new l10n features.

We’re working on all four areas and would love to get your help.

No matter if you are a Gaia app owner, or if you’ve never wrote a patch for Gaia. If you know JavaScript, you can help us!

All of those bugs have instructions on how to start fixing, and I will be happy to mentor you.

We have time until October 13th. Let’s get Gaia ready for the next generation features we want to introduce soon! :)

http://diary.braniecki.net/2014/07/30/reducing-mozl10ngaia-technical-debt-in-firefox-os-2-1-cycle/


Justin Crawford: Vouched Improvements on Mozillians.org

Среда, 30 Июля 2014 г. 21:50 + в цитатник

Back in October I wrote a few blog posts describing a significant problem with the way we admit new members into the Mozillians.org community platform. Yesterday the Mozillians.org team fixed it!

Before yesterday, everyone with a “vouched” account in Mozillians.org was empowered to vouch others. But we never explained what it meant to vouch someone: What it implied, what it granted. As a result, the standard for being vouched was arbitrary, the social significance of being vouched was diluted, and the privileges granted to vouched users were distributed more widely than they ought to be.

Yesterday the Mozillians.org development team released a major refactor of the vouching system. For the first time we have a shared definition and understanding of vouching: A vouch signals participation and contribution in Mozilla’s community, and grants access to content and systems not available to the general public.

The new vouch system includes features that…

  • ask a “voucher” to explain to the community why they are vouching someone
  • grant the “vouching” privilege only to people who have themselves been vouched multiple times
  • remove “legacy vouches” from accounts that were vouched before we agreed what vouching meant and whose current contributor status can’t be easily verified

It is much clearer now who can access non-public information using Mozillians.org (people who have been vouched because they participate and contribute to Mozilla) and how that list of people can grow (through individual judgments by people who have themselves been vouched numerous times).

When we know the composition of a network and understand how it will grow, we can make better decisions about sharing things with the network. We can confidently choose to share some things because we understand whom we’re sharing with. And we can reasonably choose to withhold some things for the very same reason. Understanding a network simultaneously encourages more sharing and reduces inadvertent disclosure.

Thanks to the Mozillians.org development team for making these excellent improvements!

http://hoosteeno.com/2014/07/30/vouched_improvements/


Wesley Johnston: Better tiles in Fennec

Среда, 30 Июля 2014 г. 20:30 + в цитатник

We recently reworked Firefox for Android‘s homescreen to look a little prettier on first-run by shipping “tile” icons and colors for the default sites. In Firefox 33, we’re allowing sites to designate their own tiles images by supporting  msApplication-Tile and Colors in Fennec. So, for example, you might start seeing tiles that look like:

appear as you browse. Sites can add these with just a little markup in the page:



As you can see above in the Boston Globe tile, sometimes we don’t have much to work with. Firefox for Android already supports the sizes attribute on favicon links, and our fabulous intern Chris Kitching improved things even more last year. In the absence of a tile, we’ll show a screenshot. If you’ve designated that Firefox shouldn’t cache the content of your site for security reasons, we’ll use the most appropriate size we can find and pull colors out of it for the background. But if sites can provide us with this information directly its 1.) must faster and 2.) gives much better results.

AFAIK, there is no standard spec for these types of meta tags, and none in the works either. Its a bit of the wild wild west right now. For instance, Apple supports apple-mobile-web-app-status-bar-style for designating the color of the status bar in certain situations, as well as a host of images for use in different situations.

Opera at one point supported using a minimized media query to designate a stylesheet for thumbnails (sadly they’ve removed all of those docs, so instead you just get a github link to an html file there). Gecko doesn’t have view-mode media query support currently, and not many sites have implemented it anyway, but it might in the future provide a standards based alternative. That said, there are enough useful reasons to know a “color” or a few different “logos” for an app or site, that it might be useful to come up with some standards based ways to list these things in pages.


http://digdug2k.wordpress.com/2014/07/30/better-tiles-in-fennec/


Bogomil Shopov: Capture screenshots and annotate web sites in your Firefox

Среда, 30 Июля 2014 г. 18:43 + в цитатник

Usersnap’s visual communication addon was just approved by the addon team and now we have a “green button”. Hooray!

This is a “must have” addon for every web developer who wants to solve problems with web sites faster and who wants to earn more money by shortening the communication time with the client or inside the team.

Collect ideas and share them with your team

  • Capture and annotate every website.
  • Share and discuss it with your team.
  • Communicate visually and save time.

Annotate screenshots and integrate like a pro

  • Sticky notes, a pen, the pixel ruler and more help you express yourself visually.
  • Integrate Usersnap in your existing workflow and connect it to one of our supported third party tools.

Capture screens in all environments

  • Works on every site, including localhost.
  • Works behind firewalls.
  • Works on your password-protected staging and QA servers.

Every developer will get access and  to the  Usersnap Dashboard where he/she can:

  • Discuss mockups and sketches. Annotate them and push them back to a bug tracking system
  • See advanced client-side JavaScript errors and XHR Logs and browse them.
  • Access extended Information about the user’s session: OS, browser version, screen and browser size and installed plugins

 

Click here to install it (no restart needed)

http://talkweb.eu/capture-screenshots-and-annotate-web-sites-in-your-firefox/



Поиск сообщений в rss_planet_mozilla
Страницы: 472 ... 67 66 [65] 64 63 ..
.. 1 Календарь