diff --git a/.eslintignore b/.eslintignore
index 0d60b8df106..0022114ea33 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -8,6 +8,7 @@ gulpfile.js
/tests/compile/*
/tests/jsunit/*
/tests/generators/*
+/tests/mocha/run_mocha_tests_in_browser.js
/tests/test_runner.js
/tests/workspace_svg/*
/generators/*
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index f0bd0b7625e..00000000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-### Problem statement
-
-
-
-### Expected Behavior
-
-
-
-### Actual Behavior
-
-
-
-### Steps to Reproduce
-
-
-
-1. Start by..
-2. Next, do..
-
-### Stack Traces
-
-
-
-```
-Replace with error stack trace.
-```
-
-### Operating System and Browser
-
-
-
-
-
-
-
-
-
-
-
-
-
-### Additional Information
-
-
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 00000000000..9119a01724a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,64 @@
+
+---
+name: Bug report
+about: Create a report to help us improve
+labels: 'type: bug, triage'
+assignees: ''
+
+---
+
+**Describe the bug**
+
+
+
+**To Reproduce**
+
+
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+
+
+
+**Screenshots**
+
+
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Stack Traces**
+
+
+
+```
+Replace with error stack trace.
+```
+
+**Additional context**
+
+
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 00000000000..5b85b635c6e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,23 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+labels: 'type: feature request, triage'
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+
+
+
+**Describe the solution you'd like**
+
+
+
+**Describe alternatives you've considered**
+
+
+
+**Additional context**
+
+
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index c828f584208..211fff419a3 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -48,6 +48,12 @@ Tested on:
* Version [e.g. 22]
-->
+### Documentation
+
+
+
### Additional Information
diff --git a/.travis.yml b/.travis.yml
index d65b14554c1..bc0bb84157b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,6 +5,7 @@ node_js:
- 8
- 10
addons:
+ firefox: latest
apt:
packages:
- google-chrome-stable
diff --git a/README.md b/README.md
index 457fb810f72..a7d11b41cc1 100644
--- a/README.md
+++ b/README.md
@@ -8,10 +8,46 @@ blocks together to build programs. All code is free and open source.
![](https://developers.google.com/blockly/images/sample.png)
-Blockly has an active [developer forum](https://groups.google.com/forum/#!forum/blockly). Please drop by and say hello. Show us your prototypes early; collectively we have a lot of experience and can offer hints which will save you time.
+Blockly has an active [developer forum](https://groups.google.com/forum/#!forum/blockly). Please drop by and say hello. Show us your prototypes early; collectively we have a lot of experience and can offer hints which will save you time. We actively monitor the forums and typically respond to questions within 2 working days.
Help us focus our development efforts by telling us [what you are doing with
Blockly](https://developers.google.com/blockly/registration). The questionnaire only takes
a few minutes and will help us better support the Blockly community.
+Cross-browser Testing Platform and Open Source <3 Provided by [Sauce Labs](https://saucelabs.com)
+
Want to contribute? Great! First, read [our guidelines for contributors](https://developers.google.com/blockly/guides/modify/contributing).
+
+## Releases
+
+We release by pushing the latest code to the master branch, followed by updating our [docs](developers.google.com/blockly) and [demo pages](https://blockly-demo.appspot.com). We typically release a new version of Blockly once a quarter (every 3 months). If there are breaking bugs, such as a crash when performing a standard action or a rendering issue that makes Blockly unusable, we will cherry-pick fixes to master between releases to fix them. The [releases page](https://github.com/google/blockly/releases) has a list of all releases.
+
+Releases are tagged by the release date (YYYYMMDD) with a leading '1.' and a trailing '.0' in case we ever need a major or minor version (such as [1.20190419.0](https://github.com/google/blockly/tree/1.20190419.0)). If you're using npm, a specific release can be installed by using its tag: `npm install git://github.com/google/blockly.git#1.20181219.0`
+
+### New APIs
+
+Once a new API is merged into master it is considered beta until the following release. We generally try to avoid changing an API after it has been merged to master, but sometimes we need to make changes after seeing how an API is used. If an API has been around for at least two releases we'll do our best to avoid breaking it.
+
+Unreleased APIs may change radically. Anything that is in `develop` but not `master` is subject to change without warning.
+
+### Branches
+
+There are two main branches for Blockly.
+
+**[master](https://github.com/google/blockly)** - This is the (mostly) stable current release of Blockly.
+
+**[develop](https://github.com/google/blockly/tree/develop)** - This is where most of our work happens. Pull requests should always be made against develop. This branch will generally be usable, but may be less stable than the master branch. Once something is in develop we expect it to merge to master in the next release.
+
+**other branches:** - Larger changes may have their own branches until they are good enough for people to try out. These will be developed separately until we think they are almost ready for release. These branches typically get merged into develop immediately after a release to allow extra time for testing.
+
+## Issues and Milestones
+
+We typically triage all bugs within 2 working days, which includes adding any appropriate labels and assigning it to a milestone. Please keep in mind, we are a small team so even feature reqeusts that everyone agrees on may not be prioritized.
+
+### Milestones
+
+**Upcoming release** - The upcoming release milestone is for all bugs we plan on fixing before the next release. This typically has the form of `year_quarter_release` (such as `2019_q2_release`). Some bugs will be added to this release when they are triaged, others may be added closer to a release.
+
+**Bug Bash Backlog** - These are bugs that we're still prioritizing. They haven't been added to a specific release yet, but we'll consider them for each release depending on relative priority and available time.
+
+**Icebox** - These are bugs that we do not intend to spend time on. They are either too much work or minor enough that we don't expect them to ever take priority. We are still happy to accept pull requests for these bugs.
diff --git a/accessible/README.md b/accessible/README.md
deleted file mode 100644
index a69fa6667cf..00000000000
--- a/accessible/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-Accessible Blockly
-==================
-
-Google's Blockly is a web-based, visual programming editor that is accessible
-to blind users.
-
-The code in this directory renders a version of the Blockly toolbox and
-workspace that is fully keyboard-navigable, and compatible with most screen
-readers. It is optimized for NVDA on Firefox.
-
-In the future, Accessible Blockly may be modified to suit accessibility needs
-other than visual impairments. Note that deaf users are expected to continue
-using Blockly over Accessible Blockly.
-
-
-Using Accessible Blockly in Your Web App
-----------------------------------------
-The demo at blockly/demos/accessible covers the absolute minimum required to
-import Accessible Blockly into your web app. You will need to import the files
-in the same order as in the demo: utils.service.js will need to be the first
-Angular file imported.
-
-When the DOMContentLoaded event fires, call ng.platform.browser.bootstrap() on
-the main component to be loaded. This will usually be blocklyApp.AppComponent,
-but if you have another component that wraps it, use that one instead.
-
-
-Customizing the Sidebar and Audio
----------------------------------
-The Accessible Blockly workspace comes with a customizable sidebar.
-
-To customize the sidebar, you will need to declare an ACCESSIBLE_GLOBALS object
-in the global scope that looks like this:
-
- var ACCESSIBLE_GLOBALS = {
- mediaPathPrefix: null,
- customSidebarButtons: []
- };
-
-The value of mediaPathPrefix should be the location of the accessible/media
-folder.
-
-The value of 'customSidebarButtons' should be a list of objects, each
-representing buttons on the sidebar. Each of these objects should have the
-following keys:
- - 'text' (the text to display on the button)
- - 'action' (the function that gets run when the button is clicked)
- - 'id' (optional; the id of the button)
-
-
-Limitations
------------
-- We do not support having multiple Accessible Blockly apps in a single webpage.
-- Accessible Blockly does not support the use of shadow blocks.
diff --git a/accessible/app.component.js b/accessible/app.component.js
deleted file mode 100644
index c31fd4259bb..00000000000
--- a/accessible/app.component.js
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * AccessibleBlockly
- *
- * Copyright 2016 Google Inc.
- * https://developers.google.com/blockly/
- *
- * Licensed under the Apache License, Version 2.0 (the 'License');
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an 'AS IS' BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * @fileoverview Top-level component for the Accessible Blockly application.
- * @author madeeha@google.com (Madeeha Ghori)
- */
-
-goog.provide('blocklyApp.AppComponent');
-
-goog.require('Blockly');
-
-goog.require('blocklyApp.AudioService');
-goog.require('blocklyApp.BlockConnectionService');
-goog.require('blocklyApp.BlockOptionsModalComponent');
-goog.require('blocklyApp.BlockOptionsModalService');
-goog.require('blocklyApp.KeyboardInputService');
-goog.require('blocklyApp.NotificationsService');
-goog.require('blocklyApp.SidebarComponent');
-goog.require('blocklyApp.ToolboxModalComponent');
-goog.require('blocklyApp.ToolboxModalService');
-goog.require('blocklyApp.TranslatePipe');
-goog.require('blocklyApp.TreeService');
-goog.require('blocklyApp.UtilsService');
-goog.require('blocklyApp.VariableAddModalComponent');
-goog.require('blocklyApp.VariableModalService');
-goog.require('blocklyApp.VariableRenameModalComponent');
-goog.require('blocklyApp.VariableRemoveModalComponent');
-goog.require('blocklyApp.WorkspaceComponent');
-
-
-blocklyApp.workspace = new Blockly.Workspace();
-
-blocklyApp.AppComponent = ng.core.Component({
- selector: 'blockly-app',
- template: `
-