The GPL licenses are the de-facto best software licenses, unless you WANT companies to use your code in their proprietary programs. "Weak" licenses like MIT and BSD are effectively the same as making your code public domain, so it's pointless to use them. "Strict" copyleft licenses are the only way to ensure that you code remains free.
I suggest you read
this article. While the language may be slightly inappropriate, the point being made is extremely valid.
If your program runs standalone on a computer, use GPL-3.
If your program provides a service over a network, use AGPL-3.
If your program is a library intended to be used in other programs, use LGPL-3.
I advise against writing your own license for several reasons:
- Your license would first need to get approved by the FSF or OSI to be considered free software or open source.
- You might forget something which results in loopholes that have already been thought out in established licenses.
- Your code becomes incompatible with integration into other free software.
- Distributions might be reluctant to package your software.
- Your license might satisfy your requirements, but it might not abide by the FSF free software requirements or the OSI requirements, effectively not making it free software or open source.
I wouldn't worry about people selling your software. If it's available for free, I doubt anyone would pay money for it, unless they are very misinformed, in which case, it isn't really your problem.