43

As long as you don't distribute your binaries, there is no problem with using GPL libraries (or other code) in an otherwise closed-source project. As far as the regular GPL and LGPL are concerned, providing access to use your software over a network (like in SaaS) is not considered distribution. This means that there is no problem with using (L)GPL ...


20

It is OK to make a web application using C++ IF the benefits outweighs the cost, obviously. Google, Amazon, Facebook are all built with C++ for efficiency in speed, memory and energy - aka servers costs. However as you guessed, there are drawbacks to using C++ for this. It depends on your tools though. First let me cite cppcms website on this: When ...


11

Full disclosure - I've been on the demanding side of an escrow request, so please pardon me for any overt bias. Large organizations such as gov't and utilities generally don't change software applications frequently. It's not unheard of for an application to live 10 - 15 years, with only a few version upgrades in there. They can take "sweating the assets" ...


10

This problem is called API Management and there are a number of solutions. Integrated Billing - FOSS Solutions that offer integrated billing that are Open Source, free, or charge a percentage (based on subscriptions, so no up-front fees): WSO2 API Manager 3Scale Apigee and Apigee To-Go Integrated Billing - Commercial Solutions that offer integrated ...


10

Never over architect from the get-go. You will spend most of your time on the architecture and not the actual business case you are implementing. (This is especially true if you are trying out a new architecture approach, like micro services) When I start out with something new and especially something that I have no idea if anyone will ever use, I always ...


10

The default option I see a lot of people taking is to have a local database with the same structure and sync it with the server. This is quick to setup and there are various tools and libraries you can use to implement it. However, I don't think this is a good approach. I would use a queue/event store based architecture where actions are stored locally ...


9

From the description you have provided, the answer is "no, you don't have to disclose." You are either relying upon the output of the GPL'd executable or you are treating it as a system, which are two exceptions to the viral nature of the GPL. Dig into the GPL FAQ and you'll find your answers based upon the specifics of your scenario.


9

Keep your short releases in-house, until the customer is ready. Then, release to the customer on one of your four-week cycles. If possible, have the customer participate in software reviews between their release dates, so that you can keep your sprints on track.


9

I'm wary about on-premise solutions. It appears to me that the client has access to the source code No. They have access to an executable that is semantically equivalent to the source code, but it doesn't have to be the source code. and can easily steal it. Yes, they can. Is this software business model safe for the vendor? Stealing is illegal. This ...


8

Not exactly. The problem is that the new user database will have some variation. Where is your authentication source? What fields should users have? Do you need to send out a message when users are created/modified? Do you need to authorize user creation? How do you know what permissions a user has? "Thats fine", you say "we'll provide those via ...


7

Sprints aren't about deployment Sprints are for the developers, they are about commitments to deliverables, not about deployments by customers. The goal of a Sprint is to have a Deliverable. There is no requirement to actually deliver it much less deploy it. Every team I have been on produces many more deliverable builds than the operations team could ...


7

I am asking myself the exact same question at the moment. I am leaning towards the multi-instance single tenancy solution but have not taken a definitive decision yet. Let me share some of my thoughts : The main historical advantage of the multi-tenant architecture is a better use of infrastructure resources, by mutualisation (single OS, single Database, ...


6

There is not a YES or NO answer to your question. The decision to introduce a second level of indirection in the form of an xml/json API depends on what you are about to do with your project. As you mentioned, many projects go mobile these days, however, isn't there a simpler way to provide mobile functionality by simply presenting a customized version of ...


5

The term replaces Application Service Provider and can be found in documents dating back to at least early 2001. Software as a Service (SaaS), commonly referred to as the Application Service Provider (ASP) model, is heralded by many as the new wave in application software distribution. Following the maxim that “the Internet changes everything,” ...


5

You offer a multi-tenant solution. You place multiple customers' (aka tenants') data and applications on a single server. They share core infrastructure. If that server went down, it would take them all down. Therefore, multi-tenant. Do not feel bad about this. Essentially all service providers are multi-tenant, by design and necessity. Every organization ...


5

"Open source" typically includes that you provide the source code of your program in an understandable, compilable and changeable form. So any kind of artificial licence check could be easily disabled by anyone who is able to compile your code and has a basic knowledge of programming . Of course, you could use a license which forbids to change anything in ...


5

For my current project I had similar requirements like you. I have decided to use a backend server exposing a REST API. And for the cleints I am using a nginx server, which handles the subdomains and hosting the AngularJS Application. The server side checks which subdomain the client is using and sends the correct data to the client. In my opinion the ...


5

Oof, big topic. Yes, this can be a typical pattern in enterprise-class software, but I don't necessarily think it's a good one. Consider avoiding it if you can. The core issue here is that it exists at a super-high level of abstraction. When a tool doesn't know what the user wants to do, it inevitably abdicates the decision and gives you a framework for ...


4

Use SaaS: You will update your product ASAP, users will always have last version You will decide, which version of PHP and MySQL (etc) you will use It's much more easy to users to pay per month / per day, than for whole product "Cloud technologies" it's a future of IT world :)


4

In a complex system like you describe, I would say that the configuration of that system is at least as important, if not more so, than any individual component. Often in my experience, when a complex system I work on is not working, it is the configuration, not any individual component, that is responsible for the failure. An analogy I like to use is that ...


4

You could use Piwik from http://piwik.org . It's essentially an open source, host it yourself, web analytics tool. It has most of the major features of GA and is just as easy to use.


4

My advice to you...get a lawyer. You're playing with the big boys now, asking a group of strangers on a Q&A site something this important to your company is not the right way to do it.


4

It's just easier, and a pragmatic solution. iFrame keeps everything in it's own semi-private window, so there's little risk of CSS or JS conflicts. Not the greatest for user experience, but simple and effective especially for internal facing apps.


4

Supporting both options is possible also (a pool of tenants across multiple instances). I favor multi-instance cause of the natural isolation. Each customer's instance runs in it's own processes and it's data is isolated in it's own database. You can upgrade instances to new versions on a per customer/instance basis when desired. Tenant based systems come ...


4

If all code fetching data from the database is written correctly, then there is no need to have tenant id on each table. However, in practice bugs are inevitable, so there will at some point be improper data access in such a schema design. By including tenant id on every table, you can set up row-level security at the database level so that improper ...


3

Wordpress running in PHP with a few plugins installed brings my Winders server to it's knees. So I have no problems at all with the idea of implementing a web application in C++. Speed is a critical part of the web experience. Graphic design tents to drive the majority of web projects. PHP is an obscure scripting language that runs inside HTML. Allowing the ...


3

Yes, I've been in your situation. In no way did we impose our choice on clients when that choice of analytics tool had implications for both privacy of data transfer and storage but also external/third-party use of the data. Our legal counsel's recommendations (and you should absolutely check with yours) were the following: tell clients what you're ...


3

There are generally two big pieces to the "integrating with enterprise services" puzzle: single-sign on and data. SSO can be the easier piece, depending on what the client institution has in place. For instance: I work at a large institution with strict SSO requirements. We have an OpenID provider in place for authenticating to our SaaS vendors, and OAuth ...


3

What you are trying to do is commonly known as security through obscurity, and it's generally not a good idea. You can transform parts of your PHP code to PHP extensions* if you want, but your primary motivation should be efficiency not security, as every compiled piece of code can get reversed engineered with a decompiler. As Claude Shannon put it best: The ...


Only top voted, non community-wiki answers of a minimum length are eligible