There are basically 3 models for getting web applications built:
- Proprietary platform
- Custom code
- Open Source
Proprietary platforms include most current software-as-a-service companies (such as SalesForce, many CRM packages, Ning, WetPaint, SquareSoft, and a bunch of others). With these services you are at the mercy of a single vendor. That vendor may deliver a great solution for you very rapidly, but if anything happens to that vendor or your relationship, you're screwed. If it's an online platform, it could go away if the company goes out of business or gets acquired or discontinues that product.
SalesForce and Apple's iPhone store are prominent examples of proprietary platforms with 3rd party developers--ultimately your business is at the mercy of SalesForce or Apple. There are many, many small development shops that have built their own platform for rapid development of applications. Most of these companies do not give you rights to the platform, only rights to use your application, and not to change or redistribute it.
These companies sell you a license to use their platform, but not more.
Benefits: Rapid development, low cost
Drawbacks: No rights to change or redistribute without going through a single vendor, your business is dependent on single vendor
Your dollars go to: licensing the platform, development of custom features
The main benefit of going with custom code is that you fully own the entire stack, and can become a proprietary software company. But there are tons of drawbacks.
First of all, cost. You're going to spend a lot of extra time developing code that re-invents the wheel. If you can't use existing open source applications to develop your application rapidly, you're going to spend a lot more money than going with either a proprietary or an open source model. It also means it's up to you to maintain it going forward, pay for resolving any newly discovered security issues, make it work with new browsers/web servers/operating systems, and everything else.
It is possible to use some open source libraries to build proprietary software, if they use a "liberal" license like the BSD or Apache license, and not the GPL. You can always build your own applications on GPL'd applications, if you don't plan to redistribute them--the catch is that if you do use a GPL'd application as a base, you can't restrict anybody else you give your code to.
Benefits: You control all rights
Drawbacks: Longer time to develop, more cost, no outside help with maintenance/upgrades, every feature must be built (instead of simply turned on)
Your dollars go to: everything
At Freelock, we focus on providing open source solutions. We think that for most businesses, open source strikes the best balance between fast, powerful development, lower cost of ownership, and lowest risk of all the solutions. There is a huge amount of open source code available, with a vast range in quality. Our experience helps us know what software is ready and good, what needs work, and what to stay away from. The tradeoff with open source is that you share ownership of the code, and cannot control how others use it.
The typical benefits of open source are that there is code already available, and many features are already developed and just need to be installed or integrated. The typical downsides have to do with polish of the user interface, and documentation/help for non-technical users. That's what we're here for--to choose the best software to get you going quickly, put all the pieces together, help you use open source software effectively, and polish it up to make it pretty and usable. And make the system work for you and your data.
Again, if you choose only software with a liberal license that does not mean you can't build a closed proprietary package on top of it. However, as your code diverges from the upstream projects, further customization and maintenance become much harder and more expensive.
Benefits: Rapid development, low cost, rights to modify, redistribute, sell, low cost of maintenance (other people fix things), vendor independence, low risk
Drawbacks: Much harder to use licensing as a monetization strategy, harder to differentiate your business on a technology basis, code is more widely known so vulnerabilities get exploited quickly, wide range in quality of code
Your dollars go to: development of features you need that don't already exist
What does this mean for my project?
So the key question is, are you trying to build a software company, or a business with an online component?
We build web applications for customers. We keep the copyright to all the code we create, as a general rule, and then provide it to our customers under an open source license, usually inherited from the base program we use for the software.
This is a lot like a custom home builder keeping the rights for the blueprints we develop when building a house. We give you the blueprints, and you can build another house using them--us owning the rights does not restrict you in any way (unlike many other software development companies). But by keeping the rights, we can avoid any question about whether we can use an element we designed for one customer in another customer's house--or web site. You own the house, can do whatever you'd like with it, and can even hire a different developer to do another house using the blueprints we provided.
Why do we want the rights? Because we're a software company. We want to take what we've developed for your web site and apply it to other sites in the future. That's how we make money. And you get several benefits:
- You get all the tweaks, knowledge, code snippets, processes, and experience we've developed for all of our previous clients.
- You get all the widgets, patches, updates, and learning of the entire community surrounding the base projects we use, to jump-start the development of your project
- You get regular updates for the underlying software going forward. For example, imagine after building a house to a specific plan, you discover that a design flaw means one corner of the roof ends up with a pool of standing water. If your house is the only one with that design, you've got to figure out a solution. If you're using a standard shared design, somebody else will probably find a great solution that can fix the underlying issue, at a lot lower cost.
By us owning copyright in the code, we can contribute changes upstream as we deem appropriate. We're not claiming any rights to ideas, content, artwork, or your site concept--just the bits of code we write to implement them.
It's beside the point
We get a lot of people asking about how to protect their "Intellectual Property" with a custom site. There's a lot of mis-information I've heard from a few venture capitalists and wanna-be entrepreneurs about needing to have core "IP" that you can protect and defend to be able to succeed. But ask anybody who's actually built a successful, sustainable business--it's not the IP that matters, but execution, people, and a bit of luck. There are thousands of good ideas out there, but very few end up as successful companies. And for every great idea, there may be a dozen or more sites trying to reach the same customers, fill the same need. Which one succeeds? The one that satisfies the market first. There were dozens of sites that sprang up the same time as Twitter, doing the same basic thing. We had a client approach us for a quote to build a Twitter-like site 6 months before anybody had heard of Twitter. Having a great idea is no guarantee you'll get customers, or have a successful site.
That absolutely needs to be your focus, the question that keeps you moving: how do I reach the customers who value what I'm offering enough to make my business successful?
We want your business to succeed. We want you to be out there first, reaching an audience, finding the best ways to deliver them value. You focus on finding out what your customers need, and let us handle the technical details of making a web application serve those needs.