1. Introduction
Free and open-source applications for precision agriculture are becoming increasingly popular as they offer an affordable and accessible alternative to proprietary systems. These applications—which are freely licensed to use, copy, study, modify and/or improve [
1]—provide farmers with access to data and tools that can help them make informed decisions about their crops and land management. Free and open-source applications for precision agriculture can also help farmers to better monitor and manage their resources, as well as to increase their yields and reduce their environmental impact. Additionally, these applications can independently be built upon to develop innovative solutions to address specific challenges in the agricultural sector [
2], something which would be difficult or even impossible with proprietary solutions [
3]. These innovative technologies have been improved by incorporating software, hardware, and data [
4].
Precision agriculture is a technological or agricultural management approach that uses various sources of data and information from sensors, satellite images, global positioning systems, and specific software to make more accurate and personalized decisions at all stages of the agricultural production process [
5]. Through the application of these technologies, it is possible to identify issues and better explore these cultures, while being able to monitor weather conditions, analyze soil and plants, and apply inputs more efficiently [
6]. Precision agriculture can be seen as a subsection of precision practices facilitated by technological advances [
7]. Precision practices occur in four main stages: data collection, planning, implementation, and culture management [
6].
Increasingly, agricultural production has been benefiting from open source technological applications for precision practices, leveraging their cost-reduction potential to promote agricultural sustainability [
8,
9]. Information and communication technology (ICT) solutions, such as artificial intelligence (AI), machine learning, and the Internet of Things (IoT), are being used to improve the efficiency and accuracy of agricultural processes. AI can be used to monitor crop health, detect pests, and predict crop yields. Machine learning can be used to analyze large datasets and identify patterns in agricultural data. IoT can be used to connect different devices and sensors in the field to provide real-time data and insights into crop health, soil conditions, and weather patterns [
10].
There are several options in terms of free and open-source technologies and software for precision agriculture, and selecting a context-appropriate technological tool from among those available can be crucial in obtaining good results [
11]. Therefore, technology transfers of open-source software can be an essential and transformative activity for precision agriculture, bridging the gap between theory and reality [
12].
The selection of free and open-source software for agricultural purposes is based on a number of factors, such as its technical features, maintenance burden (and its associated cost), ease of use, documentation, security, and compatibility with existing systems [
13,
14]. In essence, it is crucial to ensure that the software is able to meet the requirements of the agricultural sector and is able to handle the data and tasks efficiently.
According to De Oca and Flores [
15], the development of open-source software aimed at precision agriculture has grown thanks to the involvement of three main technologies: computer vision, drones, and AI. Recently, a series of studies also propose using sensors to monitor production, improving the quality and quantity of crop data, and allowing, together with the appropriate software, to provide information, reminders and alerts to farmers [
16].
In order to ensure the success of these initiatives, it is important to understand the needs of the farmers, the existing infrastructure, and the available technologies. Additionally, it is essential to identify the most suitable and cost-effective solutions to meet the requirements of the farmers and to ensure that the data collected is accurate, secure, and reliable. Finally, it is necessary to develop strategies to ensure that the data collected is used to improve the efficiency of the agricultural production process [
17].
Faced with this scenario, we carried out a rapid review [
18] with the goal of identifying free and open-source software capable of solving real-world problems in precision agriculture. For this purpose, we simplified the PRISMA extension for scoping reviews [
19], adapting it to the topic under investigation [
20] in the context of a rapid review [
18]. Searches were carried out in electronic databases, drawing attention to current field-wise demands—as well as their interrelationships—and highlighting the programming languages used in their development and integration. The purpose of this investigation is to understand the tools and technological solutions available to meet the specific requirements of precision agriculture, thus providing a decision support document to stakeholders [
21] of this increasingly popular approach.
This paper is organized as follows.
Section 2 presents the methods used in this review, namely, information sources, search strategy, eligibility criteria, and selection procedures, and data items extracted from each selected work.
Section 3 presents the results, summarizing the selected works and extracted data, and offering a narrative synthesis of the applications found.
Section 4 provides a discussion and critical analysis of this research, as well as of its limitations. Finally,
Section 5 puts forward our final considerations.
2. Methods
2.1. Information Sources
For the purpose of this rapid review, we used Google Scholar, GitHub, and GitLab as electronic data sources, as shown in
Table 1, together with the respective URLs. The most recent search was carried out in October 2022.
Google Scholar is a free and accessible search engine that organizes a variety of scientific scholarly publication formats, and is currently the most comprehensive database of scientific articles [
22]. In turn, GitHub and GitLab are publicly available and searchable open-source software repositories. In particular, GitHub is by far the most used code repository in general [
23] (with GitLab comfortably in second position [
23]), and in scholarly publications in particular [
24].
2.2. Search Strategy
The works discussed in this review were identified by the following search string:
(“open-source software” and “precision agriculture”)
After defining the search string and the data sources to be searched, the key terms corresponding to each of the information sources were also created. Key terms are defined junctions within the search string and separated by quotes.
Table 2 presents the information source and the respective search strings. Some tweaks within the search strings column are also presented. In the Google Scholar database row, exclusion attributes are added, and, in the GitHub and GitLab database rows, search strings were defined and carried out by topic.
Searches were conducted by the first author, with results revised by the second author over multiple iterations according to the selection procedure discussed in the following subsection.
2.3. Eligibility Criteria and Selection Procedure
After defining the search string for each information source, it was necessary to define the inclusion and exclusion criteria. If a specific work is eligible according to these criteria, it is automatically selected. Care is taken so that possible duplicate entries are merged.
The following inclusion criteria were considered for this review:
Works focused on precision agriculture;
Works consisting of free and open-source software with full source code publicly available, preferably in a software repository such as GitHub, GitLab, or equivalent;
Works published between 2012 and 2022;
Source code must have been updated at least once in the last 3 years (counting down from October 2022);
Works only in the English language.
The rationale for selecting works published since 2012 is based on the availability and cost of unmanned aerial systems (UAS) and 4G technologies, essential for precision agriculture, and which started to become mainstream around that year [
25,
26]. With respect to works with code updated in the last 3 years, this was an empirically selected time interval to exclude deprecated or abandoned software, a common occurrence in open source projects [
27].
In turn, three exclusion criteria were defined, namely:
Applications not directly related to precision agriculture;
Farming simulator applications, farm simulator games;
Other games.
2.4. Data Items
For each selected work, we extracted six data items, namely:
Source code repository;
Year of publication;
Programming language(s);
User interface(s);
Category;
Keywords.
The source code repositories for the selected works are either found directly from the searches performed on GitHub and GitLab, or from the associated research paper found on Google Scholar (if there is such a paper, and if mentions the repository). The year of publication is taken from the publication date of the research article, or in case the work does not have an associated paper, the year of the first commitment on the respective source code repository.
The programming language in which an application is developed—although mainly of interest to developers—is especially important in free and open-source software, which can be freely modified, improved and extended. Developers or technically-oriented users should preferably consider software developed in a language they are familiar with, specifically if they intend to modify the source code and/or implement new features. Software can be developed in more than one language, and this should also be factored in the selection process, as it can increase development complexity. For the purpose of this review, programming languages were determined from the GitHub’s “Languages” feature, which details the languages used in a project by percentage, or, if this information was insufficient or nonexistent, by manually browsing the source code. We only consider languages that are used for developing the projects, ignoring languages used exclusively for documentation (e.g., HTML or Markdown) or for the build process (for example, Bash scripts or Makefiles).
The user interface defines the way that the end user interacts with the software in question. It can be a frontend interface, such as a graphical or text interface, or a backend interface, namely working as a library or as a plugin for another tool. The user interface may narrow the type of end users of a given package. For example, text interfaces—which allow a tool to be controlled via the command line—as well as libraries, are typically more suited to developers and/or technically-minded users. Several tools offer more than one type of interface, therefore broadening their scope of potential users.
Technology and software applications were grouped according to the following categories:
- A
Crop and climate protection and diagnosis;
- B
Nutrition and fertilization of crops;
- C
Crop irrigation;
- D
Soil management, planting, growing and harvesting crops;
- E
Production management, machinery and equipment.
Some applications, due to their varied number of features, fall into more than one category. In this case, they were placed in the category corresponding to their main functionality and purpose. However, since predefined categories may limit a broader understanding of the underlying topics, we additionally derived five keywords for each of the selected works. Keywords were agreed upon by the first and second authors, and were obtained from one or more of the following sources, ordered by relevance: explicit keywords in referenced article, if available; extracted from the abstract; extracted from the full article; and/or, obtained from the README file in the respective code repository. Keywords with similar meanings or different capitalizations were merged together as lowercase concepts. For example, “UAV”, “UAS”, “unmanned aerial vehicle”, or “drone” were merged into “uas”. Keywords directly pertaining to the research topic were explicitly ignored, namely “precision agriculture”, “open source”, “free and open source”, “software”, as well as possible combinations, as we expect these to be representative of all the selected works, and therefore would not provide a deeper understanding of the fundamental themes under discussion. Programming language names, such as Python or Java, were also ignored, as these are analyzed separately.
4. Discussion
A total of 21 projects were presented and summarized in the previous section. The information reported in this discussion is necessary to understand the standards and guidelines that free and open-source software aimed at precision agriculture point to, outlining the results obtained in this research.
Figure 1 displays a growth trend of works published on the theme of this research. This increasing trend suggests that free and open-source software will continue to have a significant impact on precision agriculture in the near future. Although this trend shows some clear advances in the provision of open codes in free repositories, making them available to academic communities, there are still some issues. For example, many of the repositories are poorly managed, with commits uploaded directly to GitHub, repositories containing ZIPs and executables instead of pure code, as well as incomplete documentation. Items 6, 12, 13, 16, and 19 in
Table 4 are a case in point.
The prevalence of specific programming languages in precision agriculture software can provide valuable insights into the tools, resources, and skills that are important in the field, as well as emerging trends and job opportunities. While the programming language in which a specific application is developed may not be relevant for farmers following precision agriculture practices, it is nonetheless an important consideration for the development community—programmers, developers, and tinkerers. As noted in
Figure 2a, the surveyed works are mostly developed in Python, and, at some distance, C/C++ and Java share the second position. While these results reflect the TIOBE index (which measures the popularity of programming languages on a monthly basis) for the period in which this review was conducted [
55], it should be highlighted that Python and C/C++ in particular are very common choices for IoT solutions with Arduino and Raspberry Pi [
56,
57], as implemented in several of the works present in this review. Additionally,
Figure 2b highlights that experience in multiple programming languages may be a factor in being involved with several open-source projects for precision agriculture.
The distribution of interfaces which end users can interact with is shown in
Figure 3. As discussed in
Section 2.4, four types of user interface were defined in this research:
text,
graphic,
library, and
plugin, and software packages can expose several of them simultaneously—indeed, approximately 33% of the surveyed works offer more than one interface, as highlighted in
Figure 3b. Observing
Figure 3a, it appears that there is a balance between the different interfaces available, namely text, graphical and library—plugins are the exception, accounting for less than 5% of the total. This data suggests that there are different types of end users with different aims, technical capabilities, and support requirements. Users who prefer graphical interfaces may be less technically proficient and/or seek applications for direct practical use in the (literal) field, while those who use text-based interfaces or libraries may be more technically apt, require more control or customization options, and/or are simply part of precision agriculture development community.
The application context by category is presented in
Figure 4, in which we observe that the category of soil management, planting, growing and harvesting (category D) corresponds to 23.8% of the works presented, while the protection, diagnosis of cultivation, and climate (category A) appears with 28.6% of the tools found. In turn, the management of production, machinery and equipment (category E) is—similarly to category D—being represented by 23.8% of the tools found. The irrigation of crops (category C) appears represented with 19%, and crop nutrition and fertilization (category B) with 5%. There is an almost homogeneous distribution between most of the categories, with the exception of category B, indicating a growth space to be explored by future projects.
The word cloud displayed in
Figure 5 highlights some of the core concepts underlying the selected works. Themes such as
automation,
monitoring, and
UAS clearly stand out, and are the main focus in most of the surveyed software packages. The importance of hardware such as the
Raspberry Pi and
Arduino, and the focus on
low-cost and/or
IoT solutions—possibly involving
GIS—is also emphasized in several of the selected works. Although this is a more subjective discussion, this keyword analysis is also notable due to some important concepts which do not seem to be addressed or considered in the selected works, therefore pointing to opportunities for future research into open source precision agriculture, as is the case of security [
58], interoperability [
59], quality assurance [
60], and the use of open data [
61].
While we analyzed and discussed several data items of interest, spanning a number of free and open source projects for precision agriculture, there are some limitations to consider. Rapid literature reviews, such as the one presented in this paper, provide a quick overview of the current state of knowledge on a particular topic. These can be useful for gaining a general understanding of a subject, but have a number of limitations, namely: (1) limited depth when compared with comprehensive scoping and systematic reviews; (2) risk of bias, since the search was carried out by the first author and non-methodologically revised by the second author, which may have lead to the exclusion of relevant studies, or a lack of rigor in the selection and appraisal of included studies; and (3) quality of evidence, since limiting the search to the sources mentioned in
Section 2.1 may have excluded relevant works, including unpublished or gray literature. Overall, we believe this paper will be a useful tool for quickly assessing the use of free and open source technologies on precision agriculture, but these limitations should be carefully considered before drawing conclusions or making decisions based on the presented findings.
5. Conclusions
In this article, a rapid review of the literature on free and open-source technologies and software for precision agriculture was carried out. The works were selected, mapped, and presented by their information source, source code repository, year of publication, programming language(s) used in development, offered user interface(s), category within precision agriculture, and relevant keywords. A total of 21 works were found, and the associated references argued for their effectiveness in precision agriculture, especially in situations where there is more than one success case for each software and when the existence of libraries and open-source software leads to the creation of even more and better solutions. The reviewed literature shows that the use of free and open-source software can lead to excellent results in the area, and that its use is expected to grow in the future, with hopefully more software available in public repositories, fostering testing and improvements by the community involved. Analysis of the extracted data showed that Python is currently the most used programming language in these works, and that their most common themes include automation, monitoring, IoT, and low-cost solutions, highlighting technologies such as UAS and GIS in general, and the Raspberry Pi and Arduino in particular. Free and open-source software can be used to leverage these technologies, creating precision farming systems. It is freely available and can be modified and redistributed, making it an attractive option for farmers who want to customize their precision farming systems to their specific needs. Additionally, open-source software can be used to create tools that allow farmers to cost-effectively collect, analyze, and visualize data. The review carried out in this article—although having some limitations due to its rapid nature—contributes to the understanding of open-source software aimed at precision agriculture and its availability.