Crowdsourcing using mobile devices, known as mobile crowdsourcing, is a powerful approach incorporating human wisdom into mobile computations to solve problems while exploiting the advantages of mobility and context-awareness. The problems that can be tackled include the use of geographically distributed tasks, and mobile sensing using the collective wisdom of the crowd. However, the implementation of mobile crowdsourcing applications has been found to be challenging to users due to the nature of dynamic sensing, crowd engagement with data distribution, and a process of data verification. In this paper, we provide an extensive survey of the literature on mobile crowdsourcing research, highlighting the aspects of particular concerns in terms of implementation needs during the development, architectures, and key considerations for their development. We present a taxonomy based on the key issues in mobile crowdsourcing and discuss the different approaches applied to these issues. We also provide a critical analysis of some challenges and suggest directions for future work. In particular, with the future Internet-of-Things in view, we generalize the notion of mobile crowdsourcing to thing crowdsourcing, where crowdsourcing can be issued from smart Internet-connected things that need to harness the human resources to solve problems.