4

I want to build a some tools for ArcGIS. Toolboxes that I've seen are open source and run the scripts that reside in their src folder. However, I don't want to release the source code. After some googling (and thinking!), I came to these choices:

  1. Releasing the .pyc files
  2. Password-Protecting the tool
  3. Implementing the core algorithm in an exe file and running it in my python code.

Are these options really helpful? What is the standard practice used for creating proprietary tools?

3

An ArcGIS Desktop add-in will probably meet your requirements. With an add-in you ship a single compressed file as opposed to a folder structure that includes your source code.

| improve this answer | |
  • This one looks good. Are add-ins only created with python or I can use other languages like cpp (which are better for proprietary software)? – Ehsan Mar 20 '15 at 19:00
  • Add-Ins can be authored in .NET (VB, C#), C++, and also in Java. This link may be helpful: resources.arcgis.com/en/help/main/10.1/index.html#//… – crmackey Mar 20 '15 at 19:31
  • If you're familiar with C++ I would recommend creating the addin using C# with Visual Studio Express 2010. It's probably most painless route as the documentation is solid. – Radar Mar 20 '15 at 19:57
  • Sounds great! I have some cpp and C# experience. Thanks bro! – Ehsan Mar 20 '15 at 20:02
  • Just FYI, it's a trivial matter to extract and decompile this type of code. It's really just for convenience of deployment and not protection of trade secrets or whatever. – blah238 Mar 20 '15 at 20:41
5

A standard, modern approach to address this issue, create a web service that contains your proprietary knowledge. Your tool then calls the web service. Any local code can be cracked open. All you can do is make the process more difficult. Python is not the tool to use to keep your proprietary knowledge secret.

| improve this answer | |
  • @Ehsan More specifically, you can create a geoprocessing service. – a1234 Mar 20 '15 at 18:09
  • Even more specifically, a geoprocessing service in ArcObjects (C# or Java) – Vince Mar 20 '15 at 18:19
  • Well... Web service seems to be the optimal solution. Actually, I don't want to go that far. Just a compiled code is enough for me. I wonder if it's possible to use compiled local code. And if python is not suitable for closed source software, is it possible to code ArcGIS tools with other languages? – Ehsan Mar 20 '15 at 18:36
  • Is an ArcObjects geoprocessing service more secure than a Python geoprocessing service? – Erica Mar 20 '15 at 18:41
  • You could code some of your app's key logic in C or C++ and call that from python. That would keep everything local and increase the level of difficulty to snoop. Before heading down this road, ask yourself if what you're trying to protect is really a secret and worth the effort. – DenaliHardtail Mar 20 '15 at 18:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.