# Sweeprolog

> fully integrated development environment for SWI-Prolog in GNU Emacs

**Wikidata**: [Q114357863](https://www.wikidata.org/wiki/Q114357863)  
**Source**: https://4ort.xyz/entity/sweeprolog

## Summary
Sweeprolog is a fully integrated development environment (IDE) and Emacs mode designed for the SWI-Prolog programming language within GNU Emacs. Created by Eshel Yaron in 2022, it provides a cross-platform interface for developing, studying, and running Prolog code as free software.

## Key Facts
- Sweeprolog was founded on August 26, 2022, by creator and maintainer Eshel Yaron.
- It is a cross-platform tool that operates on any system supporting the GNU Emacs platform.
- The software is distributed as a NonGNU ELPA (Emacs Lisp Package Archive) package, a status it has held since September 30, 2022.
- It is primarily licensed under the 2-clause BSD License, following a brief period under the 3-clause BSD License in early September 2022.
- The environment is built using Emacs Lisp and integrates directly with SWI-Prolog.
- Copyright for the project is held jointly by Eshel Yaron and SWI-Prolog Solutions b.v.
- The project is identified in Nixpkgs as `emacsPackages.sweeprolog`.
- It reached version 0.6.1 as a rolling release by October 13, 2022.

## FAQs
### Q: What is the relationship between Sweeprolog and SWI-Prolog?
A: Sweeprolog is a specialized IDE and Emacs mode specifically built for SWI-Prolog. It allows users to write and execute SWI-Prolog code directly within the GNU Emacs environment, utilizing the language's features for semantic web and teaching applications.

### Q: How can a user install Sweeprolog?
A: Sweeprolog is distributed through the NonGNU ELPA, making it available as a standard Emacs package. It can also be found in the Nixpkgs repository under the identifier `emacsPackages.sweeprolog`.

### Q: Who is responsible for the development of Sweeprolog?
A: The software was created by Eshel Yaron, who remains the primary maintainer. Development is also supported by SWI-Prolog Solutions b.v., which holds copyright over specific components of the project.

### Q: Is Sweeprolog free to use and modify?
A: Yes, Sweeprolog is classified as free software. It is distributed under the terms of the 2-clause BSD License, which allows users to freely run, study, change, and distribute the software and its modified versions.

## Why It Matters
Sweeprolog serves as a critical bridge between two long-standing pillars of the logic programming and text editing communities: SWI-Prolog and GNU Emacs. SWI-Prolog, established in 1987, is a leading free implementation of the Prolog language used extensively in semantic web applications and education. By providing a "fully integrated" environment, Sweeprolog allows developers to leverage the extensibility of Emacs Lisp while working with modern Prolog logic.

The significance of Sweeprolog lies in its status as a NonGNU ELPA package, which simplifies the installation and update process for the Emacs user base. It replaces or augments traditional editing modes with a more deeply integrated experience that includes specific support for SWI-Prolog's unique features. As a cross-platform, free software tool, it ensures that logic programmers have access to a professional-grade development environment regardless of their operating system. Its dual copyright status with SWI-Prolog Solutions b.v. suggests a close alignment with the official SWI-Prolog ecosystem, providing a stable and reliable toolset for the community.

## Notable For
- **Deep Integration:** It provides a fully integrated development environment specifically tailored for SWI-Prolog within the GNU Emacs ecosystem, rather than acting as a simple text highlighter.
- **NonGNU ELPA Distribution:** As an official NonGNU ELPA package, it adheres to standardized distribution and maintenance protocols for Emacs users.
- **Rapid Early Development:** The project maintained a high velocity during its launch, progressing through multiple rolling releases (from 0.4.3 to 0.6.1) within its first two months.
- **Official Collaboration:** The project involves collaboration between individual creator Eshel Yaron and SWI-Prolog Solutions b.v., ensuring the tool remains relevant to the core Prolog implementation.

## Body

### Development and Inception
Sweeprolog was created by Eshel Yaron, with the project's inception dated to August 26, 2022. It was designed to function as both a source code editor and a dedicated Emacs mode for SWI-Prolog. The project is frequently referred to by the alias "Sweep."

### Licensing and Copyright
The software is categorized as free software. It transitioned to its current 2-clause BSD License on September 26, 2022. Prior to this, between September 1 and September 26, 2022, it was distributed under a 3-clause BSD License. Copyright for the project is shared between Eshel Yaron and SWI-Prolog Solutions b.v. Specifically, files such as `sweep.c` and `sweep.pl` are under the copyright of SWI-Prolog Solutions b.v., while the overall maintenance is handled by Yaron.

### Distribution and Versions
Sweeprolog is primarily distributed via the NonGNU ELPA. Notable rolling release versions documented in 2022 include:
- **0.4.3:** Released September 30, 2022.
- **0.4.7:** Released October 1, 2022.
- **0.5.0:** Released October 6, 2022.
- **0.5.4:** Released October 9, 2022.
- **0.6.1:** Released October 13, 2022.

### Technical Specifications
- **Platform:** GNU Emacs.
- **Operating System:** Cross-platform (applies to the GNU Emacs portion).
- **Programming Languages:** The tool is written in Emacs Lisp and integrates with SWI-Prolog.
- **Repositories:** Source code is hosted on multiple platforms, including SourceHut (`git.sr.ht/~eshel/sweep`), GitHub (`SWI-Prolog/packages-sweep`), and GNU Savannah.
- **Documentation:** An official user manual is maintained at `https://elpa.nongnu.org/nongnu/doc/sweep.html`.

## References

1. [[PATCH] Add BSD license](https://git.sr.ht/~eshel/sweep/commit/4ecc8ec55feb0e993f58df1338e802968290c072.patch)
2. [Source](https://git.sr.ht/~eshel/sweep/tree/main/item/LICENSE)
3. [[PATCH] Update LICENSE](https://git.sr.ht/~eshel/sweep/commit/f7dfbda2f2d580d55620b3c40aa795e891ab33bb.patch)
4. [Source](https://git.sr.ht/~eshel/sweep/commit/cada0d387148fc4c8a7589a339dea3394de6b690)
5. [Sweeprolog version 0.4.5. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-09/msg00085.html)
6. [Sweeprolog version 0.4.7. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00001.html)
7. [Sweeprolog version 0.5.0. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00009.html)
8. [Sweeprolog version 0.5.1. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00011.html)
9. [Sweeprolog version 0.5.2. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00014.html)
10. [Sweeprolog version 0.5.3. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00016.html)
11. [Sweeprolog version 0.5.4. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00018.html)
12. [Sweeprolog version 0.6.0. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00020.html)
13. [Sweeprolog version 0.6.1. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00026.html)
14. [Sweeprolog version 0.6.2. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00032.html)
15. [Sweeprolog version 0.6.3. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00041.html)
16. [Sweeprolog version 0.7.0. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00045.html)
17. [Sweeprolog version 0.7.1. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00050.html)
18. [Sweeprolog version 0.7.2. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00054.html)
19. [Sweeprolog version 0.8.0. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00059.html)
20. [Sweeprolog version 0.8.1. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00073.html)
21. [Sweeprolog version 0.8.3. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00016.html)
22. [Sweeprolog version 0.8.4. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00020.html)
23. [Sweeprolog version 0.8.5. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00021.html)
24. [Sweeprolog version 0.8.6. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00025.html)
25. [Sweeprolog version 0.8.7. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00034.html)
26. [Sweeprolog version 0.8.8. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00044.html)
27. [Sweeprolog version 0.8.9. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00055.html)
28. [Sweeprolog version 0.8.10. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00058.html)
29. [Source](https://git.sr.ht/~eshel/sweep/tree/main/item/NEWS.org)
30. [Sweeprolog version 0.8.12. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00066.html)
31. [Sweeprolog version 0.9.0. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00070.html)
32. [Sweeprolog version 0.9.1. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00075.html)
33. [Sweeprolog version 0.9.2. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00079.html)
34. [Sweeprolog version 0.9.3. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00089.html)
35. [Sweeprolog version 0.9.4. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-12/msg00015.html)
36. [Sweeprolog version 0.9.5. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-12/msg00024.html)
37. [Sweeprolog version 0.9.6. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-12/msg00053.html)
38. [Sweeprolog version 0.10.0. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-12/msg00073.html)
39. [Sweeprolog version 0.10.1. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00001.html)
40. [Sweeprolog version 0.11.0. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00013.html)
41. [Sweeprolog version 0.11.1. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00015.html)
42. [Sweeprolog version 0.11.2. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00016.html)
43. [Sweeprolog version 0.11.3. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00041.html)
44. [Sweeprolog version 0.12.0. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00045.html)
45. [Sweeprolog version 0.13.0. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00052.html)
46. [Sweeprolog version 0.14.0. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00060.html)
47. [Sweeprolog version 0.14.1. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00079.html)
48. [Sweeprolog version 0.15.0. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-02/msg00005.html)
49. [Sweeprolog version 0.16.0. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-02/msg00033.html)
50. [Sweeprolog version 0.17.0. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-02/msg00043.html)