Broadly speaking, Open Source licenses come in two flavours: permissive and copyleft.
- Permissive licenses let you do whatever you want, as long as you provide certain attribution notices.
- Copyleft licenses require that you use the same licenses for all derivative works and that you make your source code available (in case you share binaries).
These are just different approaches at maximizing software freedom. Permissively licensed code can be used in any context, even in proprietary software. So other developers get maximum freedom, though end users might just receive the attribution notices and none of the freedom. In contrast, copyleft licenses try to maximize end user freedom – but this means such code cannot be turned into proprietary software and that end users need access to the complete source code.
Under no circumstances do open source licenses trigger requirements on purely internal use of the software. As long as you don't make the software (or software based on the licensed software) available to others, you can do what you want.
Licenses like Apache 2, MIT, BSD and their variants are all permissive licenses. You may do whatever you want but if you publish software that includes the licensed code (whether completely or in part, with our without modifications), then:
- you must keep any existing copyright and license notices intact in the source code
- you must show these notices in a place where a user would expect them, for example a in a manual or in a help menu
- for the Apache 2 license, a file called NOTICE must also be shown if it exists
The Apache 2 license also has patent-related clauses, but these are only relevant if you have a patent portfolio or participate in patent litigation.