If someone were writing software on contract for a client, this might be viewed as a service. If someone is writing productivity software and selling it as a package, it would be an article. Needless to say, this is a real gray area.
Austin, Texas has a training facility that receives money from the Texas Workforce Commission, which is most likely funded from the Federal Government. One of my friends received training from a separate program, which is retraining for 'tech workers' (not necessarily programmers) laid off from plant closings. Another friend lost his job to 'offshoring', and had considered taking the training, but found work before choosing to commit.
For this to mean anything at all, there has to be someone providing training. Among the courses offered here were Java and Oracle (database). If one goes on Indeed.com one finds huge demand for Java, and a lot of demand for Oracle. Given that Oracle owns Sun and Sun 'owns' Java, I could see the interests of a large private company being served by having people trained in Java and Oracle.
My friend signed up for the Java and Oracle classes. The first stage of this was a set of tests to determine whether he would understand the course material - I don't know what was in them but they couldn't have been too demanding. He then signed a contract - if he dropped out he would be personally responsible for paying back something on the order of $7000. He committed to this since he had been out of work for 18 months. He is an electrical engineer when times are good, however this was in the 2010 time period and times were not good.
He started the course, which ran in this case 4 hours Monday and Wednesday starting at 6:00 PM, and every other Saturday for 8 hours. Once a month he had to 'check in' with someone at TWC, someone we jokingly referred to as the 'parole officer'. Their role was simply to make sure he was sticking with the program. His unemployment benefits were conditioned on him remaining in the course for the duration.
I recall the course running for about 4 months. The provider organization suffered some organizational issues - the class started a week late. There was also an issue with the course material, the book wasn't particularly up to date. He found out later that more recent classes were using a different and presumably better book. He finished both of the courses. In theory, he was supposed to take a certification test, but wasn't confident about doing so. The TWC people, as it turned out, were happy that he completed the course, and weren't all that worried about the certification.
Oddly enough, about a week after starting the course he got contract work in Electrical Engineering. The interaction of this course and the EE work had an interesting side effect. The employer laid off a number of engineers shortly after he started work. He wasn't one of them, and he found out later that the layoffs were concentrated in engineers that were running up overtime. Since he had classes to attend, he was out the door at quitting time, so this in effect saved his job.
Eventually that contract ended and wasn't renewed. He is now auditing the course, hoping to get out of it what he was expecting to get the first time. He isn't confident yet in actually asking for work as a Java programmer.