Se o problema for comum, como, por exemplo, escrever um compilador ou um navegador, os requisitos serão dados na forma de padrões de idioma, sistemas operacionais de destino e hardware de destino, etc.
Para coisas como o GNU Emacs, que é muitas coisas para muitos, além de cumprir excelentemente seu objetivo original de ser um editor de texto, acho que os requisitos faziam sentido devido ao imenso escopo de estendê-lo. Chats, e-mails, grupos de notícias, edição de código, controle de versão vêm à mente. Há um cientista pesquisador trabalhando no Emacspeak. Acho que coisas semelhantes podem ser ditas sobre navegadores e outras coisas que permitem extensões.
Se o software está recuperando uma função que está disponível apenas em software não de código aberto, o requisito é praticamente dado novamente.
EDITAR:
Quando o software de código aberto continua com a manutenção e menos requisitos originais permanecem não atendidos, a maioria dos requisitos pode vir de bugs, é necessário se adaptar a novas plataformas, como CPUs com vários núcleos e outro hardware que ofereça melhor desempenho quando explorado.
Em um projeto totalmente baseado em pesquisa como o GNU Hurd, eu acho que os requisitos vêm de resultados e documentos de pesquisa.
Resumindo,
ao iniciar, os requisitos para o software que tenta resolver problemas comuns podem vir dos documentos de normas
para o software que está alcançando outro software existente, é provável que os requisitos sejam produzir todo ou quase todo o conjunto de recursos do software existente e alguns outros recursos que os desenvolvedores / usuários acham interessante ter
para projetos de pesquisa, artigos e outras publicações podem definir os requisitos
quando em manutenção, bugs, a necessidade de se adaptar a ambientes mais novos pode ser a principal fonte de requisitos