software repository a software repository colloquially known as a repo for short is a storage location from which software packages may be retrieved and installed on a computer overview many software publishers and other organizations maintain servers on the internet for this purpose either free of charge or for a subscription fee repositories may be solely for particular programs such as cpan for the perl programming language or for an entire operating system operators of such repositories typically provide a package management system tools intended to search for install and otherwise manipulate software packages from the repositories for example many linux distributions use advanced packaging tool apt commonly found in debian based distributions or yum found in red hat based distributions there are also multiple independent package management systems such as pacman used in arch linux and equo found in sabayon linux as software repositories are designed to include useful packages major repositories are designed to be malware free if a computer is configured to use a digitally signed repository from a reputable vendor and is coupled with an appropriate permissions system this significantly reduces the threat of malware to these systems as a side effect many systems that have these capabilities do not require antimalware software such as antivirus software most major linux distributions have many repositories around the world that mirror the main repository package management system vs package development process a package management system is different from a package development process a typical use of a package management system is to facilitate the integration of code from possibly different sources into a coherent standalone operating unit thus a package management system might be used to produce a distribution of linux possibly a distribution tailored to a specific restricted application a package development process by contrast is used to manage the codevelopment of code and documentation of a collection of functions or routines with a common theme producing thereby a package of software functions that typically will not be complete and usable by themselves a good package development process will help users conform to good documentation and coding practices integrating some level of unit testing the table below provides examples of package development processes selected repositories the following table lists a few languages with repositories for contributed software the autochecks column describes the routine checks done very few people have the ability to test their software under multiple operatingsystems with different versions of the core code and with other contributed packages they may use for r the comprehensive r archive network cran runs tests routinely to see how this is valuable suppose sally contributes a package a sally only runs the current version of the software under one version of microsoft windows and has only tested it in that environment at more or less regular intervals cran tests sallys contribution under a dozen combinations of operating systems and versions of the core r language software if one of them generates an error she gets that error message with luck that error message may suffice to allow her to fix the error even if she cannot replicate it with the hardware and software she has next suppose john contributes to the repository a package b that uses a package a package b passes all the tests and is made available to users later sally submits an improved version of a which unfortunately breaks b the autochecks make it possible to provide information to john so he can fix the problem this example exposes both a strength and a weakness in the r contributedpackage system cran supports this kind of automated testing of contributed packages but packages contributed to cran need not specify the versions of other contributed packages that they use procedures for requesting specific versions of packages exist but contributors might not use those procedures beyond this a repository such as cran running regular checks of contributed packages actually provides an extensive if ad hoc test suite for development versions of the core language if sally in the example above gets an error message she does not understand or thinks is inappropriate especially from a development version of the language she can and often does with r ask the core developmentteam for the language for help in this way the repository can contribute to improving the quality of the core language software language purpose package development process repository how to install collaborative development platform autochecks haskell common architecture for building applications and libraries cabal hackage java maven julia common lisp quicklisp net nuget nuget nodejs npm perl cpan ppm php pear composer pecl packagist python setuptools pypi pip easyinstall pypm anaconda r r cmd check process cran installpackages rforge roughly weekly on 12 platforms or combinations of different versions of r devel prerel patched release with up to 7 different operating systems different versions of linux windows and mac ruby rubygems ruby application archive rubyforge tex latex ctan parts of this table were copied from a list of top repositories by programming language on stack overflow many other programming languages among them c c and fortran do not possess a central software repository with universal scope notable repositories with limited scope include netlib mainly mathematical routines for fortran and c historically one of the first open software repositories boost a strictly curated collection of highquality libraries for c some code developed in boost later became part of the c standard library repository managers see also binary repository manager software to manage repositories repository managers includes apache archiva repository management software inedos proget universal package manager worldclass features accessible for everyone jfrogs artifactory managing binaries throughout the development cycle myget continuous delivery service hosting 1000s of nuget bower and npm package repositories packagecloud a unified developer friendly interface for all of your artifacts package drone a package manager repository for osgi sonatypes nexus works with build tools like ant ivy gradle maven sbt among others pulp free and open source platform for managing repositories of software packages and making it available to large numbers of consumers supported types rpm python puppet docker and ostree information technology portal package management system synaptic freebsd ports rpm package manager definitive media library dpkg simtel aptoncd 