Особенность программного обеспечения состоит в том, что оно производится в одной форме – в виде исходного текста (source code), а распространяется и используется в другой – в виде двоичной программы, машинных кодов, по которым невозможно однозначно восстановить исходный текст.
Чтобы изменять программу, исправлять ошибки или даже просто точно установить, что и как делает программа, необходимо располагать ее исходным текстом.
Первоначально создание программного обеспечения для компьютеров было в первую очередь академическим занятием. Для специалистов в области компьютерной науки (computer science) каждая программа представляла собой результат научного исследования, в некотором смысле аналогичный публикации статьи. Это означает, что исходный текст программы был обязательно доступен всему научному сообществу, поскольку любой научный результат должен быть верифицируем, т. е. подтверждаться другими исследователями и быть открытым для критики. Таким образом, процесс разработки программного обеспечения принципиально более схож с научным процессом: ученый брал существующие программы, исправлял их в соответствии со своими идеями и публиковал исправленные программы – новый результат.
Однако технология производства компьютеров развивалась не менее активно, чем программное обеспечение для них. В 1970-е годы существовало огромное разнообразие архитектур вычислительных машин, различавшихся и производительностью, и ценой. Естественно, для каждой архитектуры приходилось разрабатывать отдельный набор программного обеспечения. С середины 1970-х в большинстве американских университетов (где преимущественно и развивалась компьютерная наука) для академических разработок использовались компьютеры архитектуры PDP-10, что позволило сотрудникам разных университетов использовать разработки друг друга на своих машинах. Сотрудники лаборатории искусственного интеллекта массачусетского технологического института в конце 1970-х разработали для PDP-10 собственную операционную систему ITS (Incompatible Timesharing System, несовместимая система с разделением времени) и очень большой набор программ для нее. Исходные тексты написанных в МТИ программ были общедоступны, сотрудники других университетов пользовались их исходными текстами и присылали им исправления. Все программное обеспечение в этих лабораториях было полностью академическим, а среди ученых-разработчиков царил настоящий дух сотрудничества.
История Linux: от ядра к дистрибутивам | ПО как "патентованный" продукт |