Note that I'm not a lawyer and this isn't legal advice. But here are some things that I have been asked to sign in the past as a contractor:
- Non Disclosure Agreement (NDA) - This is an agreement that you won't disclose how the software works to other people or businesses. This usually includes other people in the contractor's business, too.
- Non Compete Agreement - A contractor may be asked to sign an agreement saying that they will not produce or work on other software which may compete with the software they're currently working on.
- Work for Hire - Usually there is a section that specifies that the work you are doing under contract is produces for hire and that you retain no rights to the software you produce.
Whether you want to sign any of these agreements comes down to whether you think they're reasonable given the compensation you're receiving. I generally don't have a problem with NDAs or Work For Hire, though I may charge more for Work For Hire agreements. Non-compete agreements may be limited by local laws, and may be a big turn-off for developers as they can be interpreted very broadly if not worded very carefully.