During the past decades, software systems have grown significantly in size and complexity, making software development and maintenance an extremely challenging endeavor. Integrated Development Environments (IDEs) greatly facilitate this endeavor by providing a convenient means to browse and manipulate a system's source code and to obtain helpful documentation on Application Programming Interfaces (APIs).
But according to Ko et al., developers spent up to 40 % of their time with searching example usages and analyzing how to use a given API correctly ---quite a lot of time that is not used for its actual objective, the development of new features, but for understanding existing code and learning how to use existing APIs.
We argue that there is great space for improvement by exploiting collective intelligence, the knowledge of the masses. The leveraging of user data to build intelligent and user-centric web-based systems is the source of our inspiration. A Web 2.0 site allows its users to interact with each other as contributors to the website's content, in contrast to websites where users are limited to the passive viewing of information that is provided to them.
This mindshift in enableing users to contribute to a site has significant impact on the quality of services of existing websites. Amazon, the leading internet sales platform for books and electronic devices, for instance, creates
recommendations based on purchase behaviors of its customers or finds interesting similar products based on how customers interact with search results. Netflix, a video-on-demand service, features a web application that leverages user ratings on movies to recommend likely interesting movies to other users. These systems have in common that they leverage crowds to continuously improve the quality of their services, either through implicit feedback (e.g., user click-through behaviors), explicit feedback (e.g., ratings for movies) or user-generated content (e.g., product reviews and movie critiques).
We argue that today's IDEs behave more like traditional "Web 1.0" applications in the way that they do not enable their users to contribute and share their knowledge with others, neither explicitly nor implicitly, and thus hinder themselves to effectively exchange knowledge among developers. This thesis investigates how successful concepts of the Web 2.0 can be brought to today's IDEs and shows how existing IDE tools like code completion, documentation viewers, code-search, and bug detectors can be improved by leveraging the knowledge that is available in the developer's IDE