Say I have a personal software project that I would like to be Open-Source. 100% of the source code for my version of that project is available online for everyone (e.g. on GitHub). I'd the like to grant/impose the following freedoms/restrictions:
- Anyone is free to use my project, modify it, redistribute it (all the freedoms that GNU licenses usually grant).
- If someone modifies my source code and redistributes it, they have to make my source code and their changes publicly available.
- If someone links to a (potentially proprietary) dependency in their modified version of my project and distributes it, they HAVE to make the modification that links to the dependency publicly available, BUT they do NOT have to distribute the dependency AND they do NOT have make the source code for the dependency public.
- If someone incorporates my project or their own modified version of it in a larger work (i.e. simply add to my project/their modified version of it), as long as they comply with the conditions listed above, they can license their larger work however they want.
Example of point 4: someone modifies my work to fit their needs, publishes the entire source code of the modified version of my project, uses this modified version in a larger, proprietary, work and notifies the user about using the modified version of my work).
What license should I choose in order to achieve this?