W tym konkretnym przypadku jest to błąd w interfejsie API biblioteki używanej wewnętrznie, z której korzystają inni programiści.
Jeśli ci inni programiści myśleli, że takie zachowanie jest cechą, prawdopodobnie używali go i zbudowali na nim działające oprogramowanie . Naprawienie błędu prawdopodobnie spowoduje uszkodzenie istniejącego kodu i obwini za to ciebie. To sprawia, że naprawienie błędu jest kompromisem i trzeba to rozważyć
czy naprawdę ważne jest, aby naprawić błąd, na przykład ponieważ istnieje wysokie ryzyko, że użytkownicy Twojego interfejsu API zepsują swoje aplikacje, jeśli błąd nie zostanie naprawiony? A może chodzi o spójność interfejsu API?
czy ważniejsze jest utrzymanie stabilności istniejącego oprogramowania, a twoja biblioteka jest kompatybilna wstecz?
Odpowiedź na pytanie nie zawsze jest prosta, musisz wziąć pod uwagę liczbę potencjalnych użytkowników interfejsu API, potencjalną ilość pracy, jaką będą musieli zmienić oprogramowanie, ilość oprogramowania, która ulegnie awarii, jeśli zmienisz interfejs API , ale także ryzyko związane z tym, co może się stać, jeśli nie naprawisz interfejsu API.
To, że udokumentujesz zmianę poprawki na „liście przełomowych zmian w następnej ważnej wersji”, nie sprawia, że Twoi klienci są zadowoleni - jeśli to zrobisz, powinieneś mieć przynajmniej jakieś uzasadnienie, dlaczego nie możesz pozwolić API jako takiemu był wcześniej. Często utrzymanie zgodności wstecznej jest ważniejsze niż naprawianie błędu. Napraw to tylko wtedy, gdy potrafisz oszacować wpływ na bazę użytkowników i ich oprogramowanie i jesteś pewien, że nie podejmiesz nieuzasadnionych wysiłków, gdy będą próbować zaktualizować do najnowszej wersji biblioteki. A jeśli nie masz wystarczających informacji, aby dokonać dobrego oszacowania, prawdopodobnie lepiej nie zmieniać zachowania.
(I tak, jeśli zamierzasz dokonać zmiany interfejsu API, który nie jest kompatybilny wstecz, numery wersji muszą to wyraźnie wyrażać, nie ma znaczenia, czy nazwiesz to „poprawką”, czy nie).