Faits:
A.
A.a La société V.________ SNC (ci-après: V.________) a élaboré un logiciel informatique intitulé …. Celui-ci comprend un noyau d’applications usuelles destiné à tous les clients, sur lequel peuvent se greffer des développements spécifiques à chaque client.
Le groupe Z.________ est composé de plusieurs sociétés qui exploitent des laboratoires d’analyses et de recherches scientifiques et médicales. En font notamment partie A.Z.________ SA, B.Z.________ SA, C.Z.________ SA et D.Z.________ AG.
A.b Par offre écrite du 1er avril 1999, V.________ a proposé à A.Z.________ de développer un programme informatique sur mesure intitulé „…“, destiné à l’exploitation de laboratoires d’analyses médicales. Le coût pour le développement d’un tel programme était estimé à 25’000 ou 30’000 fr. Il était précisé que ce prix n’incluait pas les éventuelles adaptations spécifiques à certains sites autres que ….
Ces deux parties ont ensuite conclu un „mandat de projet“ daté du 21 avril 1999, qui portait sur la commande d’un logiciel correspondant à l’offre précitée pour un prix d’environ 30’000 fr. Elles ont en outre signé un „contrat de support logiciels: …“ daté des 17 avril et 6 mai 1999, dont l’objectif déclaré était de régler les modalités de maintenance des programmes du client. Cette convention conclue pour une durée indéterminée prévoyait une rémunération selon une base horaire en fonction des prestations fournies, les frais effectifs étant facturés après chaque intervention. Elle comportait notamment la clause suivante:
„9. Protection intellectuelle
Seul [sic] les modules faisant partie du noyau de base d’… (par exemple la comptabilité, Gestion fournisseurs, etc.) sont soumis à un droit de licence pour une utilisation multi-postes. Les modules développés spécialement sur mesure pour le client ne sont pas soumis à un droit de licence si ceux-ci sont utilisés sur plusieurs postes de travail différents au sein de l’entreprise, seul l’achat d’un run-time Magic supplémentaire est nécessaire.
Les programmes développés restent, en tout temps, la propriété totale de V.________. V.________ facture au client le développement souhaité et concède de ce fait un droit d’utilisation valable sur un seul ordinateur. Le client ne peut en aucun cas disposer de ce programme pour le revendre ou le transmettre de quelque manière que ce soit à des tiers, ou pour le faire modifier par une autre personne.
V.________ reste libre, dans tous les cas, d’utiliser les sources des produits développés comme bon lui semble et se réserve le droit de poursuivre pour dédommagement les personnes ou sociétés ne respectant pas ces conditions.“
Un avenant ayant la teneur suivante a été signé les 23 et 28 avril 1999:
„11. Développement pour un concurrent
Dans l’éventualité ou [sic] un autre laboratoire d’analyse s’intéresse à un programme identique à celui livré au client, V.________ le signalera afin que les deux parties puissent convenir des conditions éventuelles pour la revente de ce programme.“
Entre avril 1999 et fin juillet 2007, V.________ (devenue en janvier 2005 X.________ Sàrl) a développé un programme spécifique destiné à l’exploitation des laboratoires d’analyses médicales, en se fondant sur une partie des modules de base des logiciels … dans leur version originale de 1999; elle a aussi fourni des prestations de maintenance. Le logiciel développé pour le compte de A.Z.________ a été utilisé, au vu et au su de X.________, dans les laboratoires des sociétés du groupe Z.________ à Vevey, Bulle, Davos, Montreux, Lausanne, Yverdon, Morges et Neuchâtel. X.________ a participé aux travaux de traduction concernant l’utilisation du programme dans le laboratoire de D.Z.________. Elle a en outre accepté, à l’occasion de la fondation de B.Z.________, de délivrer une attestation sur la valeur du programme informatique qui devait être apporté en nature à la nouvelle société.
Pour la période précitée, le programme a coûté 393’693 fr., TVA non comprise. Cette somme a été payée par A.Z.________, B.Z.________, C.Z.________ et D.Z.________.
A.c Au début de l’été 2007, X.________ a connu d’importantes difficultés financières. Les associés gérants I.________ et J.________ ont informé les collaborateurs de la société que d’un commun accord, il avait été décidé que le premier quitterait la société au 1er août 2007 pour intégrer l’équipe de A.Z.________, solution qui permettait à l’associé sortant d'“assurer ses arrières“ et à la société informatique de réduire ses charges.
Le 9 juillet 2007, X.________ a adressé à I.________ une lettre que celui-ci a contresignée, dont la teneur était notamment la suivante:
„(…) Au vu des difficultés financières importantes de X.________ à ce jour, le préavis de sortie de six mois est abandonné. (…)
2. (…) Les droits et obligations découlant du fait que vous partez chez un de nos meilleurs clients, pour y assurer, entre autres, la maintenance et le suivi du programme … (…) seront réglés dans un document séparé. (…) (…)
9. Les travaux effectués dans l’exercice de votre activité au service de notre société restent notre propriété totale, sans limite dans le temps et dans la zone géographique. La seule exception, qui reste à préciser, concerne le programme de gestion sur mesure développé pour notre client Z.________ qui est votre nouvel employeur. Le noyau standard du logiciel …: comptabilité financière, gestion des contacts, gestion des débiteurs, gestion des créanciers, gestions salaires, comptabilité analytique, timbreuse, ainsi que toutes les sources des programmes sur mesure développés pour nos clients jusqu’à ce jour, restent notre propriété totale sans limite dans le temps et dans la zone géographique. (…)“
Toujours en juillet 2007, X.________ a adressé à A.Z.________ un document intitulé „Résiliation du contrat de support logiciels ‚…‘ et de son avenant, datés du 17 avril 1999“. Ce document comportait un article 9 consacré à la propriété intellectuelle. I.________ et J.________, lequel craignait qu’un nouveau composant … ne soit installé dans le logiciel de Z.________, ont échangé des courriels sur ce document, perçu comme peu clair. I.________ était d’avis qu’il „devrait être écrit plus clairement que le programme utilisé par Z.________ actuellement [était] leur propriété ou que X.________ renon[çait] à toute prétention“, cas échéant que J.________ „demand[ait] qqch pour que tel soit le cas“. X.________ a alors rédigé une seconde version du document, dont l’art. 9 avait la teneur suivante:
„Article 9 Protection intellectuelle
(…) Les modules faisant partie du noyau de base d’…, dont la liste exhaustive est annexée, reste [sic] et resteront la propriété totale de X.________, sans limite dans le temps et la zone géographique. Cela concerne aussi bien les sources de ces modules, l’usage et la modification de ces sources pour un usage ou une adaptation future propre à Z.________, que pour leur utilisation en tant que telle au sein du ou des programmes sur mesure … de Z.________. (…) (…)
Le programme sur mesure de Z.________ comportant certains anciens modules du noyau qui n’ont pas été réactualisés, tels que (liste exhaustive):
(…)
Ceux-ci sont considérés comme étant spécifiques à Z.________, et de ce fait, X.________ abandonne toute prétention sur ces modules, dans le cadre de l’usage qui en est fait au sein du groupe Z.________. X.________ concède donc le droit à Z.________ de modifier, et faire modifier, les programmes spécifiquement développé[s] pour le groupe Z.________.
(…)
En d’autres termes:
– X.________ abandonne toutes prétentions sur les logiciels … développés jusqu’à ce jour et installés au sein du groupe Z.________.
– Les prétentions de X.________ sur les quelques anciens modules du noyau, faisant partie de la liste ci-dessus, et qui font partie intégrante du programme Z.________, sont également abandonnés [sic]. Pour autant que soit déposé chez X.________, la dernière version du programme Z.________, qui doit servir de logiciel témoin.
– Les autres versions du noyau …, dont la liste est annexée, resteront toujours la propriété totale de X.________ et ne pourront être utilisés, modifiés et adaptés [sic] pour Z.________, sans l’accord explicite du fournisseur.
– En contrepartie, X.________, pourra utiliser tout ou partie des sources du programme Z.________ comme bon lui semble.“
Les parties ont continué à discuter de la problématique abordée dans le document précité. Elles se sont rencontrées le 28 novembre 2007 sans parvenir à trouver un accord.
A.d Des mots de passe sont nécessaires pour modifier les modules d’un programme. La demanderesse n’utilisait qu’un seul mot de passe, connu de I.________, pour l’ensemble de ses développements (module du noyau et module spécifique). Elle n’a pas modifié ce mot de passe. Les sociétés du groupe Z.________ sont ainsi devenues totalement autonomes pour effectuer des modifications sur l’application …. Elles n’ont plus eu besoin des services de X.________, laquelle a de fait perdu le contrôle de la diffusion des sources du logiciel „… Z.________“. A compter du mois d’août 2007, les sociétés du groupe Z.________ ont apporté des modifications ou développements extrêmement minimes sur le noyau, et faibles sur le spécifique. Ainsi, un module spécifique permettant la liaison entre l’ordinateur et un automate à étiquettes, dont la mise en place avait été achevée en juin 2007, a été très légèrement modifié en août 2007. Quant aux opérations de maintenance, elles ont été très probablement faibles à compter du mois d’août 2007.
B.
B.a Le 31 mars 2008, X.________ a actionné les quatre sociétés A.Z.________, B.Z.________, C.Z.________ et D.Z.________ par-devant la Cour civile du Tribunal cantonal vaudois. La demanderesse prétendait au montant total de 655’000 fr. Les quatre défenderesses ont conclu au rejet et ont pris des conclusions reconventionnelles en paiement de 19’520 fr. En cours de procès, la demanderesse a encore augmenté ses conclusions de 94’000 fr.
Par jugement du 5 mai 2011, la Cour civile a rejeté tant l’action principale que l’action reconventionnelle. En substance, elle a considéré que A.Z.________ n’avait pas contrevenu à ses obligations contractuelles en mettant le programme informatique à disposition des autres sociétés du groupe, respectivement en continuant à l’utiliser et en le modifiant de façon autonome après la fin des relations contractuelles.
B.b X.________ a déféré cette décision à la Cour d’appel civile du Tribunal cantonal. A titre principal, elle a émis des prétentions de 125’000 fr. pour l’appropriation illégitime du noyau du logiciel, de 83’333 fr. pour la cession indue de la partie spécifique du logiciel à B.Z.________, et de 167’210 fr. 95 pour la perte du gain qui aurait pu être réalisé avec les quatre intimées. Celles-ci n’ont pas été invitées à déposer une réponse.
L’autorité précitée a rejeté l’appel par arrêt du 3 janvier 2012.
C.
Par-devant le Tribunal fédéral, X.________ (ci-après: la recourante) interjette un recours en matière civile, dans lequel elle reprend les conclusions formulées dans son appel.
A.Z.________, B.Z.________, C.Z.________ et D.Z.________ (ci-après: les intimées) concluent au rejet du recours dans la mesure où il est recevable. L’autorité précédente se réfère à son arrêt.
Considérant en droit:
1. […]
3.
La recourante reproche à A.Z.________ d’avoir indûment mis le programme informatique „…“ à disposition d’une autre société du groupe, soit B.Z.________. Elle prétend à ce titre au paiement de 83’333 fr.
3.1 Aucune critique ne vise l’analyse des autorités cantonales selon laquelle les prétentions de la recourante relèvent de la responsabilité contractuelle et non de la propriété intellectuelle. N’est pas davantage contestée la conclusion qui en a été tirée, à savoir que la question du droit d’utiliser le logiciel doit se résoudre par l’interprétation du contrat. Ce point est dès lors acquis.
3.2 Saisi d’un litige sur l’interprétation d’un contrat, le juge doit tout d’abord s’attacher à rechercher la réelle et commune intention des parties, le cas échéant empiriquement, sur la base d’indices, sans s’arrêter aux expressions et dénominations inexactes dont elles ont pu se servir (art. 18 al. 1 CO; ATF 131 III 280 consid. 3.1). Pour ce faire, le juge prendra en compte non seulement la teneur des déclarations de volonté, mais aussi les circonstances antérieures et postérieures à la conclusion du contrat (sur ce dernier point, cf. par ex. ATF 129 III 675 consid. 2.3 p. 680), en particulier les projets de contrat, la correspondance échangée, etc. (BÉNÉDICT WINIGER, Commentaire romand, Code des obligations I, 2003, n°s 15, 25 et 32-34 ad art. 18 CO; ERNST A. KRAMER/BRUNO SCHMIDLIN, Berner Kommentar, 1986, n° 22 ss ad art. 18 CO). Cette interprétation dite subjective relève du fait et de l’appréciation des preuves (ATF 132 III 626 consid. 3.1; 131 III 606 consid. 4.1 p. 611).
S’il ne parvient pas à établir avec sûreté cette volonté effective, ou s’il constate que l’une des parties contractantes n’a pas compris la volonté réelle exprimée par l’autre, le juge recherchera le sens qu’elles pouvaient et devaient donner, selon les règles de la bonne foi, à leurs manifestations de volonté réciproques (application du principe de la confiance; ATF 136 III 186 consid. 3.2.1). Cette interprétation objective, qui relève du droit, s’effectue non seulement d’après le texte et le contexte des déclarations, mais également sur le vu des circonstances qui les ont précédées et accompagnées, à l’exclusion des circonstances postérieures (ATF 136 III 186 consid. 3.2.1; 119 II 449 consid. 3a).
3.3 La Cour d’appel, à l’instar de la Cour civile, a considéré que A.Z.________ avait le droit de mettre le programme litigieux à disposition de B.Z.________ et des autres sociétés du groupe. Ont été mis en exergue les éléments suivants: l’art. 9 du contrat de support prévoyait certes que le client ne pouvait en aucun cas disposer du programme pour le revendre ou le transmettre de quelque manière que ce soit à un tiers. Cette clause devait toutefois être relativisée, eu égard à l’avenant du 28 avril 1999 en vertu duquel X.________ s’engageait à discuter avec sa cocontractante des conditions de la revente éventuelle du programme à un autre laboratoire d’analyse. Cet élément montrait que la recourante n’avait pas à elle seule le pouvoir de disposer du logiciel développé spécifiquement pour les intimées. Quoi qu’il en soit, dès le début de leurs relations, les parties étaient convenues que le logiciel serait utilisable librement dans les laboratoires de toutes les sociétés du groupe Z.________. Cette possibilité était d’ailleurs évoquée dans la lettre du 1er avril 1999, laquelle précisait que les éventuelles adaptations spécifiques pour des sites autres que … n’étaient pas comprises dans l’estimation du prix. C’était précisément en conformité avec ces indications initiales que la recourante avait procédé à des facturations séparées pour chacune des sociétés. Dès l’automne 1999, le programme spécifique développé pour le compte de A.Z.________ avait été utilisé au vu et au su de la recourante dans les laboratoires de toutes les sociétés du groupe Z.________. La recourante avait accepté de délivrer une attestation de la valeur du programme informatique qui devait être apporté en nature à B.Z.________; ce faisant, elle ne pouvait ignorer que le logiciel constituait un actif de la société genevoise dès sa création. Enfin, l’art. 9 du document intitulé „résiliation du contrat de support“ rédigé par la recourante démontrait aussi que le programme était d’emblée destiné à toutes les filiales du groupe.
3.4 La Cour d’appel a fait sienne la constatation selon laquelle les parties étaient „convenues“ d’emblée d’une libre utilisation du logiciel par toutes les filiales du groupe. Elle a évoqué „l’appréciation des preuves effectuée par les premiers juges“, qu’elle a jugée adéquate. En bref, la cour cantonale a établi la volonté réelle des parties, en procédant empiriquement et en se fondant sur des circonstances antérieures et postérieures à la conclusion du contrat. Ce faisant, elle n’a en rien enfreint les principes déduits de l’art. 18 CO.
La recourante conteste avoir d’emblée convenu d’une libre utilisation du programme dans le groupe Z.________ et avoir eu connaissance du fait que le logiciel était utilisé par toutes les intimées. Toutefois, elle s’abstient de soulever le grief d’arbitraire et ne s’attache pas à démontrer de façon circonstanciée en quoi l’appréciation des preuves portée par la Cour d’appel serait arbitraire. Elle se contente de reprendre sous une forme quasi identique les arguments déjà invoqués en procédure d’appel, où le juge dispose d’une plus large cognition des faits que le Tribunal fédéral et où les exigences de motivation sont moins strictes (art. 310 et 311 al. 1 CPC). Au demeurant, la recourante ne discute pas à proprement parler les contre-arguments opposés par l’autorité d’appel. Le grief est ainsi irrecevable. L’on se contentera d’observer que la cour cantonale, contrairement à ce que paraît insinuer la recourante, n’a pas fondé le droit de libre utilisation du logiciel au sein du groupe sur l’art. 11 de l’avenant au contrat de support. Elle est tout simplement arrivée à la conclusion que pour les deux cocontractantes, les autres sociétés du groupe Z.________ ne constituaient pas des „tiers“ au sens de l’art. 9 du contrat de support; or, encore une fois, le caractère arbitraire de cette interprétation subjective n’a pas été invoqué.
4.
4.1 La recourante conteste avoir renoncé par actes concluants et sans contrepartie financière à son droit exclusif de modifier le logiciel et d’assurer sa maintenance, suite à l’engagement de I.________ par A.Z.________. Les intimées, qui pouvaient grâce à ce dernier accéder au code-source du programme, se seraient appropriées le logiciel de façon illégitime et devraient à ce titre payer 125’000 fr., correspondant au prix de revient estimé du noyau commun du programme. Les intimées devraient aussi répondre, en vertu des art. 377 ou 378 CO, du fait qu’elles ont résilié unilatéralement le contrat de support pour la maintenance et le développement du programme et auraient ainsi privé la recourante de la possibilité de réaliser des gains. En prenant pour référence de base les montants facturés pour ses interventions passées, la recourante conclut au paiement total de 167’210 fr. 95 à titre de gain manqué.
4.2 Les sources d’un programme, également désignées par le terme „code-source“, sont l’élément qui permet de maintenir le programme en état de marche, de l’améliorer et de continuer son développement. Sans la connaissance du code-source, la maintenance n’est pratiquement pas possible, ou seulement au prix d’un travail extrêmement long et ardu (BRUNO LEJEUNE, Code-source et contrats de logiciel, in Droit de l’informatique 1986 p. 2 et p. 8 note 4; cf. aussi ATF 125 III 263 consid. 4c p. 268). La question de savoir si le client a le droit de se voir remettre le code-source dépend de l’interprétation du contrat (PETER GAUCH, Der Werkvertrag, 5ème éd. 2011, n° 337). Il arrive fréquemment que le fournisseur du logiciel s’engage par un autre contrat à en assurer le suivi, ce qui lui permet de conserver le code-source et de s’assurer l’exclusivité de la maintenance, tout en garantissant au client la fonctionnalité de son système informatique (LEJEUNE, op. cit., p. 2).
4.3 Entre autres indices d’une renonciation de la recourante à l’exclusivité sur les sources du programme, les autorités cantonales ont invoqué la lettre du 9 juillet 2007 adressée à I.________. L’on peut donner acte à la recourante du fait que le chiffre 9 de cette missive ne permet pas de déduire un consentement à ce que les sociétés du groupe Z.________ puissent désormais modifier de façon autonome le logiciel conçu pour elles. D’une part, la recourante y réserve expressément le cas du „client Z.________“, en indiquant qu’il sera réglé dans un document séparé. D’autre part, elle précise que „toutes les sources des programmes sur mesure développés pour [ses] clients jusqu’à ce jour, restent [sa] propriété totale sans limite dans le temps“. Dans la mesure où le code-source est l’élément-clé pour développer et modifier un programme, le fait de se réserver la propriété des sources équivaut à s’assurer de l’exclusivité sur la maintenance et le développement du logiciel. L’on observe toutefois que les instances cantonales ne se sont pas fondées sur ce seul élément pour retenir un consentement de la recourante. Quoi qu’il en soit, il n’est pas nécessaire d’examiner plus avant si la Cour d’appel a contrevenu au droit fédéral en retenant, à tout le moins sur la base du principe de la confiance, une renonciation gratuite de la recourante à se prévaloir de son exclusivité sur les sources du programme; il n’est pas davantage utile de rechercher si l’interprétation subjective opérée par la Cour civile permettait de dégager une telle volonté. Il apparaît en effet qu’aucun dommage ne peut être retenu en relation avec une éventuelle violation du droit de la recourante sur les sources du programme.
4.4 Il ressort sans conteste de l’art. 9 al. 2 du contrat de support que la recourante se réservait la propriété du programme, et en particulier celle des sources, puisqu’elle niait aux intimées le droit de modifier le programme (cf. a contrario LEJEUNE, op. cit., p. 3). Dès lors qu’elle conservait le code-source, la recourante s’était logiquement engagée à assurer la maintenance du programme. Quant aux intimées, elles n’avaient en soi aucune obligation contractuelle de donner des „mandats de projet“ à la recourante; cependant, elles y étaient de facto obligées, puisque la maintenance et le développement du programme ne sont pratiquement pas possibles sans le code-source.
La connaissance du mot de passe contrôlant l’accès aux codes-sources a toutefois permis aux intimées d’utiliser ces sources pour procéder à de minimes modifications et travaux de maintenance, pour leur propre usage. A défaut d’une éventuelle renonciation à titre gratuit de la part de la recourante, les intimées auraient dû soit négocier l’achat du droit d’utiliser les sources, soit recourir aux services de la recourante, soit laisser le programme se figer. Dans ce contexte, le prix de revient du noyau du programme ne constitue pas un élément pertinent. Il s’agissait de chiffrer le prix d’achat du code-source en fonction notamment du coût qu’une renonciation à l’exclusivité du code-source revêtait pour la recourante, laquelle perdait ainsi la possibilité d’obtenir des mandats de maintenance et de développement; cas échéant, il incombait à un expert de déterminer ce prix. Or, il n’apparaît pas que la recourante ait allégué et établi le prix qu’elle aurait pu exiger de la part des intimées. Comme alternative, elle pouvait certes plaider, comme l’a relevé la Cour civile, que les travaux exécutés par I.________ dès le 1er août 2007 l’avaient privée d’un gain. Si l’on sait que les intimées ont fait procéder à de minimes modifications et travaux de maintenance, on ignore en revanche tout des montants que la recourante aurait pu facturer et des bénéfices nets qu’elle aurait pu réaliser pour ces travaux. Dans son mémoire, la recourante, qui traite la question du dommage, ne conteste pas ce point précis du jugement de la Cour civile, que l’autorité d’appel n’a pas rediscuté, mais jugé convaincant. Il s’ensuit que les prétentions de la recourante ne pouvaient qu’être rejetées, indépendamment de la question d’une éventuelle renonciation gratuite au droit d’exclusivité sur le code-source.
4.5 La recourante se plaint encore d’une violation de l’art. 377 CO ou de l’art. 378 al. 2 CO. La réglementation sur le contrat d’entreprise prévoit que tant que l’ouvrage n’est pas terminé, le maître peut toujours se départir du contrat en payant le travail fait et en indemnisant complètement l’entrepreneur (art. 377 CO). Par ailleurs, si l’ouvrage n’a pas pu être exécuté par la faute du maître, l’entrepreneur a droit à des dommages-intérêts (art. 378 al. 2 CO). Les premiers juges, dont l’analyse a été confirmée par la Cour d’appel, ont retenu un contrat d’entreprise principal portant sur la conception et le développement d’un programme informatique individualisé, ainsi qu’une succession de contrats d’entreprise pour les prestations de maintenance, qui faisaient l’objet de facturations spécifiques après chaque intervention.
Il a par ailleurs été constaté que l’ouvrage principal était déjà achevé en 2007 et qu’aucun travail de maintenance ou de développement du logiciel était en cours en juillet 2007. Il ne ressort pas non plus de l’état de fait que les intimées auraient confié un mandat à la recourante dont elle n’aurait pas encore commencé l’exécution.
La recourante ne soulève aucun grief d’arbitraire contre l’état de fait et ne prétend pas non plus que les juges cantonaux auraient méconnu la notion d’ouvrage terminé. Il n’est ainsi pas démontré que l’exécution d’un ouvrage aurait été interrompue ou empêchée, ce qui scelle le sort du grief.
[…]