From a9016f0fce6bf6750a1e9fd024e16987bbc109ba Mon Sep 17 00:00:00 2001 From: Steven Garrity Date: Fri, 21 Dec 2012 16:38:04 -0400 Subject: [PATCH] Implement feedback on Research pages (Bug 614428) * Larger font for intro paragraph * Drop the main Rust language promo feature * Remove email signup in footer --- apps/research/templates/research/base.html | 10 +- .../templates/research/collaborations.html | 16 --- .../research/templates/research/projects.html | 110 ++++++++++-------- .../templates/research/publications.html | 16 --- .../research/templates/research/research.html | 27 ++--- .../templates/research/researchers.html | 44 ++++--- media/css/research/research.less | 33 ++---- media/img/research/promo-rust.jpg | Bin 26907 -> 0 bytes 8 files changed, 115 insertions(+), 141 deletions(-) delete mode 100644 apps/research/templates/research/collaborations.html delete mode 100644 apps/research/templates/research/publications.html delete mode 100644 media/img/research/promo-rust.jpg diff --git a/apps/research/templates/research/base.html b/apps/research/templates/research/base.html index e6b443832b2..f8c5b6f3800 100644 --- a/apps/research/templates/research/base.html +++ b/apps/research/templates/research/base.html @@ -17,13 +17,13 @@ {{ css('research') }} {% endblock %} -{% block page_title_prefix %}Mozilla Research — {% endblock %} +{% block page_title_prefix %}{{_('Mozilla Research — ')}}{% endblock %} {% block page_title %}{% endblock %} -{% block page_title_suffix %} — mozilla.org{% endblock %} +{% block page_title_suffix %}{{_(' — mozilla.org')}}{% endblock %} {% block breadcrumbs %} {% endblock %} @@ -47,3 +47,5 @@ {% block site_js %} {{ js('mozorg-resp') }} {% endblock %} + +{% block email_form %}{% endblock %} diff --git a/apps/research/templates/research/collaborations.html b/apps/research/templates/research/collaborations.html deleted file mode 100644 index ecba0f65202..00000000000 --- a/apps/research/templates/research/collaborations.html +++ /dev/null @@ -1,16 +0,0 @@ -{# This Source Code Form is subject to the terms of the Mozilla Public - # License, v. 2.0. If a copy of the MPL was not distributed with this - # file, You can obtain one at http://mozilla.org/MPL/2.0/. #} - -{% extends "research/base.html" %} -{% set body_id = "collaborations" %} - -{% block page_title %}Collaborations{% endblock %} - -{% block article %} - -

Mozilla Research Collaborations

- -

Coming soon.

- -{% endblock %} diff --git a/apps/research/templates/research/projects.html b/apps/research/templates/research/projects.html index 4b80e480dc0..72447a19b63 100644 --- a/apps/research/templates/research/projects.html +++ b/apps/research/templates/research/projects.html @@ -5,26 +5,26 @@ {% extends "research/base.html" %} {% set body_id = "projects" %} -{% block page_title %}Projects{% endblock %} +{% block page_title %}{{_('Projects')}}{% endblock %} {% block content %} -

Mozilla Research Projects

+

{{_('Mozilla Research Projects')}}

@@ -32,135 +32,153 @@

Mozilla Research Projects

-

Rust is a new programming language for developing reliable and efficient systems. It's designed to support concurrency and parallelism in building platforms that take full advantage of modern hardware. Its static-type system is safe and expressive and it provides strong guarantees about isolation, concurrency execution and memory safety.

-

Rust combines powerful and flexible modern programming constructs with a clear performance model to make program efficiency predictable and manageable. One important way it achieves this is by allowing fine-grained control over memory allocation through contiguous records and stack allocation. This control is balanced with the absolute requirement of safety: Rust’s type system and runtime guarantee the absence of buffer overflow, stack overflow or access to uninitialized or deallocated memory.

+ {% trans %} +

Rust is a new programming language for developing reliable and efficient systems. It's designed to support concurrency and parallelism in building platforms that take full advantage of modern hardware. Its static-type system is safe and expressive and it provides strong guarantees about isolation, concurrency execution and memory safety.

+

Rust combines powerful and flexible modern programming constructs with a clear performance model to make program efficiency predictable and manageable. One important way it achieves this is by allowing fine-grained control over memory allocation through contiguous records and stack allocation. This control is balanced with the absolute requirement of safety: Rust’s type system and runtime guarantee the absence of buffer overflow, stack overflow or access to uninitialized or deallocated memory.

+ {% endtrans %}
-

Servo

+

{{_('Servo')}}

-

Servo is an experimental project to build a Web browser engine for a new generation of hardware: mobile devices, multi-core processors and high-performance GPUs. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.

-

Servo builds on top of Rust to provide a secure and reliable foundation. Memory safety at the core of the platform ensures a high degree of assurance in the browser’s trusted computing base. Rust’s lightweight task mechanism also promises to allow fine-grained isolation between browser components, such as tabs and extensions, without the need for expensive runtime protection schemes, like operating system process isolation.

+ {% trans %} +

Servo is an experimental project to build a Web browser engine for a new generation of hardware: mobile devices, multi-core processors and high-performance GPUs. With Servo, we are rethinking the browser at every level of the technology stack — from input parsing to page layout to graphics rendering — to optimize for power efficiency and maximum parallelism.

+

Servo builds on top of Rust to provide a secure and reliable foundation. Memory safety at the core of the platform ensures a high degree of assurance in the browser’s trusted computing base. Rust’s lightweight task mechanism also promises to allow fine-grained isolation between browser components, such as tabs and extensions, without the need for expensive runtime protection schemes, like operating system process isolation.

+ {% endtrans %}
-

Shumway

+

{{_('Shumway')}}

-

Following on the success of pdf.js, a high-fidelity PDF renderer written in pure HTML and JavaScript, the Shumway project aims to implement an emulator for the Flash multimedia platform. Shumway combines rendering techniques pioneered by the open source Gordon emulator with a just-in-time (JIT) compiler for the Actionscript Virtual Machine that generates optimized JavaScript.

-

Shumway’s primary goals are to demonstrate the power and expressiveness of the HTML5 platform and to discover and remedy gaps in the Web platform.

+ {% trans %} +

Following on the success of pdf.js, a high-fidelity PDF renderer written in pure HTML and JavaScript, the Shumway project aims to implement an emulator for the Flash multimedia platform. Shumway combines rendering techniques pioneered by the open source Gordon emulator with a just-in-time (JIT) compiler for the Actionscript Virtual Machine that generates optimized JavaScript.

+

Shumway’s primary goals are to demonstrate the power and expressiveness of the HTML5 platform and to discover and remedy gaps in the Web platform.

+ {% endtrans %}
-

Emscripten

+

{{_('Emscripten')}}

-

Emscripten is an open source optimizing compiler for LLVM applications that generates pure JavaScript to run directly on the Web. Emscripten makes it possible to take C and C++ programs and convert them automatically to Open Web applications with no plugins or extensions.

-

Emscripten demonstrates that the Web is capable of supporting the responsive, real-time user experiences of interactive desktop software, including games, simulations and even live video decoding. Many applications run within an order of magnitude of their native binary performance. At the same time, Emscripten serves to diagnose and address performance bottlenecks in the Web platform to keep pushing the boundaries of tomorrow’s Web.

+ {% trans %} +

Emscripten is an open source optimizing compiler for LLVM applications that generates pure JavaScript to run directly on the Web. Emscripten makes it possible to take C and C++ programs and convert them automatically to Open Web applications with no plugins or extensions.

+

Emscripten demonstrates that the Web is capable of supporting the responsive, real-time user experiences of interactive desktop software, including games, simulations and even live video decoding. Many applications run within an order of magnitude of their native binary performance. At the same time, Emscripten serves to diagnose and address performance bottlenecks in the Web platform to keep pushing the boundaries of tomorrow’s Web.

+ {% endtrans %}
-

sweet.js is an extension and precompiler to JavaScript providing hygienic macros — that is, user-extensible syntax — similar to those of the Scheme or Rust programming languages. User-extensible syntax empowers programmers to provide their own extensions to JavaScript, without requiring new standardization and changes to built-in JavaScript engines. Macros also make it possible for programmers to mix and match extensions from multiple libraries, without having to use multiple precompilers.

+ {% trans %} +

sweet.js is an extension and precompiler to JavaScript providing hygienic macros — that is, user-extensible syntax — similar to those of the Scheme or Rust programming languages. User-extensible syntax empowers programmers to provide their own extensions to JavaScript, without requiring new standardization and changes to built-in JavaScript engines. Macros also make it possible for programmers to mix and match extensions from multiple libraries, without having to use multiple precompilers.

+ {% endtrans %}
-

LLJS is an extension and precompiler to JavaScript for writing low-level, high-performance code with tight control over memory layout and computation style. The compiler generates code similar to Emscripten, but provides a bridge for writing and integrating low-level, performance-intensive code with high-level, idiomatic JavaScript.

+ {% trans %} +

LLJS is an extension and precompiler to JavaScript for writing low-level, high-performance code with tight control over memory layout and computation style. The compiler generates code similar to Emscripten, but provides a bridge for writing and integrating low-level, performance-intensive code with high-level, idiomatic JavaScript.

+ {% endtrans %}
-

broadway.js

+

{{_('broadway.js')}}

-

Broadway is a pure JavaScript and HTML decoder of the H.264 video compression format. Broadway uses high-performance JavaScript and rendering techniques to get smooth, real-time playback of high quality videos. The goal of this project is to push the limits of the Web's computation and graphics performance.

+ {% trans %} +

Broadway is a pure JavaScript and HTML decoder of the H.264 video compression format. Broadway uses high-performance JavaScript and rendering techniques to get smooth, real-time playback of high quality videos. The goal of this project is to push the limits of the Web's computation and graphics performance.

+ {% endtrans %}
-

Parallel JavaScript is an ongoing initiative to unlock the full potential of modern hardware and expose this power to JavaScript programmers in safe and usable ways. The first major project is a joint effort with Intel Research to implement the proposed ECMAScript data parallelism API, which provides an array data structure with high-level data manipulation operations that can often be compiled to execute on multicore, vector and even GPU computation units.

+ {% trans %} +

Parallel JavaScript is an ongoing initiative to unlock the full potential of modern hardware and expose this power to JavaScript programmers in safe and usable ways. The first major project is a joint effort with Intel Research to implement the proposed ECMAScript data parallelism API, which provides an array data structure with high-level data manipulation operations that can often be compiled to execute on multicore, vector and even GPU computation units.

+ {% endtrans %}
-

asm.js

+

{{_('asm.js')}}

-

The asm.js project is an attempt to formally specify the subset of the JavaScript language that is generated by compilers like Emscripten and LLJS. By precisely formalizing and defining the language, optimizing JavaScript engines like Mozilla's SpiderMonkey can recognize code generated by these compilers and provide additional optimization. Our goal is to demonstrate that JavaScript engines can provide near-native performance on code generated by tools like Emscripten.

+ {% trans %} +

The asm.js project is an attempt to formally specify the subset of the JavaScript language that is generated by compilers like Emscripten and LLJS. By precisely formalizing and defining the language, optimizing JavaScript engines like Mozilla's SpiderMonkey can recognize code generated by these compilers and provide additional optimization. Our goal is to demonstrate that JavaScript engines can provide near-native performance on code generated by tools like Emscripten.

+ {% endtrans %}
diff --git a/apps/research/templates/research/publications.html b/apps/research/templates/research/publications.html deleted file mode 100644 index 47ec2c520ad..00000000000 --- a/apps/research/templates/research/publications.html +++ /dev/null @@ -1,16 +0,0 @@ -{# This Source Code Form is subject to the terms of the Mozilla Public - # License, v. 2.0. If a copy of the MPL was not distributed with this - # file, You can obtain one at http://mozilla.org/MPL/2.0/. #} - -{% extends "research/base.html" %} -{% set body_id = "publications" %} - -{% block page_title %}Publications{% endblock %} - -{% block article %} - -

Mozilla Research Publications

- -

Coming soon.

- -{% endblock %} diff --git a/apps/research/templates/research/research.html b/apps/research/templates/research/research.html index 42f411e4633..6fd64d06584 100644 --- a/apps/research/templates/research/research.html +++ b/apps/research/templates/research/research.html @@ -6,7 +6,7 @@ {% block body_id %}research{% endblock %} {% block page_title_prefix %}{% endblock %} -{% block page_title %}Mozilla Research{% endblock %} +{% block page_title %}{{_('Mozilla Research') }}{% endblock %} {% block extrahead %} {{ css('research') }} @@ -17,37 +17,32 @@ {% block content %}
-

Mozilla Research

-

Expanding the Foundations of the Open Web

+

{{_('Mozilla Research') }}

+

{{_('Expanding the Foundations of the Open Web') }}

- -

+{% trans %} At Mozilla Research, our focus is advanced Web platform technology. Specifically, we're out to prove that there are no limits on open technology and that it has the same capabilities and potential that closed technology does. We spend our days finding things that are impossible — and then figuring out how to make them possible. +{% endtrans %}

diff --git a/apps/research/templates/research/researchers.html b/apps/research/templates/research/researchers.html index 0f6e449a02d..c3d81d6482a 100644 --- a/apps/research/templates/research/researchers.html +++ b/apps/research/templates/research/researchers.html @@ -5,44 +5,54 @@ {% extends "research/base.html" %} {% block body_id %}researchers{% endblock %} -{% block page_title %}Researchers{% endblock %} +{% block page_title %}{{_('Researchers')}}{% endblock %} {% block content %} -

Mozilla Researchers

+

{{_('Mozilla Researchers')}}

  • - Photo -

    Andreas Gal Director of Research

    -

    Andreas is proud to lead an amazing team of researchers and engineers working on various areas of the web stack. Previously, Andreas worked as a project scientist with the Secure Systems and Languages Laboratory at the University of California, Irvine. Andreas's background is in secure systems, type-safe languages, dynamic compilation, and virtual machines.

    + {{_('Photo')}} +

    {{_('Andreas Gal')}} {{_('Director of Research')}}

    + {% trans %} +

    Andreas is proud to lead an amazing team of researchers and engineers working on various areas of the web stack. Previously, Andreas worked as a project scientist with the Secure Systems and Languages Laboratory at the University of California, Irvine. Andreas's background is in secure systems, type-safe languages, dynamic compilation, and virtual machines.

    + {% endtrans %}
  • - Photo -

    Michael Bebenita Researcher

    -

    Michael received his PhD from the University of California, Irvine in 2011 on trace-based, just-in-time compilation. Michael's primary research interests are in high-performance systems, software architecture, compilers, and virtual machines. Michael has contributed to the Rust programming language and leads the Shumway project.

    + {{_('Photo')}} +

    {{_('Michael Bebenita') }} {{_('Researcher') }}

    + {% trans %} +

    Michael received his PhD from the University of California, Irvine in 2011 on trace-based, just-in-time compilation. Michael's primary research interests are in high-performance systems, software architecture, compilers, and virtual machines. Michael has contributed to the Rust programming language and leads the Shumway project.

    + {% endtrans %}
  • - Photo -

    Dave Herman Senior Researcher

    -

    Dave received his PhD from Northeastern University in 2010 in formal semantics of programming languages. Dave's research interests include programming language design, specification, and analysis. Dave coordinates several research programs at Mozilla, including Rust and Servo, and leads the research internship program. Dave participates actively in open standards and has contributed significantly to the JavaScript standard since 2006.

    + {{_('Photo')}} +

    {{_('Dave Herman') }} {{_('Senior Researcher') }}

    + {% trans %} +

    Dave received his PhD from Northeastern University in 2010 in formal semantics of programming languages. Dave's research interests include programming language design, specification, and analysis. Dave coordinates several research programs at Mozilla, including Rust and Servo, and leads the research internship program. Dave participates actively in open standards and has contributed significantly to the JavaScript standard since 2006.

    + {% endtrans %}
  • - Photo -

    Chris Jones Senior Engineer

    -

    Chris serves as Technical Lead to the Boot to Gecko project, building a full-featured mobile operating system with open web technology. Chris's research interests lie in high-performance systems, architecture, and parallel algorithms.

    + {{_('Photo')}} +

    {{_('Chris Jones') }} {{_('Senior Engineer') }}

    + {% trans %} +

    Chris serves as Technical Lead to the Boot to Gecko project, building a full-featured mobile operating system with open web technology. Chris's research interests lie in high-performance systems, architecture, and parallel algorithms.

    + {% endtrans %}
  • - Photo -

    Allen Wirfs-Brock Research Fellow

    -

    Allen is an expert in all aspects of dynamic, object-oriented languages and their implementation. As a software architect and entrepeneur, Allen has made numerous contributions to the industrialization and commercialization of object-oriented technology, serving as a strategic technologist, software architect, product developer, and manager. Allen has founded two successful companies and made major contributions to both the Smalltalk and JavaScript language standards. In 2009, Allen was recognized as an ACM Distinguished Engineer.

    + {{_('Photo')}} +

    {{_('Allen Wirfs-Brock') }} {{_('Research Fellow') }}

    + {% trans %} +

    Allen is an expert in all aspects of dynamic, object-oriented languages and their implementation. As a software architect and entrepeneur, Allen has made numerous contributions to the industrialization and commercialization of object-oriented technology, serving as a strategic technologist, software architect, product developer, and manager. Allen has founded two successful companies and made major contributions to both the Smalltalk and JavaScript language standards. In 2009, Allen was recognized as an ACM Distinguished Engineer.

    + {% endtrans %}
diff --git a/media/css/research/research.less b/media/css/research/research.less index 51bf88c133d..b75e78cb0f7 100644 --- a/media/css/research/research.less +++ b/media/css/research/research.less @@ -34,7 +34,7 @@ #research { #main-feature { - padding-bottom: @baseLine * 2; + padding-bottom: @baseLine; } } @@ -42,6 +42,8 @@ .intro { .span(6); padding-top: @baseLine; + font-size: 18px; + .open-sans-light; } ul.links { @@ -109,31 +111,11 @@ } } -#rust-promo { - background: #fff url(/media/img/research/promo-rust.jpg) top right no-repeat; - padding: 0; - a { - display: block; - padding: @baseLine (@baseLine * 2); - color: @textColorSecondary; - &:hover, - &:active { - text-decoration: none; - } - } - p { - margin-bottom: 0; - } -} - /* Tablet Layout: 760px */ @media only screen and (min-width: @breakTablet) and (max-width: @breakDesktop) { .large h2 { font-size: 36px; } - #rust-promo { - background-position: 100px 0; - } #main-content { .intro { .span_narrow(6); @@ -173,11 +155,6 @@ #research #main-feature { padding-bottom: @baseLine; } - #rust-promo { - display: none; - background-position: 90px 0; - background-size: auto 100%; - } #main-content { .intro, ul.links { @@ -185,6 +162,10 @@ width: auto; float: none; } + .intro { + font-size: @baseFontSize; + .open-sans; + } } #projects { section { diff --git a/media/img/research/promo-rust.jpg b/media/img/research/promo-rust.jpg deleted file mode 100644 index bf0d8c30361377016790032728c6c75b99b1cb59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26907 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