Software bot

Last updated

A software bot is a type of software agent in the service of software project management and software engineering. A software bot has an identity and potentially personified aspects in order to serve their stakeholders. [1] Software bots often compose software services and provide an alternative user interface, which is sometimes, but not necessarily conversational.

Contents

Software bots are typically used to execute tasks, suggest actions, engage in dialogue, and promote social and cultural aspects of a software project. [2]

The term bot is derived from robot. However, robots act in the physical world and software bots act only in digital spaces. [1] Some software bots are designed and behave as chatbots, but not all chatbots are software bots. Erlenhov et al. [3] discuss the past and future of software bots and show that software bots have been adopted for many years.

Usage

Software bots are used to support development activities, such as communication among software developers and automation of repetitive tasks. Software bots have been adopted by several communities related to software development, such as open-source communities on GitHub [4] and Stack Overflow.

GitHub bots have user accounts and can open, close, or comment on pull requests and issues. GitHub bots have been used to assign reviewers, ask contributors to sign the Contributor License Agreement, report continuous integration failures, review code and pull requests, welcome newcomers, run automated tests, merge pull requests, fix bugs and vulnerabilities, [5] etc.

The Slack tool includes an API for developing software bots. [6] There are slack bots for keeping track of todo lists, coordinating standup meetings, and managing support tickets. The Chatbot company [7] products further simplify the process of creating a custom Slack bot.

On Wikipedia, Wikipedia bots automate a variety of tasks, such as creating stub articles, consistently updating the format of multiple articles, and so on. Bots like ClueBot NG are capable of recognizing vandalism and automatically remove disruptive content. [8]

Taxonomies and Classification Frameworks

Lebeuf et al. [1] provide a faceted taxonomy to characterize bots based on a literature review. It is composed of 3 main facets: (i) properties of the environment that the bot was created in; (ii) intrinsic properties of the bot itself; and (iii) the bot's interactions within its environment. They further detail the facets into sets of sub-facets under each of the main facets.

Paikari and van der Hoek [9] defined a set of dimensions to enable comparison of software bots, applied specifically to chatbots. It resulted in six dimensions:

Erlenhov et al. [10] raised the question of the difference between a bot and simple automation, since much research done in the name of software bots uses the term bot to describe various different tools and sometimes things are "just" plain old development tools. After interviewing and surveying over 100 developers the authors found that not one, but three definitions dominated the community. They created three personas based on these definitions and the difference between what the three personas see as being a bot is mainly the association with a different set of human-like traits.

The authors recommends that people doing research or writing about bots try to put their work in the context of one of the personas since the personas have different expectations and problems with the tools.

Example of notable bots

Issues and threats

Software bots may not be well accepted by humans. A study from the University of Antwerp [11] has compared how developers active on Stack Overflow perceive answers generated by software bots. They find that developers perceive the quality of software bot-generated answers to be significantly worse if the identity of the software bot is made apparent. By contrast, answers from software bots with human-like identity were better received. In practice, when software bots are used on platforms like GitHub or Wikipedia, their username makes it clear that they are bots, e.g., DependaBot, RenovateBot, DatBot, SineBot.

Bots may be subject to special rules. For instance, the GitHub terms of service [12] does not allow `bot` but accepts `machine account`, where a `machine account` has two properties: 1) a human takes full responsibility of the bot's actions 2) it cannot create other accounts.

See also

Related Research Articles

<span class="mw-page-title-main">Eclipse (software)</span> Software development environment

Eclipse is an integrated development environment (IDE) used in computer programming. It contains a base workspace and an extensible plug-in system for customizing the environment. It is the second-most-popular IDE for Java development, and, until 2016, was the most popular. Eclipse is written mostly in Java and its primary use is for developing Java applications, but it may also be used to develop applications in other programming languages via plug-ins, including Ada, ABAP, C, C++, C#, Clojure, COBOL, D, Erlang, Fortran, Groovy, Haskell, JavaScript, Julia, Lasso, Lua, NATURAL, Perl, PHP, Prolog, Python, R, Ruby, Rust, Scala, and Scheme. It can also be used to develop documents with LaTeX and packages for the software Mathematica. Development environments include the Eclipse Java development tools (JDT) for Java and Scala, Eclipse CDT for C/C++, and Eclipse PDT for PHP, among others.

<span class="mw-page-title-main">Xcode</span> IDE including tools for developing software for Apple platforms

Xcode is Apple's integrated development environment (IDE) for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, tvOS, and visionOS. It was initially released in late 2003; the latest stable release is version 15, released on September 18, 2023, and is available free of charge via the Mac App Store and the Apple Developer website. Registered developers can also download preview releases and prior versions of the suite through the Apple Developer website. Xcode includes command-line tools that enable UNIX-style development via the Terminal app in macOS. They can also be downloaded and installed without the GUI.

<span class="mw-page-title-main">Git</span> Software for version control of files

Git is a distributed version control system that tracks changes in any set of computer files, usually used for coordinating work among programmers who are collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows.

<span class="mw-page-title-main">Markdown</span> Plain text markup language

Markdown is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber and Aaron Swartz created Markdown in 2004 as a markup language that is intended to be easy to read in its source code form. Markdown is widely used for blogging and instant messaging, and also used elsewhere in online forums, collaborative software, documentation pages, and readme files.

JasperReports is an open source Java reporting tool that can write to a variety of targets, such as: screen, a printer, into PDF, HTML, Microsoft Excel, RTF, ODT, comma-separated values (CSV), XSL, or XML files.

<span class="mw-page-title-main">GitHub</span> Hosting service for software projects

GitHub, Inc. is a developer platform that allows developers to create, store, manage and share their code. It uses Git software, providing the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous integration, and wikis for every project. Headquartered in California, it has been a subsidiary of Microsoft since 2018.

In computer programming and software development, debugging is the process of finding and resolving bugs within computer programs, software, or systems.

Probabilistic programming (PP) is a programming paradigm in which probabilistic models are specified and inference for these models is performed automatically. It represents an attempt to unify probabilistic modeling and traditional general purpose programming in order to make the former easier and more widely applicable. It can be used to create systems that help make decisions in the face of uncertainty.

Continuous test-driven development (CTDD) is a software development practice that extends test-driven development (TDD) by means of automatic test execution in the background, sometimes called continuous testing.

<span class="mw-page-title-main">RIOT (operating system)</span> Real-time operating system

RIOT is a small operating system for networked, memory-constrained systems with a focus on low-power wireless Internet of things (IoT) devices. It is open-source software, released under the GNU Lesser General Public License (LGPL).

Example-centric programming is an approach to software development that helps the user to create software by locating and modifying small examples into a larger whole. That approach can be helped by tools that allow an integrated development environment (IDE) to show code examples or API documentation related to coding behaviors occurring in the IDE. “Borrow” tactics are often employed from online sources, by programmers leaving the IDE to troubleshoot. The purpose of example-centric programming is to reduce the time spent by developers searching online. Ideally, in example-centric programming, the user interface integrates with help module examples for assistance without programmers leaving the IDE. The idea for this type of “instant documentation” is to reduce programming interruptions. The usage of this feature is not limited to experts, as some novices reap the benefits of an integrated knowledge base, without resorting to frequent web searches or browsing.

<span class="mw-page-title-main">Zen of Python</span> Programming language design principles

The Zen of Python is a collection of 19 "guiding principles" for writing computer programs that influence the design of the Python programming language. Python code that aligns with these principles is often referred to as "Pythonic".

<span class="mw-page-title-main">Visual Studio Code</span> Source code editor developed by Microsoft

Visual Studio Code, also commonly referred to as VS Code, is a source-code editor developed by Microsoft for Windows, Linux and macOS. Features include support for debugging, syntax highlighting, intelligent code completion, snippets, code refactoring, and embedded Git. Users can change the theme, keyboard shortcuts, preferences, and install extensions that add functionality.

<span class="mw-page-title-main">WebAssembly</span> Cross-platform assembly language and bytecode designed for execution in web browsers

WebAssembly defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating interactions between such programs and their host environment.

Automatic bug-fixing is the automatic repair of software bugs without the intervention of a human programmer. It is also commonly referred to as automatic patch generation, automatic bug repair, or automatic program repair. The typical goal of such techniques is to automatically generate correct patches to eliminate bugs in software programs without causing software regression.

This is a timeline of GitHub, a web-based Git or version control repository and Internet hosting service.

<span class="mw-page-title-main">A-Frame (virtual reality framework)</span> Open-source web framework for virtual reality

A-Frame is an open-source web framework for building virtual reality (VR) experiences. It is maintained by developers from Supermedium and Google. A-Frame is an entity component system framework for Three.js where developers can create 3D and WebXR scenes using HTML. HTML provides a familiar authoring tool for web developers and designers while incorporating a popular game development pattern used by engines such as Unity.

<span class="mw-page-title-main">Secure Scuttlebutt</span> Decentralized social network

Secure Scuttlebutt (SSB) is a peer-to peer communication protocol, mesh network, and self-hosted social media ecosystem. Each user hosts their own content and the content of the peers they follow, which provides fault tolerance and eventual consistency. Messages are digitally signed and added to an append-only list of messages published by an author. SSB is primarily used for implementing distributed social networks, and utilizes cryptography to assure that content remains unforged as it is propagated through the network.

GitHub Copilot is a code completion tool developed by GitHub and OpenAI that assists users of Visual Studio Code, Visual Studio, Neovim, and JetBrains integrated development environments (IDEs) by autocompleting code. Currently available by subscription to individual developers and to businesses, the generative artificial intelligence software was first announced by GitHub on 29 June 2021, and works best for users coding in Python, JavaScript, TypeScript, Ruby, and Go. In March 2023 GitHub announced plans for "Copilot X", which will incorporate a chatbot based on GPT-4, as well as support for voice commands, into Copilot.

Soufflé is an open source parallel logic programming language, influenced by Datalog. Soufflé includes both an interpreter and a compiler that targets parallel C++. Soufflé has been used to build static analyzers, disassemblers, and tools for binary reverse engineering. Soufflé is considered by academic researchers to be high-performance and "state of the art," and is often used in benchmarks in academic papers.

References

  1. 1 2 3 Lebeuf, Carlene; Zagalsky, Alexey; Foucault, Matthieu; Storey, Margaret-Anne (2019). "Defining and Classifying Software Bots: A Faceted Taxonomy". 2019 IEEE/ACM 1st International Workshop on Bots in Software Engineering (BotSE). pp. 1–6. doi:10.1109/BotSE.2019.00008. ISBN   978-1-7281-2262-5. S2CID   195064960.
  2. Team, The SOBotics (September 17, 2019). "Meet the Bots that Help Moderate Stack Overflow". Stack Overflow Blog. Retrieved November 22, 2019.
  3. Erlenhov, Linda; Gomes de Oliveira Neto, Francisco; Scandariato, Riccardo; Leitner, Philipp (2019). "Current and Future Bots in Software Development". 2019 IEEE/ACM 1st International Workshop on Bots in Software Engineering (BotSE). Montreal, QC, Canada: IEEE. pp. 7–11. doi:10.1109/BotSE.2019.00009. ISBN   978-1-7281-2262-5. S2CID   195065273.
  4. Wessel, Mairieli; de Souza, Bruno Mendes; Steinmacher, Igor; Wiese, Igor S.; Polato, Ivanilton; Chaves, Ana Paula; Gerosa, Marco A. (November 1, 2018). "The Power of Bots: Characterizing and Understanding Bots in OSS Projects". Proceedings of the ACM on Human-Computer Interaction. 2 (CSCW): 1–19. doi:10.1145/3274451. S2CID   53235433.
  5. "Git your patches here! GitHub offers to brew automatic pull requests loaded with vuln fixes". www.theregister.co.uk. Retrieved November 22, 2019.
  6. Guay, Matthew (November 22, 2019). "How to Build a Slack Bot in 5 Minutes". Slack Blog. Retrieved November 22, 2019.
  7. Company, Chatbot (November 22, 2019). "Slack integration: AI Chatbot". LiveChat Inc. Retrieved November 22, 2019.
  8. "Meet the 'bots' that edit Wikipedia". BBC News. July 25, 2012. Retrieved September 19, 2021.
  9. Paikari, Elahe; van der Hoek, André (2018). "A Framework for Understanding Chatbots and their Future". Proceedings of the 11th International Workshop on Cooperative and Human Aspects of Software Engineering - CHASE '18. pp. 13–16. doi:10.1145/3195836.3195859. ISBN   9781450357258. S2CID   49562888.
  10. Erlenhov, Linda; Gomes de Oliveira Neto, Francisco; Leitner, Philipp (2020). "An empirical study of bots in software development: Characteristics and challenges from a practitioner's perspective". Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. Virtual Event, USA, Canada: ACM. pp. 445–455. arXiv: 2005.13969 . doi:10.1145/3368089.3409680. ISBN   9781450370431. S2CID   218971687.
  11. Murgia, Alessandro; Janssens, Daan; Demeyer, Serge; Vasilescu, Bogdan (2016). "Among the Machines". Proceedings of the 2016 CHI Conference Extended Abstracts on Human Factors in Computing Systems. pp. 1272–1279. doi:10.1145/2851581.2892311. ISBN   9781450340823. S2CID   13026142.
  12. "GitHub Terms of Service - GitHub Help". help.github.com. Retrieved November 22, 2019.