Some late night thoughts on obfuscators...
Obfuscation has some added bonuses
- any stack trace you get will be junk unless you pay for a tool with a stack-trace mapping decoder.
- How do you know everything still works? Do your unit tests and integration tests cover everything? Obfuscation can break things like reflection, binding, inter-assembly calls, plugins. You'd have to be very confident with your unit & integration tests (you have these, right?).
I just played with the trials of a few paid obfuscators - they look impressive but I couldn't even get the app (
MahApps.Metro demo) to start after any of them had a go at it. You should try them out on a reasonably complicated app that is a known thing and see if it breaks. See how long it takes you to fix it. Then wonder if you fixed everything. Then keep coding. Then... Then ponder if you want to get yourself into that mess just to annoy some kid who wasn't going to pay anyway.
At least with licensing what you see is what you get, the build doesn't change when you deploy it and you have tested it (right?). If they manage to find all your needles in the haystack then email them a medal.
If your support etc. sucks so much that it's not worth paying for then you have bigger problems than script kiddies. Just make it easy for the nice people to do the right thing.
Rightyo...
Licensing. Initial impressions on day zero: Infralution Licensing plus their
Paypal IPN Server thingy looks very promising. I'd pay the US$10 /month just to run those services on something like Discount ASP ... or Azure or something like that.
There's a lot to like about Crypto Licensing too, particularly the custom floating license lease duration and the heartbeat option. One could buy the source code option from Infralution and bolt that on - it shouldn't be too hard. That's why I keep coming back to Infralution, the source code option (if I want to go there) and the busy support forum.
Portable licensing doesn't do floating licenses and I have already been asked for that. For floating licenses consider that the computer with the lease may be offline so a heartbeat may not be feasible and/or the lease period may need to be user (or admin) specified on a case-by-case basis. Rhino licensing does floating licenses in a basic sense but
nobody seems to know how to build it and they're not telling so I did. Well, it's a psake thing and yaaaawn. If you try to build the VS solution first it complains...
1>------ Build started: Project: Rhino.Licensing, Configuration: Debug Any CPU ------
1>CSC : error CS2001: Source file 'C:\Codez\rhino-licensing\Rhino.Licensing\Properties\AssemblyInfo.cs' could not be found.
2>------ Build started: Project: Rhino.Licensing.AdminTool, Configuration: Debug x86 ------
3>------ Build started: Project: Rhino.Licensing.Tests, Configuration: Debug Any CPU ------
3>CSC : error CS2001: Source file 'C:\Codez\rhino-licensing\Rhino.Licensing.Tests\Properties\AssemblyInfo.cs' could not be found.
2>CSC : error CS2001: Source file 'C:\Codez\rhino-licensing\Rhino.Licensing.AdminTool\Properties\AssemblyInfo.cs' could not be found.
4>------ Build started: Project: Rhino.Licensing.AdminTool.Tests, Configuration: Debug Any CPU ------
4>CSC : error CS2001: Source file 'C:\Codez\rhino-licensing\Rhino.Licensing.AdminTool.Tests\Properties\AssemblyInfo.cs' could not be found.
========== Build: 0 succeeded, 4 failed, 0 up-to-date, 0 skipped ==========Then it blows up when you try to run test and oh f....I'm a bit of a fan of things actually working so I've gone cold on the shininess of OSS for tonight....edit... Running the
psake.ps1 script builds it and fixes the
AssemblyInfo.cs errors.
https://github.com/ferventcoder/rhino-licensing is a later verison of Rhino and the author also wrote Chocolatey which, if you've never used it, is some kind of awesome. .
I'm still torn (ie. wasting brain cycles) between something like
- FastSpring + LimeLM - more expensive but more hands-off
- Infralution + self-hosted licensing + downloads - more control, more options (especially if I buy the source and break it), more money in my pocket but more late nights.
[/tt]