Re:Ask HN: Programmers, how do you handle Copyright and IP i...
by tracker1 on Thursday May 07, 2015 @01:47PM
(#9506888)
Through some rough lessons I no longer take on many projects that I am personally developing outside of a day job. In general, I bill $x per person:block:day (being each day that I work on something 0-4 hours, and each additional block capped at 4 hours)... Anything that is not a core part of the product (business logic, or specific design elements) may be abstracted away, reused and/or released as open-source. I will also use, as appropriate already written open-source code that won't elevate the risk of said project (no agpl, only gpl if it's a server-side solution). Once a solution is finished and paid in full, any copyright over the solution will be signed over, and will not include outside libraries, even those written to help with said project. I emphatically do not believe in Patents on software, so will not apply for or assign any such rights on what I develop.
For the most part when you talk to a client openly about how software is assembled and crafted, and that their part of the product will be theirs, and that you will deliver a finished product while also respecting the larger development community in contributing back, it's usually a smooth process. These days we, as software developers, tend to use large amounts of mit/gpl/isc/apache and other openly licensed software/libraries, that when you explain that what's out there saves you time, and giving back saves everyone time, it's usually less friction.
I also expressly do not bid on entire solutions that are not well defined, or are too strictly defined. It tends to become a time sink if you do. And prefer to bill in blocks/day against a deposit against the estimated work/time. I also make clear that what I give is only an estimate, and actual billed blocks may vary depending on changes through the lifecycle of initial development.
----
As far as a day job... I tend to line-out anything that can be construed as assigning rights of work I do outside of the office on my own time, or Patent assignment. As a rule, I only interact with hardware through defined software interfaces. If I were building/designing custom hardware to accompany the software I might have a different stance.
----
If you are uncertain, or unsure of how to establish a written contract, as always you should contact a lawyer.
For the most part when you talk to a client openly about how software is assembled and crafted, and that their part of the product will be theirs, and that you will deliver a finished product while also respecting the larger development community in contributing back, it's usually a smooth process. These days we, as software developers, tend to use large amounts of mit/gpl/isc/apache and other openly licensed software/libraries, that when you explain that what's out there saves you time, and giving back saves everyone time, it's usually less friction.
I also expressly do not bid on entire solutions that are not well defined, or are too strictly defined. It tends to become a time sink if you do. And prefer to bill in blocks/day against a deposit against the estimated work/time. I also make clear that what I give is only an estimate, and actual billed blocks may vary depending on changes through the lifecycle of initial development.
----
As far as a day job... I tend to line-out anything that can be construed as assigning rights of work I do outside of the office on my own time, or Patent assignment. As a rule, I only interact with hardware through defined software interfaces. If I were building/designing custom hardware to accompany the software I might have a different stance.
----
If you are uncertain, or unsure of how to establish a written contract, as always you should contact a lawyer.