Software Philosophy and Business Model
Friday August 26 2011 at 14:41
This posting is an attempt to describe the software philosophy and business model underlying the Tips and Tricks, and other software solutions available from this website. It is not meant to be accurate wrt 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.
The Free Software Defintion provides the following four essential freedoms to a program’s users:
- The freedom to run the program, for any purpose (Freedom 0).
- The freedom to study how the program works, and change it so it does your computing as you wish (Freedom 1).
- The freedom to redistribute copies so you can help your neighbor (Freedom 2).
- The freedom to distribute copies of your modified versions to others (Freedom 3). By doing this you can give the whole community a chance to benefit from your changes.
Access to the 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 one stipulation and that is any changes are made available to me to fold back into the original code if I see fit.
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.
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 throughly 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:
1. To work on something unrelated to the original solution or suggestion eg database design, tuning, application development, systems review or audit, etc.
2. To work on extending, improving etc an existing function, or creating a new function for an existing PL/SQL package (eg GEOPROCESS, LINEAR etc) or Java application (GeoRaptor).
Finally, through giving “stuff” away, I hope that someone, somewhere might have found my code solved a problem and wish to let me know by making a donation. To that end I have put up a PayPay Donate button on all the main pages of this site.
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. 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 my 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. (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.
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.
I put many, many hours into writing functions for Oracle. I do so without any payment whatsoever. 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 is not that difficult). What I prefer is if you find yourself in this position do two things:
- Ask if such a version exists;
- Be willing to offer your time to test such a version if it does exist;
- 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.