A Field Guide to the Distributed Development Stack

Appendix A: Language Stack Quick Reference

No language is an island. Rather, every successful language (Ruby, Python, etc.) comes with an ecosystem of tools and frameworks. The goal of the following table is to map some of the key elements in these language ecosystems so that you can quickly cross-reference an unfamiliar stack against one you’re familiar with.

Why would you care, you ask? Well, even if you don’t need to know a language in depth, you still might want to install and use some great open source package, so it helps to have an idea of what is what. This is not meant to be an exhaustive list, just an overview of the biggies in each ecosystem.

Ruby

Python

  • Frameworks
    • Django. Django is a modular, high-level Python Web framework that ships with an ORM, a template engine and lots of helpers.
    • Flask is a popular wsgi micro-framework, with embeded development server and debugger, template support (via Jinja2 ) and restfull handlers. Flask supports extensions to add functionnalities.
  • Package management
    • Setup_tools is a python packaging library for distribution, test, installation, dependency management, and metadata handling of python projects.
    • pip. Pip is a package manager, to install, remove, and manage packages and dependency. It can handle build distribution to ship and deploy a specific distribution of your code and dependencies.
    • Virtualenv is a Python environment isolation, to manage application dependencies in a folder, outside of system-wise packages.
  • Testing tools
    • Nose is a testing tool and library to help test Python code.
    • Coverage provides code coverage.
    • Mock is a mocking library for Python. It is now included in Python’s standard library sinc 3.3.

node

Java (and JVM-based languages)

  • Frameworks
    • Play Play is a framework for Scala and Java.
    • Spring A Dependency Injection based framework for just about everything.
    • DropwizardDropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services.
  • Package management
  • Testing Tools

Go

  • Frameworks
    • Gorilla Web Toolkit is a collection of libraries to provide context, more powerfull router and dispatcher (mux), RPC and session management.
    • Negroni is a HTTP middleware library over net/http. It provides middlewares and makes it easy to create your own.
    • gocraft/web is a router (mux) and middleware package.
  • Package manager
    • go get is go builtin package and dependencies manager
    • godep is a go dependencies manager.
  • Testing tools
    • testing is go standard library testing library (to use with ‘go-test')