  With the advances in machine learning, there is a growing interest in
AI-enabled tools for autocompleting source code. GitHub Copilot has been
trained on billions of lines of open source GitHub code, and is one of such
tools that has been increasingly used since its launch in June 2021. However,
little effort has been devoted to understanding the practices, challenges, and
expected features of using Copilot in programming for auto-completed source
code from the point of view of practitioners. To this end, we conducted an
empirical study by collecting and analyzing the data from Stack Overflow (SO)
and GitHub Discussions. We searched and manually collected 303 SO posts and 927
GitHub discussions related to the usage of Copilot. We identified the
programming languages, Integrated Development Environments (IDEs), technologies
used with Copilot, functions implemented, benefits, limitations, and challenges
when using Copilot. The results show that when practitioners use Copilot: (1)
The major programming languages used with Copilot are JavaScript and Python,
(2) the main IDE used with Copilot is Visual Studio Code, (3) the most common
used technology with Copilot is Node.js, (4) the leading function implemented
by Copilot is data processing, (5) the main purpose of users using Copilot is
to help generate code, (6) the significant benefit of using Copilot is useful
code generation, (7) the main limitation encountered by practitioners when
using Copilot is difficulty of integration, and (8) the most common expected
feature is that Copilot can be integrated with more IDEs. Our results suggest
that using Copilot is like a double-edged sword, which requires developers to
carefully consider various aspects when deciding whether or not to use it. Our
study provides empirically grounded foundations that could inform developers
and practitioners, as well as provide a basis for future investigations.
