If you dont want invest Bitcoins then Signature campaigns and social media campaigns are the best sources of Bitcoin nowadays.
If you can invest then learning trading would be a good option.
I agree with both suggestions but even better way to earn bitcoin is to learn some skills, like programming.
In this way, you can earn bitcoin for the work done, without risk.
Otherwise, other ways to earn bitcoins are sig. campaigns, collecting faucets, trading, HYIP, Casino, gambling etc.
So, either you have to invest money, time or work in order to earn bitcoins.
Faucets can be good for newbies who don't have any other idea to earn bitcoins and I don't have much faith in HYIPs, casino and gambling those are the fastest ways to loose money too so I will stick to signature campaign and trading to earn bitcoins.