Package development process: Difference between revisions

Content deleted Content added
m ISBNs (Build KE)
Arveeio (talk | contribs)
m Fixing a poorly worded sentence.
 
(27 intermediate revisions by 18 users not shown)
Line 1:
{{Short description|System developer}}
A Software '''Package development process''' is a system for developing [[Software package (installation)|software packages]]. Packages make it easier to reuse and share code, e.g., via a [[software repository]]. A formal system for package checking can help expose bugs, thereby potentially making it easier to produce ''trustworty software'' (Chambers' ''prime directive'').<ref>{{cite book
{{tone|date=August 2017}}
{{Lead rewrite|date=July 2023}}
A Softwaresoftware '''Packagepackage development process''' is a system for developing [[Software package (installation)|software packages]]. Such Packagespackages makeare it easierused to reuse and share code, e.g., via a [[software repository]]. A package development process includes a formal system for package checking canthat helpusually exposeexposes bugs, thereby potentially making it easier to produce ''trustwortytrustworthy software'' ([[John Chambers (statistician)|Chambers']] ''prime directive'').<ref>{{cite book
| last = Chambers | first = John M. | authorlink=John Chambers (statistician)
| title = Software for Data Analysis: Programming with R
| publisher = Springer
| year = 2008
| isbn = 978-0-387-75935-27
}}</ref> It may also include a standard for documentation, thereby making it easier for new users to learn how to use it.
}}
</ref> This in turn can help improve productivity for people who produce and use software.
 
==Discussion==
In this context, a ''package'' is a collection of functions written for use in a single language such as [[Python (programming language)|Python]] or [[R (programming language)|R]],. It may also be bundled with documentation. For many programming languages, there are [[Software repository|software repositories]] where people share such packages.
 
For example, a [[Python (programming language)|Python]] package combines documentation, code and initial set up and possibly examples that could be used as [[unit testing|unit tests]] in a single file with a "py" extension.
 
By contrast, an [[R (programming language)|R]] package has documentation with examples in files separate from the code, possibly bundled with other material such as sample data sets and introductory ''vignettes''. The source code for an R package is contained in a directory with a master "description" file and separate subdirectories for documentation, code, optionalor data sets suitssuitable for unit or regression testing, and perhaps others.<ref>{{cite book|title=Writing R Extensions |authorlink=<!-- R Development Core Team --> |url =httphttps://cran.r-project.org/doc/manuals/R-exts.html }}</ref> A formal package compilation process
<ref>{{cite news
| last = Leisch | first = Friedrich
| title = Creating R Packages: A Tutorial
| url =httphttps://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf }}
</ref><ref>{{cite news
<ref>{{cite news
| last1 = Graves | first1 = Spencer B. | last2 = Dorai-Raj | first2=Sundar
| title = Creating R Packages, Using CRAN, R-Forge, And Local R Archive Networks And Subversion (SVN) Repositories
| url =httphttps://cran.r-project.org/doc/contrib/Graves+DoraiRaj-RPackageDevelopment.pdf}}
</ref> checks for errors of various types. This includes checking for syntax errors on both the documentation markup [[language]] and the code, as well as comparing the arguments between documentation and code. Examples in the documentation are tested and produce error messages if they fail. This can be used as a primitive form of [[unit testing]]; more formal unit tests and [[regression testing]] can be included. This can improve software development productivity by making it easier to find bugs as the code is being developed. In addition, the documentation makes it easier to share code with others. It also makes it easier for a developer to use code written months or even years earlier. Routine checks are made of packages contributed to the Comprehensive R softwareArchive repositoryNetwork (CRAN) and under development in (the Comprehensivecompanion open-source collaborative development web site, R-Forge. ArchiveThese Network)checks <ref>{{citecompile webthe packages repeatedly on different platforms under different versions of the core R language. The results are made available to package maintainers. In this way, package contributors become aware of problems they might otherwise never encounter themselves, because they otherwise would not have easy access to those alternative test results.
| title=The Comprehensive R Archive Network | url =http://cran.r-project.org}}</ref> and under development in companion open-source collaborative development web site, R-Forge <ref>{{cite web | title = R-Forge | url=http://r-forge.r-project.org}}</ref>. These checks compile the packages repeatedly on different platforms under different versions of the core R language. The results are made available to package maintainers. In this way, package contributors become aware of problems they might otherwise never encounter themselves, because they otherwise would not have easy access to those alternative test results.
 
An interesting research question would be to compare the quality of contributions to different [[software repository|software repositories]] and try to relate that to features of the language and accompanying package development process, i.e., theThis degreecould ofinclude formalitytrying andto enforcementcompare ofthe standardsrate forof documentation,growth code,of andcontributed testing andsoftware to the ratedegree of growthformality ofand usageenforcement of contributedstandards softwarefor documentation, testing, and coding.
 
==See also==
* [[Package management system]] for combining software packages in different languages into an operating system.
* [[Software repository]] for collections of packages to share.
* [[Software development process]] or [[Software development methodology]] for a more general discussion of software development.
 
==References==