Software Philosophy and Business Model

This posting describes the software philosophy and business model underlying the ideas and software solutions available from my websites. It is not meant to be accurate with respect to the multiple licensing models etc that control the free and open source software world, rather it is just an explanation of what I am doing.

Software Philosophy

The Free Software Definition provides the following four essential freedoms to a program’s users:

  • Freedom 0. To run the program, for any purpose;
  • Freedom 1. To study how the program works, and change it so it does your computing as you wish;
  • Freedom 2. To redistribute copies so you can help your neighbor;
  • Freedom 3. To distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes.

Access to my source code is a precondition for many of these freedoms.

Now, the software available from this site, all conform with the above four freedoms.

With regards Freedom 3, I only have two stipulations:

  • Stipulation 1. Any changes are made available to me to fold back into the original code if I see fit;
  • Stipulation 2. Any person receiving a copy of the software must make a donation via my website and shop using the relevant product. To be clear, if you pass on the SQL Server Spatial TSQL functions a donation via that product is required.

In addition, if any of the algorithms or source code (modified or not) occur in a derived product then I am given some sort of accreditation in line with the Creative Commons by Attribution license on this site.

Business Model

While there are a number of business models for distributing free and open source software – FOSS – eg service, distribution with value add, etc. This site conforms to no one single model.

My business model or approach is based on a simple business model that starts with my creating the opportunity for a dialog with a customer through helping customers, via free tips, algorithms, suggestions and working software solutions (indicative or thoroughly tested), to solve spatial problems within their IT.

The hope for me is that these free tips and tricks etc, may turn into consulting for payment as these things demonstrate my ability sufficient to start a dialog with respect to services for payment. This is a hope for service / cheap marketing model.

Two types of work may arise for which I am engaged:

  • Work Type 1. Something unrelated to the original solution or suggestion eg database design, tuning, application development, systems review or audit, etc.
  • Work Type 2. Extending, improving etc an existing function, or creating a new function for an existing package of software functions eg TSQL, MySQL, LINEAR package, T_GEOMETRY Objects, GeoRaptor (Java).

Finally, in the past I have given everything away in the hope that someone, somewhere might have found my code solved a problem and wish to let me know by making a donation.

That didn’t work.

Now, a donation is asked for before download.

I note that a lot of “free” software development teams and projects have commercial backing. Your donation reflects the fact that most open source project developers are actually paid to work on those projects, as so is a “thank you” for all the hours I have put in to the software “product”.

Remember though, that the product itself is not purchased.

Software Source and Quality

Sometimes I too use algorithms from external websites. (This may or may not require conversion from one language to the other.) Where the algorithm is copyright free with no requirement to acknowledge its source, the algorithm may appear in my packages with no acknowledgement. If acknowledgement is required then it will normally appear in suitable comments withing the code.

Some of my software uses existing FOSS software such as GeoTools or Java Topology Suite (JTS). This use is obvious within the source code and their use should comply with their license requirements.

Production Quality Code

I do not claim that any of the downloadable code is production quality and will work in all situations (eg a lot of development is done in projected coordinate space and not geodetic space). Most code is a one-off working out of a potential solution to a problem (often I see “use cases” that the original algorithm missed and either correct the original posting or leave it until another day or if a user contacts me). Having said that I do try to comprehensively test the algorithm via unit testing, documentation writing and other techniques. (For example, the CENTROID package is well tested not just by myself but by many people overseas trying it out on data far more complicated than I possess – a good example of how I hope/expect our dialog to work.)

In addition where an “installer” is provided it is not warranted to work in all situations or provide the features of something like an MSI. They are a thin “wrapper” showing one method for “installing” the components of a solution. If an error occurs then the installing person should be capable of working out why; where an error occurs, support for the installer is part of the download so please contact me.

As I have said in other situations, production quality status is something that the user of this software should ascertain for themselves within the application they are developing for production release. In other words: you create a test plan to ensure that the code passes your quality parameters.

Migrating Existing Functions

Occasionally I get emails that say something like:

“Your Parallel function for Oracle is really neat. I need it for PostGIS: please provide me with a version.”

Most of the time I do not have such a version. If I did I would have posted it to the relevant blog on my site. Also, I often cannot simply drop what I am doing and do a conversion (from Oracle to PostGIS or SQL Server Spatial is not that difficult). What I prefer is if you find yourself in this position do three things:

  • Thing 1. Ask if such a version exists;
  • Thing 2. Be willing to offer your time to test such a version if it does exist;
  • Thing 3. If it does not exist, offer to do the initial conversion yourself and ask if I would be willing to help if you get in to difficulties (I am always willing).

If you are not willing to “help me, help you” then you will just have to wait till that time in the future when I think such a conversion might help me drum up a bit of work.

Parting Shots

I have put many, many, many hours into writing functions. In the past I did so without any payment whatsoever.

Summary and Benefits

This article has described the Software Philosophy and Business Model behind the availability of the free spatial products on this website. Yes, the products are free, but a donation is required for all access to them at every point in its distribution.

Remember, the requested donation is TINY compared to the time spent creating each product and TINY compared to the time you will save by not having to create a function, class etc from scratch.