Okay programmers, wrap your head around this. According to Ontario tax laws, certain portions of the software development/deployment cycle are taxable, and others are not. In Ontario, there is no sales tax on:
Training or advising users of a computer program
Managing data
Planning the development process (including gathering specs)
Testing software
But the following services are taxable:
Installing or configuring software,
Modifying software,
Maintaining software
BUT! And here’s the big but:
RST applies to all modifications of a taxable computer program until the accumulated invoices (billings) for the modifications exceed the price of the original computer program (i.e., initial licence). The resulting modified program is then considered to be a custom computer program and any additional services will be exempt from RST.
Note that development is not specified anywhere in there. Project planning, and maintenance cover two parts of the development cycle, but the initial creation of source code isn’t specified.
I would argue that these rules are too complex for a small company to deal with. If I’m developing software for a small company, that doesn’t have a well-defined spec, where do I draw the line between planning the original software (non-taxable) and working on the next iteration (taxable)?
Astute readers will have noticed that the phrase “custom software” was used above. What’s custom software? Well, a slim little backgrounder document defines it as anything that cannot be described by the following:
the program is designed and developed for the use of more than one person
it is created using pre-written modules, unless the source code of the program is extensively modified
the intent at the time of development is to resell the computer program to others (e.g., the developer retains the rights to the new program for subsequent resale purposes)
it is designed for a specific industry and sold to several purchasers
the same core program is used to develop a program for each customer, and only minor modifications are made to that program
the program is developed for the use of several related subsidiaries (separate legal entities).
Where does this leave open source software? Say that I’m working on an spen source project. It’s designed for use by multiple people, but I have no intent to resell it (in fact, I’m going to give the source away for free). In a situation like that, I’m just charging for my time1. According to the rules listed above, that seems to suggest that the developer doesn’t have to charge any RST/PST.
So the moral of the story seems to be: if you design for reuse, then it’s probably taxable. If you’re writing one-off stuff, it doesn’t sound taxable. I think. Which suggests that the time spent developing software is taxable, if you’re going to sell those portions to others. Yech. Which suggests that consultants needs to be very mindful of time they spend developing different components.
Damn you, Ontario. Damn you.
The business model of just charging for time sucks. It sucks ass. It makes it really hard to make a reasonable amount of money, and it means that you have to charge higher rates to cover the time spent looking for new contracts. As much as I beleive in the idea of open source, this model seems to condemn the developer to charging high fees, and constant digging for new contracts. Then again, there are people who like doing those things. I’m just not one of them.