Monthly Archives: July 2013

Open Letter on New Massachusetts Tax on Software Services

I am a long-time resident of Massachusetts and the co-owner of Development Partners Software Corporation, a small software consulting company specializing in helping businesses build custom software that effectively leverages cloud computing for competitive advantage.Tweet this story

A few days ago some changes to Massachusetts law were enacted that alter the tax policy around software consulting. I learned of this through Technical Information Release TIR 13-10 which was published to www.mass.gov and is dated July 25, 2013.

Quoting from TIR 13-10, “Chapters 64H and 64I of the General Laws have been amended to apply the sales and use tax to certain services relating to computer system design and to modification, integration, enhancement, installation, or configuration of standardized or prewritten software.” (I’ve added emphasis on the term prewritten since that is a pivotal term.)

It is worth pointing out that I was not successful in finding the actual final legislation (all I have to go on is the TIR paraphrase) since the wording does not yet appear to be updated on the web. For example, Chapter 64H, Section 1 (which I found through this tool for searching our laws) does not contain the changes indicated in the TIR. I also could not find the phrase “information management services” – listed in the TIR as part of the updated verbiage – using the search tool.

Fear, uncertainty, and doubtFUD, for short – is well known to the software community where vendors can be highly competitive and might sometimes plant seeds of doubt about another vendor in hopes that help them get the sale. But sometimes FUD just happens by mistake when communication is unclear – and I hope this new tax legislation is that type of FUD, and we’ll soon get a “sorry, didn’t mean to scare you” clarification. But in the mean time…

I have two primary concerns about this legislation:

  1. Insanely Short Notice – Are there seriously only 7 days to prepare for this confusing, far-reaching, and disruptive change in tax policy to take effect?
  2. Sweeping Inclusiveness – The language around which types of software consulting are to be impacted includes an extremely broad range of services.

I have other concerns too, but I’m assuming there are good answers to them. For example, if I have subcontractors on a taxable project, and they are performing taxable integration work, is their time also taxable? I assume not. But would be nice to see that in writing. On to my two primary concerns…

Insanely Short Notice

The legislation was enacted on July 24, 2013  TIR 13-10 was published on July 25, 2013, and the new taxes are effective beginning on July 31, 2013.

Yes, this new tax takes effect a mere week after being made law, a mere six days after TIR 13-10 was published, and this is all for a bill that most software consultants doing business in Massachusetts are likely not even aware of it. (I heard of it through my friend Jason Haley who forwarded me the link. Like 100% of the other software consultants, I am not expecting a blind-side like this, so am not spending time watching for it, but am focused on my business.) I know I certainly would not know about it if I hadn’t been tipped off by Jason. It seems obvious to me that a significant percentage of impacted businesses will not even be aware of the new requirements until after the taxation has begun.

IANAL, but my reading suggests I have the following new obligations:

  • Determine which of my consulting services are taxable (more on this in the “Broad Inclusiveness” section below) – which may require me to retain both a lawyer and an accountant for guidance
  • Collect taxes from customers
  • Set up an online tax account with the state (?)
  • Pay periodic taxes to the state of Massachusetts

Now consider the awkwardness of the very short notice. It is naïve to think that the tax “just gets paid” – it can impact my ability to sell services (since the price tag has gone up) and makes all existing deals awkward since the cost of doing business has gone up so unexpectedly.

Consider a deal that’s in place for my company to provide $10,000 worth of (now taxable) services to a client. The $10,000 is already negotiated. Now throw in the 6.25% sales tax. Where’s the $625 for taxes supposed to come from?  If my client absorbs this, they will pay more than they budgeted. Or maybe they want to back out of the deal or want my company to take on this unexpected cost. If my company absorbs it, I will receive less revenue than budgeted. If my company receives less, what about subcontractors that’ I’ve already lined up? Or my own company’s bottom line? Change happens – I realize that, and am okay with that – but sweeping changes can be painful – and enacting such sweeping changes so suddenly seems reckless and patently unfair.

This sudden tax complicates my company’s existing and ongoing business arrangements, causes me to waste time working through these new factors with clients, and doesn’t have an iota of business value for me or my clients. An unwelcome distraction. How does this help the business climate?

A little notice would go a long way. How about at least six months or a year’s notice? I find it absurd that our lawmakers expect businesses to react so rapidly to something that is so fundamentally disruptive. I didn’t look, but it makes me wonder whether there are guidelines in the Massachusetts State Constitution around whether taxes can be implemented with such short notice.

And, as mentioned above, I looked for – but was unsuccessful in finding – the actual new law with the updated text. Shouldn’t laws be fully published before we are expected to follow them? Are they out there somewhere else but I failed to find them?

Sweeping Inclusiveness

Cribbing from TIR 13-10, “The Act also amended the definition, in section 1 of Chapter 64H, of ‘services’ that are taxable under Massachusetts sales and use taxes.” It goes on to define services as “limited to the following items: telecommunications services, computer system design services and the modification, integration, enhancement, installation or configuration of standardized software.” I added the emphasis on the term standardized since it is such an important qualifier; I am not sure why our law makers did use the term prewritten here, as was used above, or whether they consider them synonyms. Any linguists wish to offer an opinion?

I encountered an earlier draft of this law a couple of months ago and was not nearly so concerned since the focus then was Software as a Service which is so common these days that we simply call it SaaS. Exactly what constitutes SaaS is not perfectly defined, but is surely less encompassing than this new law which dropped the term Software as a Service in favor of the far broader Software Services.

Of further relevance is the first footnote in TIR 13-10 which states “The taxability of data access, data processing or information services is unchanged by the Act; these services are not subject to sales/use tax.” This seemingly gives hope – the listed activities “are not subject to sales/use tax” – until you realize that this uses different terminology than the main text which formally defines “services” as the taxable activity; the term “services” is not used in the same way in this footnote.

What is “Prewritten” Software

Let’s consider a few scenarios around the sale of prewritten software.

Consider a large software vendor selling prewritten database software and related tools. The software has been around for decades and there’s little question that it is “prewritten” and is sold many times over. Selling copies of such prewritten software logically should trigger sales tax collection. This is not changed by this law (though keep in mind IANAL).

Now suppose this large software vendor makes a million dollar deal to sell some of this software and also provide the expert services to handle the installation, configuration, and integration for the customer’s environment. Should they apportion $500k to software and $500k to consulting? Or might they be incented – for tax reasons – to negotiate $200k for the software and $800k for consulting? Shifting the cost from software licenses to services means lower taxes on the software, 6.25% of $300k in this hypothetical scenario. In this situation, the software sale can not happen without the consulting, and no consulting would be needed without the software sale. It seems that the change to the tax law would target this sort of deal – just tax the whole deal so the software vendor can’t play games just to avoid taxes.

Okay – there is obviously more that’s being taxed – but there’s a “fairness” angle there because it reduces “cheating” – so while I’m not a fan, I can at least see the logic. At first I thought the law was targeting these kinds of deals, but after reflection realized its language made it more sweeping.

What other scenarios seem included in this law? A few examples follow. But unlike the scenario described above, I see no logical tie-in with existing tax revenue streams, so I believe (hope?) these additional scenarios included by the wording in the law are unintended.

Unexpected Consequences? – Open Source Software

EDIT 01-Aug-2013: This, sadly, is officially not an unintended consequence since adding open source use to an otherwise untaxed software services project  can trigger the tax: https://blog.codingoutloud.com/2013/08/01/its-official-new-mass-tax-targets-use-of-open-source-in-software-consulting-services/

There is a great deal of software in use use in the world that is available for anyone to use, for any purpose, with full access to the underlying source code needed to modify or understand the software. This is commonly known as Open Source Software.

By definition, all open source software is “prewritten” software.

Examples of open source software includes the Firefox and Chrome web browsers, the Android operating system the powers mobile phones from Google, the software behind TiVo (the original DVR), and the WordPress blogging platform. This is only a very small sampling of thousands of software packages available as open source.

Let’s consider the use of WordPress. What happens when I hire someone to create me a blog? It is very common that such software projects are not built from scratch, but are based on prewritten software, such as WordPress. WordPress is then customized to suit the needs of the client, perhaps including integration with their existing database. Is building a blog with prewritten WordPress now taxable?

Not all open source software packages are known to the public, but the Linux operating system is perhaps one that is somewhat famous, even outside the software development community. Are all systems integration projects based on the prewritten Linux operation system now taxable?

If you answer that question by following-up with – It depends on whether you paid for the open source software? – then that’s even more complex. It turns out that sometimes you pay for open source software – even though you don’t have to – for a number of potential reasons, one of which is simply so someone will pick up the phone if you need technical support. Does paying for the open source software (now or months later) trigger taxation (perhaps retroactively, if I buy the software later) on the associated consulting services?

Unexpected Consequences? – Third-Party Components

Software developers frequently use third-party components in building solutions for clients since it can greatly enhance the polish, while dramatically speeding time to market and reducing project risk and complexity. While there is a lot of similarity to the use of open source software (which can also take the form of software components), let’s focus on only those third-party components which are commercially licensed. There is a significant industry around this, with a popular example being able to buy a third-party component to add “spreadsheet” functionality to a business application.

Or let’s go one step further and consider Excel itself – the ubiquitous business tool that many third-party components emulate. Excel is a software development platform in itself and can be integrated with your company’s technical environment.

Use of a third-party commercial component or building an application on top of an application like Excel definitely includes taxable software sales, but does it trigger the taxation law for the associated development services?

Unexpected Consequences? – Cloud Computing

The final example I’ll offer is where all of the above considerations converge – and then some. I personally make my living helping companies – mostly small businesses looking for a competitive edge – build their own software solutions that leverage cloud computing.

Cloud computing is all about using prewritten software. The customer builds some software for themselves – the parts that are very specific to their business – then rents all the other capabilities they need but don’t differentiate them. For example, they may build their own SaaS web or mobile applications for their customers that contains specialized logic specific to their business. Then they rent the rest of what they need – they rent the operating system, the hardware it runs on, databases, storage services, and so forth. This allows them to focus on the part that matters – and as quickly as possible get great software out there to help them build their own business.

Consider this as similar to the utility access to water or electricity. Every building needs water and electricity, but that’s rarely a business differentiator. You need it, but it’s already been figured out, and “just works” if you use the standard existing solutions. Cloud services are like this. For most business applications, a database is needed, storage services are needed, an operating system is needed, and so forth, but only a relatively small amount of logic really differentiates the application. Your application-specific logic is almost always much, much less sophisticated than services you rent, such as the Windows Server or Linux operating system or the SQL Server, SQL Azure, or MySQL database.

Databases are water and operating systems are electricity. You need these prewritten services, and you build around them. If they work well, they go unnoticed. But, in the cloud computing world, will they result in related software services being taxed?

In Closing

Reusing existing software is at the heart of what helps the software industry advance to higher levels of productivity.

Bottom line: NOT using prewritten software constitutes malpractice for most software projects!

<sarcasm>

Should we start taxing lawyers for using prewritten boilerplate contracts? Isn’t that the same as selling a service that leverages prewritten assets. I know much contract language has gone through many, many years of hardening, refining, and tuning and is effectively resold in order to make downstream deals more productive and less risky. This is very much selling a preexisting asset, with some customization (systems integration) work. Seems to me pretty analogous to what is happening with software.

I’m also wondering whether the state’s lawmakers believe the productivity and profits lost by software consultants and their clients will be made up by taxes on the additional revenue that will now flow to lawyers and accountants as the software industry scrambles to handle the understanding and execution of these new policies?

</sarcasm>

TIR 13-10 also offers that “Comments or suggestions may be sent to rulesandregs@dor.state.ma.us” so I have forwarded a link to this post to that email address. I will post here any relevant response.
01-Aug-2013 UPDATE: This morning I received the following email response:

Thank you for sending comments to the Department of Revenue regarding TIR 13-10 and the sales tax on computer/software services.  In response to the large volume of questions, the Department has posted answers to Frequently Asked Questions on the DOR Website at: http://www.mass.gov/dor/docs/dor/law-changes/faqss-computer-software-2013.pdf

The FAQs will be updated as additional questions are received and reviewed.

My business and my home are in Needham, MA. Needham is most ably represented by Massachusetts Representative Denise Garlick (who I’ve known for many years, starting when our sons were in the same Boy Scout troop). On Monday I emailed Representative Garlick’s office a reference to this letter. On Tuesday I emailed her and Massachusetts Senator Michael F. Rush. Hoping to hear back from both.

01-Aug-2013 UPDATE: I heard back from Representative Garlick. She’s concerned and seems her understanding of the law as written may differ from DOR interpretation. Here’s an excerpt from her email:

My understanding as I voted (Massachusetts House of Representatives) is that this proposal does not tax:

·        custom built computer software

·        data recovery services

·        website design, “the cloud”

·        access to software hosted on a third party server

Further, the computer services tax included in this plan does not tax :

·        downloaded music

·        books or games

Additionally, this tax does not extend to many consumer computer services including technical support, removing software from a computer (for example, removing malware or a virus), or running diagnostics.

I think “custom built computer software” and “website design” appear (in my interpretation) to be covered as taxable in the DOR FAQ, but this contrary to Representative Garlick’s expectations when she voted for it. Rep. Garlick is also “trying to  schedule a focus group discussion in Needham with DOR to so that you may share more about business practices and any areas of uncertainty that you may regarding the legislation. I will keep you posted on a date, time, and location of the meeting. ” I told her this was an excellent idea.

I also tweeted a reference to this letter. If you are concerned and wish to share, please feel free to retweet.    Tweet this story

Your comments to this letter also welcome.

Advertisements

C# Exception Handling: Accessing the Base Exception

Sometimes the mundane act of giving a concept or feature a good name goes a long way in simplifying it and making it easier to grapple with. Even if it is just a small time-saver. The Base Exception concept in .NET exception handling is a good example – one that we’ll return to shortly.

When handling exceptions in C#, sometimes you will find that the exception you see in your catch block holds a great deal more data than you might realize at first glance.

The most obvious is the Message property which might explain what happened (in prose), or perhaps the HResult property which might explain what happened (after reviewing documented return codes, or perhaps after a Google search on the returned value).

Further, different Exception types may also have additional specialized properties, such as the ParamName property on the ArgumentNullException class.

And then sometimes there is the motherlode of additional exception data: an inner exception. When the InnerException property is not null, it contains a copy of an entire additional exception, usually one more specific than the one you caught directly. And an InnerException property can contain its own InnerException property, creating an arbitrarily deeply nested chain of exceptions.

This can be invaluable information, but how do you dig out the most deeply nested one – since that’s most likely the exception that started causing trouble in the first place.

You basically have two choices.

Choice #1 – dig it out “by hand” using a loop:

catch (Exception ex)
{
   var baseEx = ex;
   while (baseEx.InnerException != null)
   {
      baseEx = baseEx.InnerException;
   …
   }
}

Or Choice #2 – and the better choice – is to realize that there is a name for this exception – in the .NET Framework it is known as the Base Exception – and simply ask for it by name. All Exception and Exception-derived classes have a GetBaseException method.

catch (Exception ex)
{
   var baseEx = ex.GetBaseException();
   …
}

I’ve found that in debugging Windows Azure Cloud applications, jumping directly to the Base Exception is often a productive first step in zooming in on the root cause of the issue at hand.

Hopefully this post gives you some insight into more efficient understanding of exceptions in your own applications – and a small helper in digging out the Base Exception.