-
Notifications
You must be signed in to change notification settings - Fork 39
Introduce a release cycle #160
Comments
I'm uncertain what kind of release cycle would be most beneficial to our users. One idea is to make one release per year. The release date would be around this time, after the Eurobot finals, but before the rules for the new season come out. Another way of dealing with such an organic process is to use Semantic Versioning. To be honest, I think not doing a release and instead maintaining a changelog (see past "changelogs") is the best option for us. It is reasonably simple to do, and gives our users a better overview over what has changes. What requirements and improvements do our contributers and users want to add to this? |
I'm okay with not having releases at the moment, because xpcc is (still?) changing rapidly, so it wouldn't really work (unless there are more frequent releases). Most of the time the reason I had to update was because I needed something immediately to be able to continue (or I could maintain my patches locally, but that would be even worse). One way that I think versioning and releases could work, is by breaking up xpcc into modules. This would solve the problem you stated, and would also make it possible to have a few really stable "core" modules, but also less stable 0.x.y, or even unversioned ones. Of course, this has to be implemented in a way that's easy to use (maybe it's possible to reuse an existing package manager?). The downside is that this takes a lot of developer time. |
We at the Roboterclub just track upstream The only thing I would think of that might help is if big changes would be tested for a little bit longer before merging the pull request. For example we disabled the TLSF allocator when it was made default as that was a rather quick decision and apparently we were right in doing to as there was a bug with it (#136) |
The current approach is bit tricky for people who aren't actively involved in the development of xpcc, or regulars at the RCA meetings. I'm not aware of the userbase of xpcc, but i'd expect that not all can be actively involved in its development. What might also be of interest: Does everybody use all the parts and platforms of the system at once? |
Thanks for contributing! However, from this discussion I can see three major requirements:
Let's discuss these in more detail. 1. Better communication of changes to xpccI will be adding a detailed Changelog to xpcc. It will group several commits or PRs into a "feature" and describe and grade it's impact on xpcc. The changelog is continuous with the finishing date as "version" and recent changes added on top. Note that small fixes and features are not placed into the changelog. The idea is to give a good overview over the changes so that developers that are not actively following xpcc development along get an easy understanding of how the changes impact their code. Example format:
2. Better testing of changes@strongly-typed is consistently pushing for better testing. Furthermore we lack system level tests that assert more complex properties, such as system clock frequency, memory management, IO operations. However, @strongly-typed has built a very interesting proof-of-concept validator using a cheap logic sampler and SigRok analyzer via the Keep in mind, that the priority of CI in hardware is not very high though, because it is very complicated. 3. Modularization of xpccThe elephant in the room. Ignoring our special HAL generation (the stuff in I originally wanted to use Yotta, but it is being re-evaluated and hasn't seen much development recently, so I recommend we look at Conan. As far as I understand, Conan is not yet ready to deal with microcontroller targets. There has been a discussion on microcontroller targets started by @astralien3000 (who's Aversive++ framework already uses Conan), to which I contributed too. Most notably, Conan does not have a Software Construct integration, and I'm leaning towards writing the new build system in something a little more standard and more actively developed like CMake. SCons is not very accessible in terms of documentation and community. The HAL generation part will have to be custom made anyways, and I suggest we use @dergraaf's library builder, which he wrote for this purpose. HOWEVER, I'm not sure modularization is really a good idea. Sure it allows proper semantic versioning of correctly scoped modules, but it also dramatically increases the work to keep interfaces aligned across different modules. I'm not certain we can spare the effort to modularize xpcc, especially because it is not widely used. Furthermore there are only a few parts of xpcc that are not dependent on our HAL (like To be clear: I won't be putting any work in the modularization of xpcc. I'm more interested in cleaning up our HAL generation capabilities (using the library builder) and making this technology more accessible to outside contributions (perhaps in a separate repo). It is the distinguishing feature of xpcc after all and is, as far as I know, the only HAL generator of its kind. |
Hello ! I Just want to answer about the modularization, even if it is not the high priority. Indeed, the official conan is not ready for microcontroller targets, but I have a working version that can handle some MCU as a proof of concept. Actually adding targets to Conan is not difficult, since it let the package handle the build chain. The current blocking point is to be able to add some targets easily with a configuration file. I have not worked on it for 1 month because I am on other projects, but I think it is not so hard. But you talked about some hardware independent modules (math ?) that could be easily modularized. I may be interested in helping to make some modules. Or even doing it alone ? |
Hm,
Though I'm not entirely sure how useful a free floating |
A changelog has been added and we're doing quarterly releases now. Regarding modularization: we're hard at work on this over at @modm-io. |
xpcc does not have any releases, instead you use the latest changes on the develop branch.
This is not always desirable since develop is sometimes still unstable, despite our best effort.
I would like to discuss some options for introducing a release cycle.
The text was updated successfully, but these errors were encountered: