Intellectual Property and Open Source: A Practical Guide to Protecting Code