Open source organizations

Open source big players:

Facebook

Contibute to many open source projects with JavaScript, Java, C++, Python, PHP etc.

  • React

  • react-native

  • flux

  • relay

  • folly

  • HHVM

  • immutable-js

  • nuclide

  • rocksdb

  • flow

  • jest

  • watchman

  • fresco

  • GraphQL

  • regenerator

Google

Java, Android, Python, Go, JavaScript, Material Design etc.

  • AngularJS

  • material-design-lite

  • traceur-compiler

  • protobuf

  • WebFundamentals

  • guava

  • bazel

  • gxui

  • web-starter-kit

  • webkit

  • gson

  • go

  • closure-library

  • lovefield

  • tensorflow

Microsoft

JavaScript

Twitter

Scala in depth, Java, CSS, JavaScript etc. But seems Twitter is moving from Scala to Java now.

  • BootStrap

  • twemoji

  • finagle

  • typeahead.js

  • flight

  • kestrel

  • mysql

  • hogan.js

  • commons

Square

Java, Android, JavaScript especially in time-series data processing, also Go.

  • retrofit

  • okhttp

  • dagger

  • picasso

  • okio

  • otto

  • crossfilter

  • tape

  • cube

  • cubism

  • leakcanary

  • wire

  • sqlbrite

Linkedin

Java, JavaScript, Go, Python

  • Rest.li

  • PalDB

  • dustjs

  • databus

  • hopscotch

Hubspot

JavaScript, CSS, Java

  • tether

  • offline

  • shepherd

  • messenger

  • pace

  • vex

  • youmightnotneedjquery

  • odometer

Mozilla

JavaScript in depth. Python etc

  • pdf.js

  • localForage

  • popcorn-js

  • rhino

  • nunjucks

  • metrics-graphics

  • sweet.js

  • togetherjs

Netflix

Netflix is a big player with Java,Scala,Gradle.

  • Hystrix

  • SimianArmy

  • Falcor(https://github.com/Netflix/falcor)

etsy

Handcraft website, Java, Python, Go etc.

  • statsd

  • deployinator

  • hound

  • logster

  • skyline

Guardian

  • Scribe

  • frontend

Idea14 ignore compile error for osgi modules

Intellij IDEA is a great IDE for Java development.

But sometimes IDEA14.1.4 will show many error messages for OSGi modules as this:

The package xxx is not imported in the manifest

You could resolve that by doing this:

File -> Settings -> Inspections -> OSGi -> Package accessibility, change the defulat sevirity “error” to “warning” or “info”

Es6 features and transpilers

ES6 is coming, but still a long way till all popular browsers full support it.

There are some ES6 to ES5 transpiler for now.

Default/Rest Parameters

Template String

Class

Arrow Function

Promise

Generators

let & const

for .. of

Modules

Map & Set

Babel

Babel formerly known as 6t05, is the most popular JavaScript compiler:

  • ES2015 and beyond

  • JSX and React support

  • Babel supports user plugins

Install Babel is rather easy:

npm install -g babel

Then you can compile ES6 JavaScript to ES5 code:

babel es6-source.js –out-file es5-build.js

Traceur

Traceur is a JavaScript.next-to-JavaScript-of-today compiler.

It is rather simple to use Traceur in browser:


<!DOCTYPE html>

  
    

TypeScript

Microsoft’s JavaScript superset,support ES6. With command line tools, you could transpile .ts to .js file very easy.

Good IDE support with VS Code etc.

Coffiecript

Same as TypeScript

AtScript

Same as TypeScript,develop with Augular2.

dart2js

Dart to JS compiler.

Reference:

Self Hosted git service

There are several open source Git tools which allow you to create your private Git services.

GitLab

GitLab is the most famous one, hosted at GitHub.

  • Powerful Code Review: Merge requests with line-by-line comments, CI and issue tracker integrations and much more

  • LDAP user authentication (also compatible with Active Directory)

  • Ability to fork a repository

  • Project importing from GitHub to GitLab

It also has an Enterprise Edition with many new features.

Gogs

Gogs is a Chinese project written with Go language.

  • Easy Installation

  • Cross Platform

  • Open Source at Github

GitBucket

GitBucket

  • Public / Private Git repository (http and ssh access)

  • Repository viewer and online file editing

  • Repository search (Code and Issues)

  • Wiki

  • Issues

  • Fork / Pull request

  • Mail notification

  • Activity timeline

  • User management (for Administrators)

  • Group (like Organization in Github)

  • LDAP integration

But still lacks features:

  • Network graph

  • Statistics

  • Watch / Star

Reference

Swiss knife for front end web development

Swiss Knife for front end Web development

Scaffolding

Yeoman

Yeoman provide a generator ecosystem, helps you to kickstart new projects, prescribing best practices and tools to help you stay productive.

A generator is basically a plugin that can be run with the yo command to scaffold complete projects or useful parts.Yeoman provided official generators for the most pupular frameworks,such as AnguarJS,Backbone, Polymer etc.

The Yeoman workflow comprises three types of tools for improving your productivity and satisfaction when building a web app: the scaffolding tool (yo), the build tool (Grunt, Gulp, etc) and the package manager (like Bower and npm).

It is rather hard to install Yeoman under Windows and China, something to be comment here:

  • change npm registry source: npm config set registry https://registry.npm.taobao.org

  • install yo: npm install -g yo

  • Manually add this path to Windows PATH: C:\Users\Simon\AppData\Roaming\npm

Dependency management

Bower

Bower is the package manager for Web.

NPM

NPM is the package manager for Node.It comes with Node now.

Browserfy

Browsers don’t have the require method defined, but Node.js does. With Browserify you can write code that uses require in the same way that you would use it in Node by bundling up all of your dependencies.

Build Systems

WebPack

webpack is a module bundler.

webpack takes modules with dependencies and generates static assets representing those modules.

Grunt

Grunt is the JS task runner, same as Ant for Java.The less work you have to do when performing repetitive tasks like minification, compilation, unit testing, linting, etc, the easier your job becomes.

Grunt use the Gruntfile.js or Gruntfile.coffee configuration file, which is a valid JavaScript or CoffeeScript file that belongs in the root directory of your project.

Gulp

Gulp is another JS task runner, which use Node streaming build system and aims to replace Grunt.

By preferring code over configuration, gulp keeps things simple and makes complex tasks manageable.

Brunch

Brunch is a builder. Not a generic task runner, but a specialized tool focusing on the production of a small number of deployment-ready files from a large number of heterogenous development files or trees.

Brunch also support Skeletons which is basically an application boilerplate that provides a good starting point for new applications, same as Yeoman generator does.

Broccoli

Broccoli is a less popular, fast, reliable asset pipeline, supporting constant-time rebuilds and compact build definitions.

jspm

SystemJS

RequireJS

Test

Mocha

Karma

PhatomJS

Jasmine

Chai

Jest

Sinon.js

ESLint

JSLint

Reference