Lo Stato di Babel
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Issue precedenti: Babel Roadmap #4130, 6.0 #2168
Se non altro, date un'occhiata alla sezione sulla Comunità.
Pubblicato anche come parte del Calendario dell'Avvento Web 2016 di Mariko Kosaka!
Un po' di storia
Sebastian creò "6to5" nel settembre 2014. Curiosamente, lo fece per soddisfare una sua esigenza di comprendere i linguaggi di programmazione e il loro funzionamento. Potreste aver pensato che chi creò il progetto sapesse già come funzionano i compilatori e conoscesse perfettamente JavaScript... ma vi sbagliereste! Leggete il suo post per un resoconto affascinante della sua storia: ~2015 in Review.
6to5 faceva esattamente questo: trasformare facilmente codice ES6 in ES5. Quando 6to5 divenne Babel, come menzionato in Not Born to Die, si trasformò in una piattaforma: una suite di strumenti progettati per creare la prossima generazione di tooling JavaScript. Non si limitava più a compilare ES6 in ES5, ma permetteva agli sviluppatori di costruire strumenti sopra di esso.
Ecco alcune delle nostre pietre miliari:
-
In 5.0.0, Babel si allineò maggiormente al processo TC39 introducendo gli
stages, aggiungendo l'opzione di configurazione.babelrce creando un sistema di plugin per trasformazioni personalizzate. -
In 6.0.0, Babel divenne modulare (un'idea piuttosto controversa all'epoca). Fu un cambiamento radicale che portò a funzionalità opt-in (nessun default) e ai concetti di
Presetse Opzioni dei Plugin.- Come menzionato nel suo articolo, Sebastian entrò in Facebook nel luglio 2015 e lavorò all'intero sviluppo di Babel 6 durante l'orario lavorativo.
-
In 6.3.13 Sebastian estrasse i nostri strumenti di build/pubblicazione monorepo in quello che oggi è Lerna. (Il lato divertente è che James lo riscrisse 3 volte e io dovetti revisionare tutto)
- Dopo questo periodo, sia Sebastian che James entrarono in burnout su Babel, e alcuni contributor presero il loro posto.
- Abbiamo faticato a trovare una direzione e gestire bug/richieste, ma abbiamo portato a termine moltissimo lavoro!
-
6.13.0 ha finalmente introdotto le Preset Options.
-
6.14.0 ha aggiunto un latest-preset che si mantiene aggiornato con la specifica JavaScript annuale.
-
6.16.0 ha permesso di sostituire il parser o il code-generator.
-
Ad agosto, abbiamo rilasciato Babili, un minificatore basato su Babel.
-
A settembre, abbiamo rilasciato la prima versione di babel-preset-env (continua a leggere per i dettagli).
-
Dopo un anno su Phabricator, siamo tornati su GitHub issues grazie esclusivamente a @danez e al suo straordinario (e sottovalutato) lavoro.
Se utilizzi Babel, faccelo sapere con una PR nella nostra pagina degli utenti!
Ora babel-core viene scaricato oltre 5 milioni di volte al mese e quasi 60 milioni di volte in totale, ed è utilizzato in grandi aziende come Facebook/Netflix/Airbnb e altri progetti open source come React/Yarn.
Grazie a tutti per il continuo supporto! Vogliamo continuare a essere il fondamento della toolchain JavaScript: compilazione, linting, minificazione, codemod, code coverage, ecc.
Stato Attuale
Se sei interessato a contribuire, consulta le issue linkate qui sotto!
Manutenzione dei plugin Babel per ogni proposta in TC39 a partire dallo Stage 0
TC39 rappresenta Ecma International, Technical Committee 39: il comitato che sviluppa JavaScript.
@b0rk Short answers:
— Yehuda Katz (@wycats) November 30, 2016
Who's there? Engine implementers, developers, a handful of academics and theorists, and @BrendanEich.
Babel utilizza il concetto di stage di TC39 per categorizzare i suoi plugin sperimentali. Gli utenti dovrebbero poter utilizzare facilmente le funzionalità prima che siano pienamente implementate nei browser nello stage 4 del processo TC39.
Babel è fondamentale in questo processo grazie alla sua posizione nell'ecosistema: è significativamente più semplice per uno sviluppatore aggiornare un file .babelrc che modificare un flag del browser, e molto più rapido scrivere un plugin Babel che implementare nativamente la funzionalità nel browser. Questo è il cuore di Babel.
Ma il processo delle proposte comporta iterazioni significative: le proposte possono cambiare sintassi o essere abbandonate. Poiché TC39 si riunisce ogni 2 mesi, i plugin dovrebbero essere aggiornati almeno ad ogni cambiamento di stage per mantenere gli utenti sincronizzati.
Il feedback precoce al champion della proposta e al comitato è estremamente prezioso, sebbene si raccomandi cautela nell'uso delle funzionalità di Stage 0/1/2. Sebbene aziende come Facebook sfruttino queste funzionalità, hanno creato codemod per facilitarne la modifica.
Non ci sono abbastanza tempo e risorse per mantenere ogni plugin, specialmente quando ci sono aggiornamenti alle specifiche.
-
Alcune trasformazioni sono semplicemente obsolete, come i decoratori. Logan ha dovuto adattare la precedente specifica con babel-plugin-transform-decorators-legacy per Babel 6 e non abbiamo avuto risorse per riscriverla per la specifica aggiornata.
-
babel/babel#3473 - Async iteration proposal non è stato unito per così tanto tempo perché non abbiamo avuto tempo di revisionarlo. Quando è stato unito, era già passato dallo stage 2 allo stage 3.
Prossimamente lavoreremo con:
-
Mathias Bynens su Unicode Property Escapes in Regular Expressions (Stage 2) tramite babel/babel#3683
Problemi rilevanti:
-
Dovremmo creare un codemod per le proposte Stage X contemporaneamente alla trasformazione effettiva?
Consulta thefeedbackloop.xyz per maggiori informazioni su TC39!
Manutenzione di altri plugin dell'ecosistema: JSX/Flow
Babel è vitale per gli ecosistemi React e Flow, e collaboriamo strettamente con i team pertinenti di Facebook.
-
- Questi coprono la principale trasformazione
JSX, i plugin di sviluppo e le ottimizzazioni.
- Questi coprono la principale trasformazione
Etichette dei problemi rilevanti:
babel-preset-env ("autoprefixer" per Babel)
La compilazione JavaScript è un bersaglio mobile: ci sono aggiornamenti annuali alle specifiche, i browser si aggiornano costantemente e gli utenti potrebbero abbandonare il supporto per browser precedenti. A prima vista, non sembra esserci un target fisso per la compilazione del nostro JavaScript.

La compat-table è costantemente aggiornata e viene utilizzata per questo preset.
È qui che entra in gioco babel-preset-env: un preset di Babel che determina automaticamente i plugin corretti da utilizzare in base agli ambienti specificati.
Il suo obiettivo è sia la semplicità d'uso che l'efficienza dell'output: devi solo preoccuparti dei tuoi ambienti target per sfruttare il codice nativo. Il preset decide per te i plugin necessari.
Alcuni esempi di configurazione
Target Chrome 55 + ultime 2 versioni di altri browser tramite browserslist
{
"presets": [
["env", {
"targets": {
"chrome": 55,
"browsers": ["last 2 versions"]
}
}]
]
}
Targeting della versione corrente di Node.js (usa process.versions.node)
{
"presets": [
["env", {
"targets": {
"node": "current"
}
}]
]
}
Chrome 55 useBuiltIns + webpack 2
{
"presets": [
["env", {
"targets": {
"chrome": 55
},
"modules": false,
"useBuiltIns": true
}]
]
}
In
import "babel-polyfill";
Out (dipende dall'ambiente)
import "core-js/modules/es7.string.pad-start";
import "core-js/modules/es7.string.pad-end";
Problemi rilevanti:
-
Prossima grande funzionalità: applicare la stessa idea di preset-env anche ai polyfill babel/babel-preset-env#20 con relativa PR in babel/babel-preset-env#56.
Linting tramite babel-eslint
ESLint non supporta nuove funzionalità del linguaggio finché non raggiungono lo Stage 4 del processo di proposta. Per questo manteniamo babel-eslint (un parser ESLint personalizzato) che permette di effettuare linting su JavaScript con sintassi sperimentale.
Questo progetto è stato uno dei più complessi: essendo uno strato di compatibilità tra Babel e ESLint, richiede costanti aggiornamenti ad ogni modifica dei progetti sottostanti, con alto rischio di cambiamenti imprevisti dovuti al monkey-patching. È stato spiacevole riscontrare problemi come babel/babel-eslint#243 o babel/babel-eslint#267.
Per ridurre il carico di manutenzione, miriamo a migliorare l'interoperabilità di scope e traversal con ESLint. Sarebbe interessante poter scrivere regole ESLint usando le API di Babel o viceversa?
Problemi rilevanti:
-
babel/babel-eslint#88 rimane rilevante
Minificazione
Babili è il nostro nuovo minificatore basato su Babel, che permette di produrre codice minificato mirando ai browser più recenti.
In
class Mangler {
constructor(program) {
this.program = program;
}
}
new Mangler();
Out
// ES2015 code -> Babili -> Minified ES2015 Code
class a{constructor(b){this.program=b}}new a;
Maggiori informazioni nel blog post.
Essendo stato rilasciato di recente, cerchiamo nuovi contributori! Ci sono molti bug minori e miglioramenti possibili per chi cerca un progetto a cui contribuire.
Codemods / Refactoring / eslint --fix
Un codemod è una modifica assistita da strumenti: un find-and-replace avanzato.
Se volessi cambiare merge({}) in Object.assign({}) (e forse successivamente in object rest), potresti usare una sostituzione regex. Ma non vorresti sostituire altri elementi chiamati merge come import/export, stringhe, commenti o variabili locali. Per operare in sicurezza serve uno strumento più potente che modifichi solo il codice specifico.
Sebbene Babel trasformi già codice in altro codice, come compilatore non considera lo stile del codice sorgente. Dopo un codemod con opzioni predefinite di Babel, git diff risulta disordinato.
Ecco Recast: uno strumento che preserva la formattazione del codice non modificato e allo stesso tempo formatta in modo elegante i nuovi nodi AST.

Nello screenshot sopra, il riquadro in alto a sinistra è il codice di input e quello in basso a destra è il codice di output dopo l'esecuzione del plugin di Babel. In questo caso, preserva gli spazi bianchi del codice di input quando possibile.
Passando Recast nelle opzioni, Babel può alimentare il futuro delle trasformazioni di codice automatizzate.
.babelrc
{
"parserOpts": {
"parser": "recast"
},
"generatorOpts": {
"generator": "recast"
}
}
Esegui le trasformazioni di Babel pertinenti sul codice sorgente e sovrascrivilo:
babel src -d src
Questa funzionalità è stata appena resa possibile, quindi non vediamo l'ora di renderla più facile da usare e di vedere le trasformazioni che può abilitare. Consulta il post del blog 6.16.0 per maggiori informazioni!
Altri progetti correlati: JSCodeshift, js-codemod, Lebab.
Problemi rilevanti:
Copertura del codice / Strumentazione

Vogliamo supportare strumenti come nyc e babel-plugin-istanbul.
Ecosistema di plugin
Grazie alla nostra vivace community, nuovi plugin vengono creati costantemente: che si tratti di un nuovo modo per scrivere il tuo CSS in JSX o ricablare i test.
Attualmente esistono >1200 plugin Babel su npm.
Abbiamo avuto discussioni interessanti su come possiamo far crescere e supportare l'ecosistema di plugin. Potremmo provare a monitorare tutti i repository, ma è ovviamente troppo impegnativo.
Potrebbe essere interessante creare bot per automatizzare alcune attività: sviluppare plugin Babel specifici/regole ESLint per babel-plugin, scrivere codemod per aggiornare i cambiamenti delle API e integrare i plugin nei nostri test di verifica rapida.
@jaredforsyth @reactjs My five minute POC ☺️ https://t.co/v74UFHsSJG pic.twitter.com/B3YwVWkH5g
— Henry Zhu (@left_pad) December 6, 2016
-
Dovremmo creare una newsletter per i nuovi plugin utili?
-
Come possiamo insegnare alle persone cosa sono i plugin e come scriverli?
-
Come possiamo migliorare ASTExplorer?
Documentazione (questo sito!)
I contributi alla documentazione sono stati decisamente scarsi nell'ultimo anno.
Tuttavia, proprio di recente abbiamo fatto molte cose fantastiche:
-
@Daniel15 ha mantenuto babel-standalone che usiamo nella REPL con automazioni per le nuove release.
-
@maxiloc ha aggiunto la funzionalità di ricerca tramite Algolia con #977
Abbiamo anche aggiunto nuovi collaboratori:
-
@STRML: Ha aggiunto Discourse a tutte le pagine GitHub tramite #875
-
@xtuc: Ha aggiunto il supporto per la lettura del README dal repository di Babel evitando la sincronizzazione di due copie della documentazione tramite #990
-
@fredericmarx: Ha aggiunto un pulsante di copia negli appunti per gli snippet di codice tramite #998
-
@seedofjoy: Ha aggiunto la funzionalità di ridimensionamento per il REPL tramite #1003
Alcune idee
-
Tutti i plugin dovrebbero includere esempi. È possibile incorporare RunKit o il REPL.
-
Aggiornare le FAQ con gli errori comuni
-
Documentazione API / migliorare il babel-handbook
Problemi rilevanti:
Il futuro
NOTA: Tutto quanto segue può essere modificato o eliminato. Alcuni elementi potrebbero essere già in lavorazione, altri sono solo proposte che richiedono discussione e un promotore.
La priorità deve essere determinata dalle esigenze della community, non dalla desiderabilità marginale.
Modifiche all'API dei plugin
C'è molta confusione sull'interazione tra plugin/preset riguardo all'ordinamento. Ciò causa bug e problemi di configurazione che costringono gli utenti a posizionare i plugin prima/dopo altri in modo non intuitivo.
Stiamo discutendo modifiche all'API che potrebbero ridurre questa confusione. Tuttavia, trattandosi di un cambiamento fondamentale al core di Babel, potrebbe richiedere tempo per individuare l'approccio migliore.
Versioning
Dalla versione 6 di Babel utilizziamo un versioning "fisso" tramite Lerna. Questo ci consente di rilasciare contemporaneamente più pacchetti con la stessa versione (se il pacchetto cambia). È vantaggioso perché evita di impostare manualmente versioni separate per ogni pacchetto, mantenendo tutto sincronizzato. L'unico scenario problematico si verifica quando un pacchetto introduce breaking changes: in tal caso tutti i pacchetti incrementeranno la versione major.
Questo è spiegato più approfonditamente in babel/notes ma dobbiamo ancora definire il miglior piano d'azione per il progetto.
Cosa succede quando dobbiamo aggiornare una specifica da Stage 0 a Stage 1 e si tratta di una modifica breaking per il parser? Ci limitiamo ad aumentare la versione major, aspettiamo di raggruppare più modifiche o troviamo un modo per gestirlo tramite più versioni dei plugin?
Cambiare l'approccio ai preset Stage X
My rule of thumb on how I decide what future features to transpile:
— Kent C. Dodds (@kentcdodds) November 30, 2016
"Could I reasonably codemod this if it changes?"
Don't do it otherwise.
Problemi rilevanti:
Velocità
Le prestazioni sono una caratteristica fondamentale! A volte altri aspetti hanno priorità (bug fix, conformità alle specifiche, ecc.), ma rimangono comunque cruciali in diversi ambiti.
-
Come ridurre dimensioni/tempi d'installazione, specialmente per progetti multi-package? (yarn aiuta)
-
Come velocizzare il parsing?
-
Come creare plugin più veloci (e misurarne singolarmente le prestazioni)?
-
Come generare più rapidamente il codice trasformato?
-
Come generare codice che viene eseguito velocemente nel browser (https://fhinkel.github.io/six-speed/)?
Se riscontri problemi nell'output compilato, segnalali e chiedi aiuto per creare una PR!
Issue precedenti:
Possibile supporto per TypeScript?
Babel potrebbe imparare a comprendere la sintassi TypeScript (come già fa per Flow)? Potremmo aggiungere un plugin per rimuovere i tipi TypeScript e migliorare l'interoperabilità.
Ciò richiederebbe di analizzare la sintassi specifica di TypeScript e rimuoverla. Tuttavia TypeScript include elementi sintattici non tipizzati, quindi per costrutti come enum dovremo discutere ulteriormente.
Sfruttare le informazioni sui tipi?
Integrarsi con sistemi di tipi come Flow/TypeScript per ottimizzazioni. Significa che Babel potrebbe acquisire tramite questi strumenti la consapevolezza che un identificatore arr sia effettivamente un Array.
Esistono plugin che effettuano controllo dei tipi: babel-plugin-typecheck e babel-plugin-tcomb
Considerare un grafo delle dipendenze / operare su più file?
Potremmo così integrarci meglio con strumenti come Webpack. Abiliterebbe trasformazioni cross-file o ottimizzazioni dell'intera codebase, utili per:
-
Minificazione (rimuovere proprietà verificandone l'uso nell'intera applicazione)
-
Segnalare errori per import/export mancanti o non validi
Errori del parser
Messaggi d'errore più chiari, ispirati a Compiler Errors for Humans.
babel-eslint@7.1.1: now adds the code frame when there's a parser error! pic.twitter.com/yoxRpGXq5E
— Henry Zhu (@left_pad) November 17, 2016
È evidente che tutti desideriamo errori utili!
Possiamo migliorare l'inferenza/indovinare l'intenzione dell'utente per evitare errori vaghi. Fateci sapere in quali casi succede!
Problemi rilevanti:
-
#125 Messaggio migliore quando si usa
awaitin una funzione non asincrona -
#169 Messaggio migliore per un errore di sintassi quando un plugin non è abilitato
-
#212 Messaggio migliore per l'uso di super in un metodo non-oggetto
babel-init
Sostanzialmente un modo per configurare Babel più facilmente, come fa create-react-app.
- Configurare un
.babelrcda zero, con prompt di domande
Possibile idea:
-
Chiedere sugli ambienti target (browser, node) e passarli a
babel-preset-env -
Chiedere sulle funzionalità sperimentali (aggiungere plugin specifici)
-
Aggiornare il pacchetto npm
babelper fargli fare qualcosa di nuovo: renderlo ilbabelpredefinito/opt-in/opinionato che era Babel 5. Può usare di defaultenve supportarelatest 2 browsers(senza alcuna configurazione).
Problemi rilevanti:
Eseguire tc39/test262
test262 verifica la conformità allo standard ECMAScript futuro in bozza mantenuto continuamente su tc39.github.io/ecma262, insieme a qualsiasi proposta TC39 allo Stage 3 o successivo. È mantenuto da Tom Care (@tcare) con contributi significativi di molti nella community ECMAScript.
Eseguire i test ufficiali delle specifiche contro Babel può garantire la nostra conformità o almeno farci sapere quando non lo siamo. Dovremo capire come filtrare elementi non compilabili (proxy, TCO, ecc.) e impostare un modo semplice per verificare i test falliti e segnalare issue e PR.
Problemi rilevanti:
Test di Smoke/Integrazione
Sarebbe utile avere una sorta di Greenkeeper inverso o eseguire test con il branch master di Babel per individuare regressioni importanti prima di ogni rilascio (node ha il progetto citgm per questo). In teoria vorremmo prendere i più grandi progetti open source che usano Babel ed eseguire i loro test.
motiz88/babel-smoke-tests è un buon inizio! Sarebbe fantastico se esistesse già qualcosa di simile!
Analisi del Programma
C'è stato un ottimo talk di Alan Shreve chiamato "Idealized Commit Logs: Code Simplification via Program Slicing" che ha ispirato @kentcdodds a provarlo in JavaScript via slice-js.
L'idea generale è che abbiamo molti strumenti per aiutarci a scrivere codice, ma pochi per aiutarci a comprendere/leggere il codice. Puoi pensare allo slicing del codice come a una forma mirata di eliminazione del codice morto.

Un program slice elimina dal codice sorgente tutto ciò che non viene utilizzato per un caso di test eseguito. Se ci sono molte istruzioni if e loop non eseguiti durante il tuo caso d'uso, non appariranno nel program slice.
- Strumento di ricerca semantico (consapevole dell'AST)?
Simile a graspjs, sarebbe interessante poter eseguire un trova-sostituisci usando un AST come input. Ci permetterebbe di creare altri strumenti di analisi: trovare tutte le IIFE nel codice, contare quante volte viene chiamato un metodo o persino quanti Class ci sono nella codebase.
babel --settings
Questo comando stampa tutte le informazioni (anche in caso di errore). Include anche metriche sulle prestazioni relative alla durata di ogni plugin.
Unificazione del Parser
Ci sono state discussioni sull'unificazione di parser/AST, in TheLarkInn/js-parser-discussions e precedentemente con ESTree.
Purtroppo con Babel 6 abbiamo "forkato" e abbiamo alcune differenze nel nostro AST rispetto a ESTree. Babel mira a supportare funzionalità allo stage x, mentre altri parser potrebbero supportare solo quelle allo stage 4. Priorità diverse possono riguardare conformità allo spec, prestazioni, funzionalità allo stage x, messaggi d'errore, estensibilità, rilasci, ecc. È però importante rimanere aperti a breaking change che migliorino l'interoperabilità e la comunità.
Interoperabilità con Sweet.js?
Precedente issue. Forse possiamo semplicemente migliorare l'interoperabilità?
Supporto Node.js
Dovremmo interrompere il supporto in base all'EOL delle versioni di Node.js? Quanto dovremmo aspettare in generale?
-
Vogliamo continuare a supportare gli utenti che non hanno ancora aggiornato?
-
Alcune trasformazioni/PR sono bloccate da questo, a causa di strumenti che hanno già abbandonato le versioni precedenti.
-
Molti altri progetti di build-time come ESLint lo hanno già fatto.
-
Faremo un major version solo per questo o pianificheremo altri cambiamenti aggiuntivi?
Transizione da Babel 5 a 6 / Percorsi di aggiornamento
Il passaggio a Babel 6 è stato complesso per la comunità. Il rilascio iniziale è stato un po' affrettato. Nonostante un post sul rilascio della 6.0, una guida all'installazione subito dopo, e persino uno strumento (ora deprecato) per la transizione, è rimasto difficile per gli utenti comprendere i cambiamenti.
Ci sono ancora un numero significativo di utenti su Babel 5 che non vogliamo lasciare indietro. Cosa possiamo fare per aiutarli a migrare? Quali passi dobbiamo intraprendere in futuro per evitare che accada lo stesso con Babel 7? Ci sono altri progetti/comunità con cui dovremmo entrare in contatto e offrire supporto?
Problemi rilevanti:
-
Problema Ember-CLI Babel 6.0 ha bisogno di aiuto!
-
Altri?
Che altro?
Qualsiasi altro aspetto non già menzionato qui? Scrivici un tweet @babeljs, un messaggio sul nostro Slack (registrati su https://slack.babeljs.io/, commenta questo post o crea una issue di discussione nella nostra repository!
Ci sono progetti o comunità con cui dovremmo collaborare maggiormente? Come possiamo rendere l'esperienza di contribuzione più accogliente? Cosa possiamo fare per rendere il processo di sviluppo più trasparente?
Comunità
Problemi storici:
Potreste pensare che quando un progetto viene adottato su larga scala più persone si offrano di aiutare. Ma come molti progetti OSS non supportati da aziende, ci sono costanti problemi di manutenzione e sostenibilità: le persone si esauriscono, passano ad altri progetti interessanti o sono occupate con lavoro/famiglia/ecc.
Come James descrive in Dear JavaScript, l'attuale team di Babel è piuttosto ridotto.
Babel non è un'azienda, un team speciale di Facebook o un progetto OSS finanziato da società. È uno sforzo guidato dalla comunità attualmente sostenuto da poche persone e vogliamo che questo numero cresca.
Quindi se sei interessato a contribuire a uno strumento che utilizzi, speriamo che questo possa essere quello giusto!
Su quali problemi dovrei concentrarmi o contribuire?
Molti dei nostri progetti hanno etichette beginner-friendly e help-wanted. Puoi anche consultare discussion.
Team
Il nostro core team è:
E solo negli ultimi 3 mesi molti altri collaboratori:
Team principale di Babili:
Come accennato sopra, abbiamo molti collaboratori per il sito web:
Inattivi ma comunque una risorsa:
-
Sebastian McKenzie, @kittens - Yarn
-
James Kyle, @thejameskyle - Flow/Yarn
Come posso contattare il team?
GitHub
Per segnalazioni di bug o PR, consulta le nostre repository.
Twitter
Puoi contattarci su Twitter con @babeljs - o menzionarci individualmente.
Io stesso ho creato un account su Twitter per interagire con gli utenti e offrire supporto. Pubblicare nuove funzionalità e changelog è molto utile per ricevere feedback!
Slack
Abbiamo una comunità piuttosto attiva su Slack!
Troverai molti membri della comunità disponibili ad aiutare, come Jordan Harband, @ljharb, Jessica Franco, @Jessidhia, Jimmy Jia, @taion, Denis Pushkarev, @zloirock e altri!
If you haven't joined our slack yet: please join at https://t.co/h3m7l9jkrg. Check out development/plugins to see what's up! pic.twitter.com/f1CKaV8G6G
— Babel (@babeljs) October 31, 2016
Se hai domande entra in #discussion, mentre per contribuire o seguire i lavori visita #development.
Cerchiamo di evitare discussioni private quando non necessario: io stesso pubblico solitamente le issue/PR su cui sto lavorando per revisioni e discussioni.
Altro
In quali altri modi possiamo interagire con la comunità? Dovremmo organizzare meetup, partecipare a conferenze o gestire hackathon?
Come possiamo rendere Babel sostenibile? Dovremmo configurare un Open Collective o cercare una fondazione? Dovremmo pagare un project manager?
Fateci sapere cosa ne pensate! Cosa vi aspettate da Babel?
Vedi errori di battitura o problemi? Invia una PR o commenta su babel/babel.github.io#1014
Se c'è una cosa che vogliamo comunicarvi, è che molti di noi hanno iniziato con Babel proprio per imparare JavaScript, non per contribuire perché già lo conoscevamo. Personalmente, non sapevo nulla dei compilatori e avevo appena scoperto cosa fosse ES6 quando mi sono imbattuto nel progetto. Sono arrivato qui grazie a un pizzico di curiosità e all'incoraggiamento di molte persone. Voglio portare avanti questo spirito e sperare che possiamo riuscirci tutti insieme.
Grazie mille per la lettura!
Un ringraziamento speciale a tantissime persone per revisioni e contributi: @DrewML, @mrjoelkemp, @kentcdodds, @existentialism, @jdalton, @gaearon, @nolanlawson, @jayphelps, @montogeek, @TheLarkInn, @jasonLaster, @benjamn, @addyosmani, @Daniel15, @loganfsmyth, @gr2m, @mathiasbynens, @chicoxyzzy, @bvaughn, @bcoe.