Best thing to do is to do some searching and research on the internet. Asking an open question like this will basically require a 5000 word reply which I doubt anyone has the time to do.
This community is all about helping eachother out but you gotta do some of the work and ask a much more specific question. Here is some tips on asking good questions to get an answer: