[Linux and Server-Side Javascript](https://docs.google.com/file/d/165GdNMvxPnEPjKtJ5vzzdIfLL6_uVfJMExWq6SjgxT3hZmPso0vpINsDIr_2/edit?usp=sharing) ================================== Server-Side Loophole -------------------- Also called the application-service-provider (ASP) loophole. You can include GPL software in your non-GPL software (hence not having to release your code) if you're providing service over a network, i.e. it's server-side code (todo: verify). You can also use GPL code in your non-GPL code if you link the the code but do not use it's source directly in your source. Open Source Business Models ---------------------------- There's the professional open source model, which RedHat made popular. The problem with this route is that a model based on consulting is a service-business, not a product business. It doesn't scale as well (hiring more competent people vs buying more servers). There's the freemium model (e.g. Dropbox, GitHub). Basic services are free and premium services are paid. And other models, mentioned later. How Linux is used in the Valley ------------------------------- Most common setup is to equip engineers with Macbooks (personally I think ThinkPad is just as good an option) for local development and servers running Linux (as a virtual machine) for production deployment. This is because OS X runs a BSD variant, so most code runs between OS X and Linux with little or no changes. Gaining popularity is to use Chromebooks (which start at $200) and SSH to a server (e.g. AWS) Virtual Machines ---------------- Infrastructure-as-a-service (IAAS) providers, like AWS, usually do not rent out single physical computers, but rather a virtual piece of a multiprocessor computer. Virtualization allows maximal physical utilization of expensive multiprocessor hardware. An 8-CPU computer split into 8 different virtual servers offers better utilization, even though the "virtual computers" are less powerful than native hardware. ![](http://i.imgur.com/E02J9LD.png) The Cloud --------- A cloud computer is a remote computer accessible over the network (typically interent) and is used instead of running something locally. Many applications can tolerate a small degree of network latency and/or physical separation, making cloud computing quite useful. There are 3 classes of cloud computing: 1. **IAAS:** AWS, Joyent, Rackspace, ... Provide CLI access to the machine, but you have to take care of details for deploying code. 2. **PAAS:** Heroky, DotCloud, Nodester, Google AppEngine, ... Provide an API that abstracts the CLI, but access to CLI is possible if absolutely necessary. Note: Heroku began as a layer on top of Amazon AWS. 3. **SAAS:** Salesforce, Google Apps, Mint.com, ... Provide GUI or API access, no CLI access (hence no control over h/w).