Faits : A. Le 29 septembre 2011, B._ Sàrl a commandé à A._ SA une étiqueteuse LCA Compact et un appareil de codage pour le montant de 9'700 fr. au total, installation comprise. Un acompte de 2'000 fr. a été versé. Parce qu'un délai de deux semaines était nécessaire pour la livraison des appareils commandés, le fournisseur a mis à disposition de la cliente une étiqueteuse de remplacement. En dépit de travaux de correction des défauts et de réglage exécutés par les techniciens du fournisseur, cet appareil n'a pas donné satisfaction. La cliente a mis fin au contrat par courrier du 19 octobre 2011; elle déclarait tenir le matériel prêté à disposition du fournisseur et elle réclamait la restitution de son acompte. Par lettre du 26 octobre 2011, le fournisseur a rappelé les termes du contrat conclu; il avertissait sa cliente que si elle persistait dans sa volonté d'annulation du contrat, elle lui réclamerait une indemnité de 4'220 fr., plus 40 fr. par jour pour « l'appareil de location » ( Mietgerät ) dès le 28 octobre 2011. Le 3 novembre 2011, la cliente a confirmé sa volonté de mettre fin au contrat. Elle alléguait n'avoir pas subi que de simples désagréments; sa production avait dû être interrompue en raison des défaillances de l'étiqueteuse de remplacement, alors qu'elle livrait plus de deux mille plats cuisinés par jour et que cette activité exigeait un appareil en état de marche. Elle réclamait aussi la restitution de l'acompte versé. Par courrier de son mandataire du 9 décembre 2011, le fournisseur a répété le point de vue exprimé dans sa lettre du 26 octobre 2011 et indiqué qu'il retiendrait pour ses frais l'acompte de 2'000 fr. versé par la cliente, auquel s'ajoutait un montant arrondi à 2'000 fr. pour la mise à disposition de l'étiqueteuse de remplacement. B. Le 31 juillet 2012, A._ AG a ouvert action contre B._ Sàrl devant le Tribunal civil des Montagnes neuchâteloises et du Val de Ruz. La défenderesse devait être condamnée à payer 9'700 fr. au titre du prix de vente convenu, et la demanderesse offrait de livrer le matériel commandé. Sous menace de l'amende prévue par l'art. 292 CP, la défenderesse devait être condamnée à restituer le matériel de remplacement dans les dix jours de l'entrée en force du jugement. Elle devait être condamnée à payer 8'080 fr. à titre d'indemnité d'utilisation de ce matériel, augmentés de 40 fr. par jour à compter du 1er mars 2012 et jusqu'à la restitution. Les sommes réclamées devaient porter intérêts au taux de 5% par an dès le 30 septembre 2011. La défenderesse a conclu au rejet de l'action. Elle a pris des conclusions reconventionnelles: la demanderesse devait être condamnée à payer 12'000 fr. à titre de restitution de l'acompte et dommages-intérêts, avec intérêts au taux de 5% par an dès le 29 octobre 2011; la défenderesse offrait de restituer le matériel de remplacement. La demanderesse a amplifié ses conclusions pour réclamer aussi le remboursement de frais d'avocat avant procès, au total de 5'625 francs. Le tribunal s'est prononcé le 11 décembre 2013. Il a rejeté l'action principale; accueillant partiellement l'action reconventionnelle, il a condamné la défenderesse à restituer à la demanderesse 2'000 fr. avec intérêts au taux de 5% par an dès le 21 octobre 2011. La demanderesse a appelé du jugement. Le matériel de remplacement avait été restitué le 29 août 2013 et la demanderesse réclamait désormais 27'960 fr. à titre d'indemnité pour son usage prolongé. Pour le surplus, ses conclusions d'appel correspondaient à celles précédemment articulées. La Cour d'appel civile du Tribunal cantonal du canton de Neuchâtel a statué le 6 novembre 2014; elle a rejeté l'appel. C. Agissant par la voie du recours en matière civile, la demanderesse requiert le Tribunal fédéral de condamner la défenderesse à payer 9'700 fr. au titre du prix de vente convenu, sous déduction de 2'000 fr. au titre de l'acompte reçu; elle offre la livraison du matériel commandé. La défenderesse doit aussi être condamnée à payer 27'960 fr. à titre d'indemnité pour l'usage prolongé du matériel de remplacement. Les sommes réclamées doivent porter intérêts au taux de 5% par an dès le 30 septembre 2011. Des conclusions subsidiaires tendent à l'annulation de l'arrêt de la Cour d'appel et au renvoi de la cause à cette autorité pour nouvelle décision. La défenderesse conclut au rejet du recours.