I Use This!
Very High Activity

News

Analyzed 1 day ago. based on code collected 1 day ago.
Posted about 5 years ago by mihai.boldan
Hello Mozillians! As you may already know, last Friday February 22nd – we held a new Testday event, for Firefox 66 Beta 10. Thank you all for helping us make Mozilla a better place: Kamila kamciatek. Results: – several test cases executed for “Scroll Anchoring” . Thanks for another successful testday!
Posted about 5 years ago by TWiR Contributors
Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust ... [More] or send us a pull request. Want to get involved? We love contributions. This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR. Updates from Rust Community News & Blog Posts Rust case study: Community makes Rust an easy choice for npm. Combine results for improved Rust validation logic. Rust now runs on the new Cortex-M33 based Nordic nRF9160 LTE SiP. Scientific computing: a Rust adventure - part 0 - vectors. HTML code coverage reports for Rust. Blockchain in Rust - a video series. Changes in the core team. Rust lang team working groups. This week in Rust and WebAssembly 11. The embedded WG newsletter 15. Crate of the Week This week's crate is shellfn, a proc macro to easily and safely use shell scripts in Rust. Thanks to Willi Kappler for the suggestion! Submit your suggestions and votes for next week! Call for Participation Always wanted to contribute to open-source projects but didn't know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started! Some of these tasks may also have mentors available, visit the task page for more information. RustConf CfP is now open. RustFest is searching for local teams to apply for the next events. Rust: Add LLVM atomic memcpy intrinsics, expose in core/std. TiKV: support ALLOW_INVALID_DATES in coprocessor. TiKV: Use breakpad + symbolic to generate and interpret minidump-format core dumps. TiKV: Make git dependency revisions explicit in Cargo.toml. LSD: Looking for maintainers. If you are a Rust project owner and are looking for contributors, please submit tasks here. Updates from Rust Core 245 pull requests were merged in the last week Add an unstable option to build proc macros for both the host and the target Avoid ICE when region sneaks into impl trait Add const generics to the HIR Improve parsing diagnostic for negative supertrait bounds Optimise vec![false; N] to zero-alloc Add expected/provided byte alignments to validation error message Remove LazyTokenStream Add better error message for partial move Suggest removing parentheses surrounding lifetimes Use normal mutable borrows in matches Monomorphize less code in fs::{read, write} Make overflowing and wrapping negation const Fix overlapping references in BTree Relax some Ord bounds on BinaryHeap Relax some Hash bounds on HashMap and HashSet Turn duration consts into associated consts RangeInclusive internal iteration performance improvement Override VecDeque::try_rfold, also update iterator Stabilize TryFrom and TryInto with a convert::Infallible empty enum Stabilize iter::successors and iter::from_fn Destabilize fixed-width const defined atomic integers Deprecate the unstable Vec::resize_default Modify doctest's auto-fn main() to allow Results crates.io: Stop logging the referer header Approved RFCs Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week: RFC 2627: #[link(kind="raw-dylib")]. RFC 2532: Associated type defaults. Final Comment Period Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now. RFCs No RFCs are currently in final comment period. Tracking Issues & PRs [disposition: merge] Cosmetic changes to compiler comments and docs. [disposition: merge] Relax Read bounds on a bunch of BufReader methods. [disposition: merge] Tracking issue for Option::xor. [disposition: merge] Tracking issue for RFC 2043: Add align_offset intrinsic (formerly: and [T]::align_to function). [disposition: merge] Tracking issue for RefCell::{replace, swap}. [disposition: merge] Tracking issue for Vec::remove_item. New RFCs Add scoped threads to the standard library. Add more examples for | patterns in let in RFC 2175. Transparent Unions. Simplify visibility grammar. Upcoming Events Online Mar 6. Rust Community Team Meeting on Discord. Mar 13. Rust Events Team Meeting on Telegram. Africa Mar 6. Sandown, ZA - Johannesburg meetup. Asia Pacific Mar 6. Selangor, MY - Rust Malaysia Meetup Kuala Lumpur. Europe Feb 28. Copenhagen, DK - Copenhagen Rust Hack Night #0xC. Feb 28. Torino, IT - Rust Turin Meetup. Feb 28. Wroclaw, PL - Rust Wroclaw Meetup. Mar 3. St. Petersburg, RU - St. Petersburg Rust Meetup. Mar 6. Berlin, DE - Berlin Rust Hack and Learn. Mar 14. Brno, CZ - Rust Brno Meetup at Masaryk University North America Mar 6. Indianapolis, US - Indy.rs. Mar 6. Atlanta, US - Rust Atlanta Meetup. Mar 6. Vancouver, CN - Vancouver Rust meetup. Mar 11. Seattle, US - Seattle Rust Meetup. If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access. Rust Jobs Software Engineer at TenX, Singapore. Software Engineer - Blockchain at TenX, Sydney, AU. Tweet us at @ThisWeekInRust to get your job offers listed here! Quote of the Week Sadly, no quotes were nominated this week. Please submit your quotes for next week! This Week in Rust is edited by: nasa42, llogiq, and Flavsditz. Discuss on r/rust. [Less]
Posted about 5 years ago by TWiR Contributors
Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust ... [More] or send us a pull request. Want to get involved? We love contributions. This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR. Updates from Rust Community News & Blog Posts Rust case study: Community makes Rust an easy choice for npm. Combine results for improved Rust validation logic. Rust now runs on the new Cortex-M33 based Nordic nRF9160 LTE SiP. Scientific computing: a Rust adventure - part 0 - vectors. HTML code coverage reports for Rust. Blockchain in Rust - a video series. Changes in the core team. Rust lang team working groups. This week in Rust and WebAssembly 11. The embedded WG newsletter 15. Crate of the Week This week's crate is shellfn, a proc macro to easily and safely use shell scripts in Rust. Thanks to Willi Kappler for the suggestion! Submit your suggestions and votes for next week! Call for Participation Always wanted to contribute to open-source projects but didn't know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started! Some of these tasks may also have mentors available, visit the task page for more information. RustConf CfP is now open. RustFest is searching for local teams to apply for the next events. Rust: Add LLVM atomic memcpy intrinsics, expose in core/std. TiKV: support ALLOW_INVALID_DATES in coprocessor. TiKV: Use breakpad + symbolic to generate and interpret minidump-format core dumps. TiKV: Make git dependency revisions explicit in Cargo.toml. LSD: Looking for maintainers. If you are a Rust project owner and are looking for contributors, please submit tasks here. Updates from Rust Core 245 pull requests were merged in the last week Add an unstable option to build proc macros for both the host and the target Avoid ICE when region sneaks into impl trait Add const generics to the HIR Improve parsing diagnostic for negative supertrait bounds Optimise vec![false; N] to zero-alloc Add expected/provided byte alignments to validation error message Remove LazyTokenStream Add better error message for partial move Suggest removing parentheses surrounding lifetimes Use normal mutable borrows in matches Monomorphize less code in fs::{read, write} Make overflowing and wrapping negation const Fix overlapping references in BTree Relax some Ord bounds on BinaryHeap Relax some Hash bounds on HashMap and HashSet Turn duration consts into associated consts RangeInclusive internal iteration performance improvement Override VecDeque::try_rfold, also update iterator Stabilize TryFrom and TryInto with a convert::Infallible empty enum Stabilize iter::successors and iter::from_fn Destabilize fixed-width const defined atomic integers Deprecate the unstable Vec::resize_default Modify doctest's auto-fn main() to allow Results crates.io: Stop logging the referer header Approved RFCs Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week: RFC 2627: #[link(kind="raw-dylib")]. RFC 2532: Associated type defaults. Final Comment Period Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now. RFCs No RFCs are currently in final comment period. Tracking Issues & PRs [disposition: merge] Cosmetic changes to compiler comments and docs. [disposition: merge] Relax Read bounds on a bunch of BufReader methods. [disposition: merge] Tracking issue for Option::xor. [disposition: merge] Tracking issue for RFC 2043: Add align_offset intrinsic (formerly: and [T]::align_to function). [disposition: merge] Tracking issue for RefCell::{replace, swap}. [disposition: merge] Tracking issue for Vec::remove_item. New RFCs Add scoped threads to the standard library. Add more examples for | patterns in let in RFC 2175. Transparent Unions. Simplify visibility grammar. Upcoming Events Online Mar 6. Rust Community Team Meeting on Discord. Mar 13. Rust Events Team Meeting on Telegram. Africa Mar 6. Sandown, ZA - Johannesburg meetup. Asia Pacific Mar 6. Selangor, MY - Rust Malaysia Meetup Kuala Lumpur. Europe Feb 28. Copenhagen, DK - Copenhagen Rust Hack Night #0xC. Feb 28. Torino, IT - Rust Turin Meetup. Feb 28. Wroclaw, PL - Rust Wroclaw Meetup. Mar 3. St. Petersburg, RU - St. Petersburg Rust Meetup. Mar 6. Berlin, DE - Berlin Rust Hack and Learn. Mar 14. Brno, CZ - Rust Brno Meetup at Masaryk University North America Mar 6. Indianapolis, US - Indy.rs. Mar 6. Atlanta, US - Rust Atlanta Meetup. Mar 6. Vancouver, CA - Vancouver Rust meetup. Mar 11. Seattle, US - Seattle Rust Meetup. If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access. Rust Jobs Software Engineer at TenX, Singapore. Software Engineer - Blockchain at TenX, Sydney, AU. Tweet us at @ThisWeekInRust to get your job offers listed here! Quote of the Week Sadly, no quotes were nominated this week. Please submit your quotes for next week! This Week in Rust is edited by: nasa42, llogiq, and Flavsditz. Discuss on r/rust. [Less]
Posted about 5 years ago by Mike
It’s been just a little over two weeks since my last update, so let’s see where we are! A number of our projects are centered around trying to improve start-up time. Start-up can mean a lot of things, so we’re focused specifically on cold start-up ... [More] on the Windows 10 2018 reference device when the machine is at rest. If you want to improve something, the first thing to do is measure it. There are lots of ways to measure start-up time, and one of the ways we’ve been starting to measure is by doing frame recording analysis. This is when we capture display output from a testing device, and then analyze the videos. This animated GIF shows eight videos. The four on the left are Firefox Nightly, and the four on the right are Google Chrome (71.0.3578.98). The videos are aligned so that both browsers are started at the same time. The four on the left are Firefox Nightly, and the four on the right are Google Chrome (71.0.3578.98) Some immediate observations: Firefox Nightly is consistently faster to reach first paint (that’s the big white window) Firefox Nightly is consistently faster to draw its toolbar and browser UI Google Chrome is faster at painting its initial content This last bullet is where the team will be focusing its efforts – we want to have the initial content painted and settled much sooner than we currently do. Document Splitting Foundations (In-Progress by Doug Thayer) After some pretty significant refactorings to work better with APZ, Doug posted a new stack of patches late last week which will sit upon the already large stack of patches that have already landed. There are still a number of reviews pending on the main stack, but this work appears to be getting pretty close to conclusion, as the patches are in the final review and polish stage. After this, once retained display lists are enabled in the parent process, and an API is introduced to WebRender to generate frames for multiple documents in a single transaction, we can start thinking about enabling document splitting by default. Warm-up Service (In-Progress by Doug Thayer) A Heartbeat survey went out a week or so back to get some user feedback about a service that would speed up the launching of Firefox at the cost of adding some boot time to Windows. The responses we’ve gotten back have been quite varied, but can be generally bucketed into three (unsurprising) groups: Users who say they do not want to make this trade Users who say they would love to make this trade Users who don’t care at all about this trade Each group is sufficiently large to warrant further exploration. Our next step is to build a version of this service that we can turn on and off with a pref and test either in a lab and/or out in the wild with a SHIELD study. Startup Cache Telemetry (In-Progress by Doug Thayer) We do a number of things to try to improve real and perceived start-up time. One of those things is to cache things that we calculate at runtime during start-up to the disk, so that for subsequent start-ups, we don’t have to do those calculations again. There are a number of mechanisms that use this technique, and Doug is currently adding some Telemetry to see how they’re behaving in the wild. We want to measure cache hits and misses, so that we know how healthy our cache system is out in the wild. If we get signals back that our start-up caches are missing more than we expect, this will highlight an important area for us to focus on. Smoother Tab Animations (In-Progress by Felipe Gomes) UX has gotten back to us with valuable feedback on the current implementation, and Felipe is going through it and trying to find the simplest way forward to address their concerns. Having been available (though disabled by default) on Nightly, we’ve discovered one bug where the tab strip can become unresponsive to mouse events. Felipe is currently working on this. Lazy Hidden Window (In-Progress by Felipe Gomes) Under the hood, Firefox’s front-end has a notion of a “hidden window”. This mysterious hidden window was originally introduced long long ago1 for MacOS, where it’s possible to close all windows yet keep the application running. Since then, it’s been (ab)used for Linux and Windows as well, as a safe-ish place to do various operations that require a window (since that window will always be around, and not go away until shutdown). That window opens pretty early during start-up, and Felipe found an old patch that was written, and then abandoned to make its construction lazier. Felipe thinks we can still make this idea work, and has noted that in our internal benchmarks, this shaves off a few percentage points on our start-up tests Activity Stream seems to depend on the hidden window early enough that we think we’re going to have to find an alternative there, but once we do, we should get a bit of a win on start-up time. Browser Adjustment Project (In-Progress by Gijs Kruitbosch) Gijs updated the patch so that the adjustment causes the main thread to skip every other VSync rather than swithing us to 30fps globally2. We passed the patch off to Denis Palmeiro, who has a sophisticated set-up that allows him to measure a pageload benchmark using frame recording. Unfortunately, the results we got back suggested that the new approach regressed visual page load time significantly in the majority of cases. We’re in the midst of using the same testing rig to test the original global 30fps patch to get a sense of the magnitude of any improvements we could get here. Denis is also graciously measuring the newer patch to see if it has any positive benefits towards power consumption. Better about:newtab Preloading (In-Progress by Gijs Kruitbosch) By default, users see about:newtab / a.k.a Activity Stream when they open new tabs. One of the perceived performance optimizations we’ve done for many years now is to preload the next about:newtab in the background so that the next time that the user opens a tab, the about:newtab is all ready to roll. This is a perceived performance optimization where we’re moving work around rather than doing less work. Right now, we preload a tab almost immediately after the first tab is opened in a window. That means that the first opened tab is never preloaded, but the second one is. This is for historical reasons, but we think we can do better. Gijs is working on making it so that we choose a better time to preload the tab – namely, when we’ve found an idle pocket of time where the user doesn’t appear to be doing anything. This should also mean that the first new tab that gets opened might also be preloaded, assuming that enough idle time was made available to trigger the preload. And if there wasn’t any idle time, that’s also good news – we never got in the users way by preloading when it’s clear they were busy doing something else Experiments with the Process Priority Manager (In-Progress by Mike Conley) The Process Priority Manager has been enabled on Nightly for a few weeks now. Except for a (now fixed) issue where audio playing in background tabs would drop samples periodically, it’s been all quiet for regression reports. The next step is to file a bug to run an experiment on Beta to see how this work impacts page load time. Enable the separate Activity Stream content process by default (Stalled by Mike Conley) This work is temporarily stalled while I work on other things, so there’s not too much to report here. Grab bag of notable performance work Makoto Kato got rid of some more sync IPC Gijs Kruitbosch made it so that we don’t preload about:newtab’s for browser windows that have just been restored Doug Thayer made it so that we paint less when restoring sessions with pinned tabs Check out that commit date – 2003! ↩ The idea here being that we can then continue to composite scrolling and video at 60fps, but main thread paints will only be updated at 30fps ↩ [Less]
Posted about 5 years ago by Peter Dolanjski
The online advertising ecosystem is broken. The majority of digital advertising revenue is going to a small handful of companies, leaving other publishers with scraps. Meanwhile users are on the receiving end of terrible experiences and pervasive ... [More] tracking designed to get them to click on ads or share even more personal data. Earlier this month, we shared our perspective about the need to find a better web ecosystem balance that puts publishers and users at the center of the online value exchange. For users, we began our efforts with curbing pervasive tracking as we believe that this is necessary to protect privacy as a fundamental human right. For publishers, we believe that these same measures will help shift long-term ecosystem incentives which are currently stripping value from publishers and fueling rampant ad fraud. However, it is important to acknowledge that such change can take time and that publishers are hurting today. That’s why we’ve turned our attention toward finding a more sustainable ecosystem balance for publishers and users alike. But unlike other companies that would explore possible solutions behind closed doors, we’re transparent and experiment with new ideas in the open, especially when those ideas could have a significant impact on how the web ecosystems works, or fundamentally change the value exchange we have with the people who rely on our products and services. In 2019, we will continue to explore new product features and offerings, including our ongoing focus on identifying a more sustainable ecosystem balance for both publishers and users. Product Explorations As part of these product explorations small groups of browser users will be invited at random to respond to surveys, provide feedback and potentially test proposed new features, products or services. In addition, some explorations may involve partners who are working on product or service offerings targeted at this problem space. One such partner that we are collaborating with is Scroll. Upcoming Collaboration with Scroll Scroll is a consumer service powering an ad-free web that rewards great user experience and funds essential journalism. The service enables web users to pay for an ad-free experience on their favorite sites, across their devices. By enabling more direct funding of publishers, Scroll’s model may offer a compelling alternative in the ecosystem. We will be collaborating with Scroll to better understand consumer attitudes and interest towards an ad-free experience on the web as part of an alternative funding model. Next Steps We expect that these initiatives, and our collaboration with Scroll, will help shape our direction with respect to finding alternatives to the status quo advertising models. As always, we will continue to put users first and operate transparently as our explorations progress towards more concrete product plans. Stay tuned for more! The post Exploring alternative funding models for the web appeared first on Future Releases. [Less]
Posted about 5 years ago by Lars Bergstrom
We are excited to announce that we’re working together with Microsoft to bring the immersive web to one of the most-anticipated mixed reality headsets in the market: HoloLens 2. Building on Microsoft’s years of experience with the current HoloLens ... [More] , we will work together to learn from developers and users about bringing AR content to the web. Our Mixed Reality program at Mozilla is focused on bringing the best browsers, services, and tools for developers to ensure that users have a safe, private experience with open, accessible technology. Alongside our desktop and standalone VR browser efforts, this prototype of Firefox Reality for HoloLens 2 will ensure that the immersive web works for all users, regardless of device they are on. In the coming months, we will be working with the Rust community to bring the language and runtime that enable us to deliver a more secure experience to the HoloLens platforms. And we will then build on our previous work on AR headsets to bring our next generation web platform, Servo, to the HoloLens 2 when it is available this summer. Please watch this space for new builds of the browser or get involved in our projects if you’re eager to help move the needle today. [Less]
Posted about 5 years ago by [email protected] (ClassicHasClass)
My favourite console of all time is still the ahead-of-its-time Sega Dreamcast, but a close second on my list is the PowerPC-based Microsoft Xbox 360. Besides being our favourite architecture, it plays a number of great games (I still think BioShock ... [More] Infinite is one of the best games ever written, and it could have been even better) and many original Xbox titles, and it's even on topic here as Microsoft shipped Power Mac G5s as development systems to early Xbox 360 developers (the X360 being powered by the Xenon CPU, designed by IBM and using three of the PowerPC PPE cores that also appeared in the Cell processor). There was a famous Anandtech article I remember where at E3 2005 they discovered the "consoles" were props, and what people were playing were actually Power Mac G5 machines hidden in the back of the enclosures. In the community these are referred to as Alphas (or Alpha XeDK systems). A few of these boxes leaked out into the wider community and recently one of them posted how he made his G5 development system work, with lots of cool pictures. It's possible to turn one of the early 2GHz G5 machines into one of these, using a compatible graphics card (he used a flashed ATI Radeon X800 XT, but it seems easier to just use the native Mac version) and a compatible Intel network card, and a proper selection of ATA devices. There's even a term for these; they call them FrankenXenons. (A reassurance: you won't need to modify your Mac substantially to run this, and you don't need to flash the G5's firmware. On the other hand, this also means that an Alpha can be recreated or even faked with off-the-shelf hardware, and you probably shouldn't drop a lot of coin trying to get a "genuine" one unless you can verify its provenance.) Note that this probably won't make your Mac into an Xbox 360, or at least not sufficiently to replace a proper console. Many things don't run, particularly later games, and even though it has an original Xbox emulator some of those games still glitch. But at least some early games will run and the recovery image includes a few demo applications to play with. Eventually the Alphas were replaced with actual pre-production console hardware, called Beta, which have a strange history as Microsoft actually rounded them up, intentionally fouled them to prevent reuse, and shipped them overseas for destruction. Naturally some folks saved a few, as is what usually happens when someone realizes a prototype with potential future value is in their possession, but they have a reputation for being difficult machines. Even as an Xbox 360 fan, I don't feel highly compelled to seek out the proper hardware to turn an otherwise perfectly useful G5 into a doorstop that runs a few early games rather badly. It certainly doesn't argue much in support for the power of the dark Microsoft side of the (X-)force, and my slim 360 is much more convenient. But as a historical artifact it's cool that you can do so, if you want to. [Less]
Posted about 5 years ago by dylanwh
Among bugfixes and enhancements, code blocks are now syntax highlighted using @prismjs. release tag the following changes have been pushed to bugzilla.mozilla.org: [1523317] Exclude Graveyard products from QuickSearch results [1512815] Optimize ... [More] Bugzilla->active_custom_fields() for CPU and memory usage [1524213] phabricator revisions list on bug page has extra / in the revision link [1523404] Cannot clear all scopes when editing an oauth2 client. Throws DB error [1525308] Custom Bug… View On WordPress [Less]
Posted about 5 years ago by Alex Klepel
Mozilla and GIZ co-host ideation hackathon in Kigali to create a speech corpus for Kinyarwanda and to lay the foundation for local voice-recognition applications.Developers, researchers and startups around the globe working on voice-recognition ... [More] technology face one problem alike: A lack of freely available voice data in their respective language to train AI-powered Speech-to-Text engines.Although machine-learning algorithms like Mozilla’s Deep Speech are in the public domain, training data is limited. Most of the voice data used by large corporations is not available to the majority of people, expensive to obtain or simply non-existent for languages not globally spread. The innovative potential of this technology is widely untapped. In providing open datasets, we aim to take away the onerous tasks of collecting and annotating data, which eventually reduces one of the main barriers to voice-based technologies and makes front-runner innovations accessible to more entrepreneurs. This is one of the major drivers behind our project Common Voice.Common Voice is our crowdsourcing initiative and platform to collect and verify voice data and to make it publicly available. But to get more people involved from around the world and to speed up the process of getting to data sets large enough for training purposes, we rely on partners — like-minded commercial and non-commercial organizations with an interest to make technology available and useful to all.Complementary expertise and shared innovation goalsIn GIZ (Deutsche Gesellschaft für Internationale Zusammenarbeit) we are fortunate to have found an ally who, like us, believes that having access to voice data opens up a space for an infinite number of new applications. Voice recognition is well suited to reach people living in oral cultures and those who do not master a widespread language such as English or French. With voice interaction available in their own language we may provide millions of people access to information and ultimately make technology more inclusive.When we learned about GIZ’s “Team V” currently exploring voice interaction and mechanisms to collect voice data in local languages — an effort supported by GIZ’s internal innovation fund — the opportunity to leverage complementary strengths became just too obvious.Hackathon goal: Developing incentive mechanisms for Rwandan’s to contribute to the collection of open voice data in Kinyarwanda (credit: Daniel Brumund, GIZ)Eventually we started working on a concrete collaboration that would combine Mozilla’s expertise in voice-enabled technology and data collection with GIZ’s immense regional experience and reach working with local organizations, public authorities and private businesses across various sectors. This resulted in an initial hackathon in Kigali, Rwanda, with the goal of unleashing the participants creativity to unlock novel means of collecting speech corpora for Kinyarwanda, a language spoken by at least 12 million people in Rwanda and surrounding regions.Sustainable technology development needs local solutionsThe hackathon took place on 12–13 February at kLab, a local innovation hub supported by the Rwandan government. 40 teams had applied with their novel incentive mechanisms for voice data collection, proving that AI and machine learning are of great interest to the Rwandan tech community. We invited 5 teams with the most promising approaches that took into account local opportunities not foreseen by the Common Voice team.Antoine Sebera, Chief Government Innovation Officer of the Rwanda Information Society Association, opening the hackathon (credit: Daniel Brumund, GIZ)The event began with a rousing call to action for the participants by Antoine Sebera, Chief Government Innovation Officer of the Rwanda Information Society Association, a governmental agency responsible for putting Rwanda’s ambitious digital strategy into practice. GIZ then outlined the goals and evaluation criteria* of the hackathon, which was critical in setting the direction of the entire process. (*The developed solutions were evaluated against the following criteria: user centricity, incentive mechanism, feasibility, ease-of-use, potential to scale and sustainability.)Kelly Davis, Head of Mozilla’s Machine Learning Group, explaining the design and technology behind Deep Speech and Common Voice (credit: Daniel Brumund, GIZ)Kelly Davis, Head of Mozilla’s Machine Learning Group followed giving an overview of the design and motivations behind Deep Speech and Common Voice, that could quickly be adapted to Kinyarwanda.During the two-day event, the selected teams refined their initial ideas and took them to the street, fine-tuning them through interviews with potential contributors and partners. By visiting universities, language institutions, and even the city’s public transit providers (really!) they put their solutions to the test.Winner of the hackathon was an idea uniquely Rwandese: With Umuganda 2.0 the team updated the concept of “Umuganda”, a regular national community work day taking place every last Saturday of the month, to the digital age. Building on the Common Voice website, the participants would collect voice data during monthly Umuganda sessions at universities, tech hubs or community spaces. The idea also taps into the language pride of Rwandans. User research led by GIZ with students, help workers and young Rwandan working on language or technology has shown that speaking and preserving Kinyarwanda in a digital context is seen as very important and a great motivation to contribute to the collection of voice data.Fine-tuning concepts (credit: Daniel Brumund, GIZ)For jury members Olaf Seidel, Head of the GIZ project “Digital Solutions for Sustainable Development” in Rwanda, George Roter, Director Mozilla Open Innovation Programs, Kelly Davis, and Gilles Richard Mulihano, Chief Innovation Officer at the local software developer ComzAfrica, the idea also resonated because of its easy scalability throughout Rwanda. Moreover, it could be adapted to other projects and regions relying on collective efforts to build common infrastructures of the digital world — something GIZ is keenly interested in. Umuganda 2.0 shows that we need culturally appropriate solutions to lower barriers to make front-runner innovations accessible to more entrepreneurs.Next stepsGIZ and the winning team are now working towards a first real-life test at a local university during next month’s Umuganda on March 30. It is the aim of this session to test if the spirit of Umuganda and the collection of voice data really go well together, what motivates people to take part and how we can make voice data collection during the community event fun and interesting. And last but not least, how many hours of voice data can be collected during such an event to determine if the outcome justifies the means.Hackathon participants together with mentors from GIZ and Mozilla (credit: Daniel Brumund, GIZ)GIZ, with its deep connections to local communities in numerous countries, was a perfect partner for Mozilla in this endeavor, and we hope to — in fact look forward to — repeat this success elsewhere. In a long-term vision, Mozilla and GIZ aim to continue this promising cooperation building on our shared visions and objectives for a positive digital future. Allowing access to a wide range of services no matter which language you speak, is no doubt a powerful first step.Alex Klepel, Kelly Davis (Mozilla) and Lea Gimpel (GIZ)Sustainable tech development needs local solutions: Voice tech ideation in Kigali was originally published in Mozilla Open Innovation on Medium, where people are continuing the conversation by highlighting and responding to this story. [Less]
Posted about 5 years ago by Nicholas D. Matsakis
Now that the Rust 2018 edition has shipped, the language design team has been thinking a lot about what to do in 2019 and over the next few years. I think we’ve got a lot of exciting stuff on the horizon, and I wanted to write about it. Theme for ... [More] this edition In 2015, our overall theme was stability. For the 2018 Edition, we adopted productivity. For Rust 20211, we are thinking of maturity as the theme. Our goal is finish up a number of in-flight features – such as specialization, generic associated types, and const generics – that have emerged as key enablers for future work. In tandem, we aim to start improving our reference material, both through continuing the great work that’s been done on the Rust reference but also through more specialized efforts like the Grammar and Unsafe Code Guidelines working groups. Working groups Actually, the thing I’m most excited about has nothing to do with the language at all, but rather a change to how we operate. We are planning to start focusing our operations on a series of lang team working groups. Each working group is focusing on a specific goal. This can be as narrow as a single RFC, or it might be a family of related RFCs (“async code”, “FFI”). The plan is to repurpose our weekly meeting. Each week we will do some amount of triage, but also check in with one working group. In the days leading up to the meeting, the WG will post a written report describing the agenda: this report should review what happened since the last chat, discuss thorny questions, help assess priorities, and plan the upcoming roadmap. These meetings will be recorded and open to anyone who wants to attend. Our hope in particular is that active working group participants will join the meeting. Finally, as part of this move, we are creating a lang team repository which will serve as the “home” for the lang team. It’ll describe our process, list the active working groups, and also show the ideas that are on the “shortlist” – basically, things we expect to start doing once we wrap some of our ongoing work. The repository will also have advice for how to get involved. Initial set of active working groups We’ve also outlined what we expect to be our initial set of active working groups. This isn’t a final list: we might add a thing or two, or take something away. The list more or less maps to the “high priority” endeavors that are already in progress. For each working group, we also have a rough idea for who the “leads” will be. The leads of a working group are those helping to keep it organized and functonal. Note that some leads are not members of the lang team. In fact, helping to co-lead a working group is a great way to get involved with language design, and also a good stepping stone to full team membership if desired. Traits working group: Focused on working out remaining design details of specialization, GATs, impl Trait, and other trait-focused features. Working closely with the compiler traits working group on implementation. Likely leads: aturon, nmatsakis, centril Grammar working group: Focused on developing a canonical grammar, following roughly the process laid out in RFC 1331. Likely leads: qmx, centril, eddyb Async: Foundations Focused on core language features like async-await or the Futures trait that enable async I/O. Distinct from the “Async: Ecosystem” domain working group, which will focus on bolstering the ecosystem for async code through new crates and documentation. Likely leads: cramertj, boats Unsafe code guidelines Focused on developing rules for unsafe code: what is allowed, what is not. Likely leads: avacadavara, nikomatsakis, pnkfelix Foreign function interface Focused on ensuring that Rust and C programs can seamlessly and ergonomically interact. The goal is to permit Rust code to call or be called by any C function and handle any C data structure, as well as all common systems code scenarios and supporting inline assembly. Likely leads: joshtriplett Bootstrapping the working groups Over the next few weeks, we expect to be “bootstrapping” these working groups. (In some cases, like grammar and the unsafe code guidelines, these groups are already quite active, but in others they are not or have not been formally organized.) For each group, we’ll be putting out a call to get involved, and trying to draw up an initial roadmap laying out where we are now and what the next few steps we’ll be. If something on that list looks like something you’d like to help with, stay tuned! Looking to 2019 and beyond The set of roadmaps listed there aren’t meant to be an exhaustive list of the things we plan to do. Rather, they are meant to be a starting point: these are largely the activites we are currently doing, and we plan to focus on those and see them to completion (though the FFI working group is something of a new focus). The idea is that, as those working groups wind down and bandwidth becomes available, we will turn out focus to new things. To that end, we aim to draw up a shortlist and post it on the website, so that you have some idea the range of things we are considering for the future. Note that the mere presence of an idea on the shortlist is not a guarantee that it will come to pass: it may be that in working through the proposed idea, we decide we don’t want it, and so forth. Conclusion 2019 is going to be a big year for the lang team – not only because of the work we plan to do, but because of the way we plan to do it. I’m really looking forward to it, and I hope to see you all soon at a WG meeting! Assuming we do a Rust 2021 edition, which I expect we will. ↩ [Less]