Ballista
Date: 2015-09-25 Updated: 2019-11-08
Ballista was a project to explore inter-website and web/native communication; specifically, communication between one website and another site or native app of the user's choosing. We explored ways for the user to be able to share or edit documents in another website or app that the first website has never even heard of, choose documents from another website, or register a website as a native file handler. We were attempting to solve similar problems to the intents system on Android, but also address other use cases like document editing. Essentially, we set out to create an interoperability system for the web.
Our explainer document dives deeper into the problem space and outlines our early draft of an API that we thought solved this problem. But this was less about proposing an API, and more about starting a conversation.
Epilogue (2019): The Ballista project started in 2015 as an ambitious exploration of the above concepts. The project evolved into a number of more specialized and smaller proposals to achieve these goals, several of which are now generally available. These include Web Share, Web Share Target and File Handling.
Spin-off proposals
These standards-track proposals were created as a result of the explorations begun in the Ballista project:
Demo
We have a prototype that works in Chrome and Firefox. Try this:
- Go to handler-dot-chromium-ballista.appspot.com (Ballista Editor Demo), and click "OK" to register it as an action handler.
- Go to requester-dot-chromium-ballista.appspot.com (Ballista Cloud Demo), and open a file with "Ballista Editor Demo".
These two apps don't know about each other, yet the editor can edit files from the cloud app. Using our polyfill, you can write a web app that interoperates with our demo apps in the same way.
You can view and manage app registrations at chromium-ballista.appspot.com. In the final product, the registration, picking and management UI would be part of the browser.
Resources
- For a detailed overview, see Ballista Explained.
- In the
polyfill
directory, there is a polyfill that you can use to write a requester that can fire actions at any handler, or a handler that can receive actions from any requester. - The
handler
andrequester
directories contain the source code for the demo apps described above.
See the README.md
file in each directory for details. Many caveats apply.
Who is behind Ballista?
The Google Chrome team, including:
- Matt Giuca <[email protected]>
- Sam McNally <[email protected]>
- Ben Wells <[email protected]>
This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.
Copyright 2016 Google Inc. All Rights Reserved.
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
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.