Faits : A. Dès le 1er juillet 1995, A._ est devenue locataire d'un appartement de quatre pièces et demie dans un bâtiment d'habitation sis à Lausanne; elle a alors repris un contrat de bail à loyer qui avait débuté en 1979. Des travaux de rénovation, comprenant notamment la pose d'un carrelage à la salle de bains, la réfection complète d'un local avec douche et toilettes, et la réfection complète de deux pièces, ont été exécutés aux frais de A.Z._ et C.Z._, alors bailleurs et copropriétaires de l'immeuble, conformément à un avenant au contrat daté du 27 octobre 2008. La plus-value correspondante a entraîné une augmentation du loyer. Celui-ci a aussi été régulièrement augmenté ou diminué selon l'évolution du contexte économique. Depuis le 1er juillet 2011, le loyer mensuel s'élève à 1'425 fr., frais accessoires compris; la locataire avait demandé une diminution le 28 janvier 2011. Le 23 mars 2011, les bailleurs ont résilié le contrat avec effet au 30 juin 2012. Par lettre du 4 avril 2011, ils ont exposé leur intention de procéder à une rénovation complète de l'appartement et de l'élever aux standards actuels, puis de le ré-offrir sur le marché locatif aux conditions de ce marché. Un mois auparavant, les copropriétaires avaient résilié les baux de six autres appartements loués dans le même bâtiment ou dans le bâtiment voisin, et fait état de la même intention. Dans deux de ces appartements, après le départ de leurs habitants, les copropriétaires ont fait exécuter des travaux aux montants d'environ 83'800 et 86'800 francs. A._ a saisi l'autorité de conciliation compétente afin de contester le congé. L'essai de conciliation n'a pas abouti et l'autorité a annulé le congé par proposition de jugement du 24 juin 2011. B. Les bailleurs se sont opposés à la proposition de jugement. Le 13 septembre 2011, ils ont conjointement ouvert action contre A._ devant le Tribunal des baux du canton de Vaud. Le tribunal était requis de constater la validité du congé signifié le 23 mars 2011; la défenderesse devait être condamnée à restituer l'appartement le 30 juin 2012 ou à l'expiration d'un délai de dix jours dès jugement définitif et exécutoire. Parmi divers chefs de conclusions, la défenderesse a réclamé principalement l'annulation du congé et, subsidiairement, la prolongation judiciaire du contrat pour une durée de quatre ans. Pendant l'instance, le 17 décembre 2011, les copropriétaires ont fait donation de la nue-propriété pour demeurer usufruitiers des immeubles avec leurs épouses B.Z._ et D.Z._; depuis, celles-ci sont également parties au procès en qualité de demanderesses. Le tribunal s'est prononcé le 16 juillet 2013 par un jugement dont il a communiqué l'expédition motivée le 28 janvier 2014; il a annulé le congé. Le tribunal a également annulé le congé signifié aux époux E.B._ et F.B._, locataires d'un autre appartement, dont la cause était jointe. C. Les demandeurs ont appelé du jugement et présenté des conclusions correspondant à celles de leur demande en justice. La Cour d'appel civile du Tribunal cantonal a statué le 29 juillet 2014; réformant le jugement, elle a constaté la validité du congé signifié à A._ et prolongé le contrat pour une durée de quatre ans, venant à échéance le 30 juin 2016. La Cour a également accueilli l'appel à l'encontre des défendeurs B._. La défenderesse A._ est condamnée à la moitié des frais et dépens de l'appel; l'autre moitié est imputée aux défendeurs B._. D. Agissant par la voie du recours en matière civile, la défenderesse A._ requiert le Tribunal fédéral de confirmer le jugement du Tribunal des baux. Subsidiairement, elle réclame que sa part des frais et dépens d'appel soit répartie entre elle et les demandeurs. Les demandeurs concluent au rejet du recours, dans la mesure où celui-ci est recevable.