Skip to content

Instantly share code, notes, and snippets.

@peey
Last active August 29, 2017 15:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peey/992a67b5a732ad24cf4b4030f9681253 to your computer and use it in GitHub Desktop.
Save peey/992a67b5a732ad24cf4b4030f9681253 to your computer and use it in GitHub Desktop.

Final submission for GSoC

This is my final submission for GSoC and contains description of my work. I've provided links to the PRs which are well documented, contain reference to all the issues fixed by them, and have descriptions of what the code is doing.

Chronologically --

  • I started out by following Babel's official resources on getting started, sending some PRs to fix documentation along the way after trying and testing things out in the beloved ASTExplorer.
  • After I got a hold on ASTs, how babel internals and transforms were working, how to use babel-types, I started work on rewrite12 of the parameter inlining logic to use as a vehicle to implement what I'd learnt and to smooth out any problems.
  • Then I went after the Object Rest/Spread, my first big PR with 21 commits. This acted as my first exposure to looking up the spec when you have no definite answer about what the correct behavior is, and in dealing with reviews, code style, subtle bugs, and all the things that come after coding.
  • After that, I started on the decorators transform. This was a task with challenges of its own, with having to completely demistify the Syntax Productions in Babylon to know what's valid and what's not, to understanding the internals of Babylon, for which I started making a guide. I also had to look at all the existing work by people who'd already taken a stab at this 12 to salvage the useful parts of their code, and to understand where they stood on certain matters. The end result123 ended up being a great lesson in making compromises and forming a consensus in the people and all parties - the users, spec designers, contributors
  • Following that, I started working on implementing the transform part of the decorators proposal, which is still a WIP - with pending tests for class heritage and pending reviews.

All in all, this was a great experience takeaways of which are numerous, but I got what I came for - Contributing to a project I used frequently but never thought much about how it was sustaining itself, a lot of compiler concepts, interacting with the JavaScript devloper community (partly in thanks to where Babel stands - a tool at the epicenter of the dev community) and getting to know JavaScript AST (now I can make my own coffeescript if I ever get bored)

Complete List of Submitted Work:

Babel

Babylon

Documentation

Pending Review

Work In Progress

  1. Add feature to pass array of deps to a helper
    a. Current Commit: #adbb62f1cf3241
    b. Left To Do: Needs work on things pointed out in the review by nicolo-ribaudo
  2. Decorators 2 Transform [WIP]
    a. Current Commit: #44465f2fcbc38bca
    b. Left To Do: Add tests for decorators manipulating heritage of the decorated class. And to make minor changes for any reviews I'll recieve in future before this can be merged.
  3. A guide to Babylon
    a. Current Revision: rev 1
    b. Left To Do: Make it presentable so it could serve as an official guide to Babylon
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment