You could try to set up the free shipping rules with table rates where you can define different names.
But "Software Virtual License" looks like a special case. Software licenses should be virtual products and if you have only virtual products in the cart, the shipping step is skipped completely.
Answer to updated question:
Since I cannot change these products to a virtual product, is it possible to create an observer on the cart and checkout page that would treat these products with a specific attribute as a virtual product?
How would I create a basic observer to by-pass the shipping?
The method that's used to determine if a quote is virtual, i.e. the shipping step is skipped, is
You see that the only way to influence the result without rewriting this method would be to make the products
getIsVirtual() method return true:
Unfortunately this method uses the product type singleton instance:
And for simple products, the
isVirtual() method simply returns false:
public function isVirtual($product = null)
So, there is no way to modify the behavior with an observer, but you have the choice which model to rewrite:
This is something like a choice between pest, cholera and hemorrhoids. Between those, I'd always choose the latter but it's still not nice.