On Fri, Jan 31, 2025 at 3:15 PM raiden00pl <raiden0...@gmail.com> wrote:

> > No, just be super careful designing API to "userspace" and once commited
> it
> stays. Forever. Bad APIs will remain. Posix does not remove bad APIs as
> well.
> That's why we still have "creat" instead of "create". Or we have 3 poll
> APIs in
> Linux (select/poll/epoll). You really want to change API, you build another
> one,
> and mark old one as deprecated, but you don't delete it. That would be ok
> if
> Nuttx was <1.0.0, version, but it's >=1.0.0 so it should care about
> API/ABI.
> Especially that it does not have to come up with API and just use what
> Posix
> been using for decades now.
>
> I can't agree with this. Stockpiling legacy code degrades code quality, the
> code
> is harder to maintain and is harder to use by users.
> I think there are cases where it's justified to break compatibility.
> Especially if
> the breaking changes for the users are easy to fix and detect, and the
> interface
> that is being modified has obvious flaws. And of course, everything should
> be well documented.



We could make it one of the project's conventions that every time a
breaking change is merged, the commit that makes the breaking change must
also add documentation about it:

* What changed and why
* What changes our users must make when they update from older NuttX.

Where should this documentation be? I recommend a new file:

Documentation/ReleaseNotes/NuttX-Next.

When the release branch is cut, this file is renamed to NuttX-X.Y.Z (e.g.,
NuttX-14.0.0).

In that file, there should be a section for Breaking Changes.

Then, when someone needs to update to a newer NuttX, all they have to do is
go through the release notes and make the listed changes.

Nathan

Reply via email to