Blog oficial para desenvolvedores que falam português
Interoperabilidade dos navegadores em gráfico
9/18/18
No Google I/O deste ano, Ben Galbraith e Malte Ubl
apresentaram um gráfico
durante a palestra de abertura que mostrava como a Web está ficando mais interoperável:
Essa tendência é muito importante para a equipe do Chrome: os desenvolvedores Web devem ser capazes de criar para
a plataforma Web
e não para quatro plataformas diferentes (embora com alguma sobreposição). O gráfico foi criado com os dados do nosso
Web API Confluence Dashboard
. Esse projeto, originalmente desenvolvido para engenheiros de browser, oferece ideias e informações sobre a interoperabilidade na Web monitorando as APIs JavaScript visíveis na página em diversas versões dos quatro maiores mecanismos de navegação. Veja este exemplo:
Legenda: O número de APIs específicas de navegador sobe quando os navegadores são os primeiros a lançar uma nova API e cai quando (i) um segundo navegador implementa uma nova API, ou (ii) uma API que não conseguiu alcançar um consenso é removida pelo navegador que a implementou.
Esse gráfico mostra o número de APIs lançadas por apenas um dos quatro navegadores ao longo do tempo. Interagindo com o gráfico no painel, você consegue abrir a lista de APIs correspondente a cada contagem:
Essas informações ajudam os navegadores a priorizar as tarefas que aumentarão a interoperabilidade da Web, seja removendo APIs antigas específicas de navegador ou trabalhando com outros fornecedores para implementar APIs que ainda não contam com um suporte amplo.
Como as APIs são coletadas
Para contar APIs na Web, primeiro tivemos que definir o que é considerado uma "API da Web". A Web é repleta de recursos úteis, e alguns deles são difíceis de definir e ainda mais difíceis de detectar. Para essa análise, examinamos as APIs JavaScript que ficam visíveis para o desenvolvedor quando a página carrega pela primeira vez. Isso exclui diversas classes de recursos, como propriedades CSS, atributos HTML e APIs indisponíveis no carregamento da página (por exemplo, APIs exibidas só com interação do usuário com a API ou disponíveis apenas em alguns tipos de worker). Mesmo assim, conseguimos ter uma visão geral dos recursos programáveis dos navegadores.
Nosso
algoritmo de detecção de API JavaScript
inspeciona o gráfico do objeto JavaScript exposto no objeto
window
global. Confira o link para ver detalhes sobre como conseguimos extrair APIs dos protótipos JavaScript. Com a ajuda das mais de 1.000 configurações de navegador/sistema operacional do
BrowserStack
, conseguimos coletar dados de API para versões de navegador datadas até 2012
.
Como determinar se a Web está saudável
Examine a
página de métricas
do painel. Você verá alguns gráficos que geramos sobre o cenário da Web. Essas métricas, e as APIs que elas representam, oferecem aos implementadores da plataforma Web informações sobre que APIs estão fragmentando a Web. As APIs que fragmentam a Web são:
Lançadas por
praticamente
todos os navegadores, mas não todos;
Removidas por um navegador, mas não pelos outros; ou
Lançadas por um navegador, mas não pelos outros.
Por exemplo, nossos dados mostram que o Safari é o único grande navegador que não oferece
CSSStyleDeclaration#backfaceVisibility
, o Chrome removeu várias APIs
SVGSVGElement
que ainda são oferecidas por todos os grandes navegadores e o Edge é o único que oferece várias APIs
BhxBrowser
.
Como consultar os dados brutos por conta própria
O objetivo do painel não é substituir ferramentas como o
MDN Docs
ou o
caniuse.com
, mas sim mostrar as tendências que ajudam os navegadores a continuar a promover a interoperabilidade da Web. Sabendo disso, a
página de catálogo
do painel pode dar aos desenvolvedores outro mecanismo para confirmar informações de interoperabilidade de fontes administradas manualmente. Teste a caixa de pesquisa acima do catálogo de APIs. Ela permite
consultas básicas estruturadas
, como
in:firefox60 ou notin:chrome66
para ver as APIs do Firefox 60 ou as que não estão no Chrome 66, ou
RTCPeerConnection count:2
para ver as APIs relacionadas ao RTCPeerConnection oferecidas por exatamente dois dos navegadores que estão sendo visualizados no momento. Clicando no ícone de elipse vertical, você consegue adicionar ou remover dezenas de versões de navegador da tabela. A barra de URL sempre tem um link que retorna você à consulta atual.
Validação de tabelas de compatibilidade de navegador da MDN
Já começamos a usar os dados para ajudar escritores técnicos a
checar programaticamente suas contribuições
no excelente banco de dados de compatibilidade entre navegadores da MDN. Experimente:
# Clone o banco de dados de compatibilidade entre navegadores da MDN
git clone https://github.com/mdn/browser-compat-data.git
cd browser-compat-data
# Instale as dependências
npm install
# Carregue os dados de confluência no ServiceWorker
npm run confluence -- --interfaces=ServiceWorker
# Veja as diferenças aplicadas à sua árvore de trabalho
git diff
# Leia a lista completa de parâmetros que você pode usar em "npm run confluence"
npm run confluence -- --help
Conclusão
Esperamos que os engenheiros de navegador e os desenvolvedores Web consigam se beneficiar com o painel. Experimente e envie sua opinião no
projeto do GitHub
que hospeda o código.
Postado por Mark Dittmer, engenheiro de software que trabalha na infraestrutura do ecossistema da Web
Labels
+page
1
20th Century Fox
1
A/B
1
Action
1
Action Console
1
Actions
3
Actions Console
1
Actions on Google
1
ActiveQA
1
Adaptive Battery
1
AddThis
1
ADK
1
ADL
1
Admin do Firebase
1
AdMob
6
Ads
2
AdWords
1
AdX
1
AI
4
algoritmo
1
AMP
6
AMP Linker
1
AMP Project
1
Analytics API
1
Android
58
Android 8.0 Oreo
1
Android 8.1
1
Android ADK
2
Android API
2
Android App Bundle
1
Android Dev Summit
1
Android Developers
23
Android Marshmallow
1
Android N
3
Android Nougat
2
Android P
3
Android P Beta 2
1
Android Preview
1
Android SDK
1
android studio
8
Android Studio 3.2
1
android wear
2
AndroidDev
6
AndroidX
1
Announcement
2
AoG
1
AoGDevs
1
api
15
API 25
1
API 28
1
APIs
4
Aplicativos
4
app
1
App Engine
1
Apple
1
apply
1
Apps
9
AR
1
ARCore
3
artificial intelligence
1
AsyncTask
1
AUC
1
AutoAugment
1
Avro
1
Awareness API
1
Biblioteca do Google
1
Big Data
1
BigQuery
1
BiometricPrompt
1
bitcode
1
Borg
1
Bot
1
bytecode Dalvik
1
C++
1
câmera
1
CameraDevice
1
Canal Beta
1
canary
1
câncer de próstata
1
Capital One
1
Cast
1
CFI
1
Chrome
8
Chrome 68
1
Chrome Dev Summit
1
Chrome DevTools
1
Chrome OS
2
Chromecast
1
Chromium
2
CI
1
CLI
1
Cloud
6
Cloud Computing
1
Cloud Console
1
Cloud Dataflow
1
Cloud Developers
2
Cloud DLP
1
Cloud Firestore
1
Cloud Messaging
1
Cloud ML Engine
1
Cloud Scheduler
1
Cloud Shell
1
Cloud Source Repositories
1
Cloud Spanner
2
CodeSchool
1
código aberto
2
Compute Engine
1
ConfigMap
1
Container Builder
1
CPU
2
Crash Reporting
2
Crashlytics
3
credential api
1
criptografia
1
CSS
3
CSS Grid Layout
1
CSV
1
CTA
1
Curitiba
1
Dart API
1
Data Validation
1
DBAs
1
DCGAN
1
Desenvolvedores Google
11
Desenvolvimento
3
DevBusBrasil
1
DevBytes
2
Developer Bus
1
Developer Preview
1
developer quiz
1
DevFest
3
DevFest16
1
DevFest18
1
DevFestW
1
DFP
2
Dialogflow
1
DLP
1
DLS
1
documentação
1
Dragon Ball Legends
1
E2E
1
eclipse
1
end-to-end-encryption
1
Estimator
1
Estimators API
1
estudantes
1
Eventos
15
Famílias multilíngue
1
FCM
2
Featured
1
Firebase
24
Firebase Analytics
6
Firebase App Indexing
2
Firebase Cloud Messaging
5
Firebase Crashlytics
2
Firebase Dynamic Links
3
Firebase In-App Messaging
1
Firebase Invites
2
Firebase Lab
1
Firebase Links Dinamicos
1
Firebase Notifications
3
Firebase Remote Config
1
Flutter
3
FRR
1
G+
1
game
1
game dev
3
Games
2
games services
1
GCloud
3
GCM
1
GCP
7
GDD
7
GDE
1
GDEs
1
GDG
12
GDG Curitiba
1
GDG Floripa
1
GDG OpenSampa
1
GDG Porto Alegre
1
GDG Recife
1
GDG SP
3
GDGs
1
GDL
1
Git
1
GitHub
1
GNMT
1
Google
3
Google Ad Manager
1
Google AI
1
Google Analytics
1
Google Assistant
1
Google Assistente
3
Google Brain
2
Google Cast SDK
1
google clou
1
Google Cloud
17
Google Cloud Certified
1
Google Cloud Healthcare API
1
Google Cloud Platform
3
google code-in
1
Google Developer Advocate
1
Google Developer Expert
1
Google Developers
11
Google Fotos
1
Google I/O
6
Google Play
16
Google Play Games services
1
Google Play Protect
1
Google Play Services
4
Google Slides
1
Google Speech
1
google summer of code
1
Google+
2
Google+ sign-in
1
Googlers
1
GPU
2
GSuites
1
GUI
1
Hackathon
1
Hangouts
1
Hangouts Chat
1
HDR
1
High Quality Apps
2
HTML5
6
HTTP
3
HTTPS
2
HttpURLConnection
2
I/O
1
IA
2
Illusive Images
1
ImageReader
1
In-App Messaging
1
Inglês
1
Instant Apps
1
inteligencia artificial
1
IntelliJ REPL
1
IntentService
1
Interoperabilidade
1
IO Extended
1
IO13
1
iOS
9
IU
2
Java
1
Java 8
1
javascript
2
JPEG
1
JSON
2
Kaggle
1
kernel
1
Keyboard Map API
1
Knowledge Connectors
1
Kotlin
6
Kotlin da Udacity
1
Kubernetes
5
LangID
1
Launchpad
1
launchpad accelerator
2
Learning Augmentation
1
LEGO
1
Listas
1
ListFragment
1
LLVM
1
LTO
1
Machine Learning
2
Meetup
2
mensagens
1
Mentoria
1
Messaging
2
microsserviços
1
ML
2
ML Kit
1
Mobile
3
Mobile Ads SDK
1
Monetização
3
Monetize
3
MySQL
1
Native
1
Navigation Architecture Component
1
NES
1
Neto Marin
2
Next Level Apps
2
Next Level Tips
2
NNLM
1
Node.js
2
Notificações
1
novembro azul
1
Number Genie
1
Nuvem Profissional
1
OAuth
2
OAuth2
1
Open Images Extended
1
open source
3
Options Menu
1
Options Menu virtual
1
Orkut
2
Payment Request
1
pesquisa
1
PHA
1
Phone Gateway
1
PII
1
pixel
1
Play Academy
1
Play Console
1
Play Services
1
Playtime 2018
1
plug-in AMP
1
Porto Alegre
1
Preact
1
PRIV
1
program
1
progressive web apps
2
Push Notification
2
Python
1
QA
1
RA
2
Raspberry Pi
1
RBDMS
1
React
1
recording apis
1
remarketing
1
Remote Config
2
research
4
ResultReceiver
1
reward
1
RNN
2
Robolectric 4.0
1
RV
1
Sceneform
1
SDK
4
SDK Manager
3
Security
2
Server
1
service worker
1
sign-in
1
Sliding Tabs
1
Smartronix
1
social
6
Spark
1
SRE
1
Stack
1
Stack Overflow
1
Startups
2
Storage
2
story
1
Support Library
1
SurfaceView
1
Svelte
1
switch
1
Tag Manager
1
Tag Manager 360
1
tensorflow
5
TensorFlow Hub
2
TensorFlow Lite
1
TensorFlow Transform
1
Test Lab
2
Testes
1
TF Hub
2
tf.keras
1
TFDV
1
TFX
1
TI essencial
1
toolkit
1
tradução
1
TTS
1
Udacity
1
Universal Apps
1
Universal Sentence Encoder
1
user experience
1
ux
1
VectorDrawable
1
Velostrata
1
Volley
1
vr
2
vulnerabilidades
1
vulnerabilidades do Google
1
vulnerability
1
web
2
web dev
2
WebKit
1
webservice
3
when
1
WordPress
1
WorkerDOM
1
YouTube
4
YouTube API
1
YUV
1
Zomato
1
Archive
2022
Nov
Oct
Jul
Jun
May
Apr
Mar
Feb
Jan
2021
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2020
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2019
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
2017
Aug
Jul
Jun
May
Apr
Mar
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jul
May
Mar
2014
Jul
Jun
Apr
Mar
Feb
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Mar
Feb
Jan
2012
Nov
Jul
Jun
May
Apr
Mar
2011
Nov
Sep
Aug
Jul
Jun
Feed
Follow @googledevbr