|
[Sponsors] |
April 5, 2015, 19:05 |
Version numbering
|
#1 |
Senior Member
|
Dear all,
It is more or less a rant. Guess it was unfortunate day but still I am wondering if there is any logic behind OpenFOAM's version numbering? It consists of 3 digits (yet), let us say A.B.C. In general in OSS world version A.B.C is compatible with "(A\.B\..*)". And A.*.* is in general incompatible with (A+1).*.*. Still... While going from 2.2.1 to 2.2.2 naming of G field in turbulent models was suddenly changed. OK not a big issue. Still it has broken my turbulent models. 2.3.0 -> 2.3.1, wedge patch API changed. And it was not just addition of a methods, it was change of API (patchNormal -> n, cosAngle suddenly appeared). Well, this again broke my code. Is there a way to employ conditional compilation except by providing -D flag during compilation? Thanks for your attention. End of the rant. |
|
April 6, 2015, 07:45 |
|
#2 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Alexey,
You're not the first person to have this issue and certainly not the last. And if you had to support foam-extend and Caelus-CML, it would get even more crazy... For the macro's management system, two examples I can think of are:
Now, as for the reasons for these changes between minor versions... the main reasons are simple:
On the "resource" front, just compare:
Therefore, if there aren't enough resources to go around, then what do you propose for at least the following issues:
The closest to the optimum development line we've gotten so far for a "proper" line of development, was soon after OpenFOAM's 10th anniversary (~4 months ago?), Henry Weller finally made a public OpenFOAM-dev repository: https://github.com/OpenFOAM/OpenFOAM-dev/ This was asked... I don't know exactly how many years ago (probably since OpenFOAM 1.1 or before?), but the oldest accurate time frame I remember of was when this blog post was published: http://olesenm.github.io/2009/11/24/...FOAM-versions/ - back in November 2009, because of this thread: http://www.cfd-online.com/Forums/ope...1-5-1-6-a.html [RANT] Such a repository hadn't been made public sooner for several reasons... and OpenCFD's own development repository still isn't public either. But neither is Engys' nor ICON's forks, ever since from their own start of forking from OpenFOAM: http://openfoamwiki.net/index.php/Fo...Variants#Forks And do keep in mind that they are all entitled to do so! Now, in-spite of OpenFOAM's changes between minor versions, there is one great advantage that we have over any other closed source code: Anyone can do their own fork/variant and provide "proper" minor versions, similarly to how major Linux distributions patch the versions that are installed in each major version. But again, this requires resources, which if someone isn't willing to either pay for or contribute to, will likely never happen... or if it does, it will only work for as long as someone is willing to work on it. [/RANT] Best regards, Bruno |
|
April 6, 2015, 17:46 |
|
#3 | |||
Senior Member
|
Dear Bruno,
Thank you for the answer. Below are my comments (maybe too naive). Concerning conditional compilation, both examples use Allwmake script and pass OpenFOAM version number as external definition (swak4Foam creates header with #defines, waves2Foam pass version number via -D flag in Make/options file). So I guess there is no native mechanism for conditional compilation. Quote:
Quote:
Quote:
|
||||
April 6, 2015, 19:27 |
|
#4 | |||||
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Alexey,
Quote:
Quote:
Keep in mind that the company personnel is divided into 4 major sections:
Quote:
Perhaps what you're pushing for is that there should be 4 lines of development (i.e. the usual in OSS):
Quote:
Mmm... it doesn't sound like "very elegant code", and OpenFOAM is all about being elegant, in the sense of keeping the code easy to maintain... and not being a snowball of hacks on top of other hacks... Once OpenFOAM starts adding in more and more macros, it'll become a major mess to maintain But again, if you can make a good case for them to abide to either not making so many changes to the API between minor versions... Quote:
What I can imagine happening, based on your description, is that they will then have several variants of each library, which won't be compatible with all other libraries versions. The main way to avoid these weird massive changes between minor versions would be to make sure to have the whole API backbone properly defined for each major version and then enforcing that said API cannot change within the same major version. But what I expect their answer will be is something along these lines: if you're willing to sponsor or contribute such a feature, we'll do it and/or adopt it. The way I can see it happening, is if each major break that rose from bug fixes and implementations between minor versions is properly diagnosed and defined how it could have been avoided, they'll welcome the solutions that come with such a diagnosis endeavour. Best regards, Bruno |
||||||
April 14, 2015, 08:15 |
|
#5 | |||
Senior Member
|
Hi Bruno,
Thanks for your answers. Below again my maybe naive comments. Quote:
Quote:
Quote:
Cordialement, Alexey |
||||
April 19, 2015, 14:38 |
|
#6 | |||||||
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Alexey,
Quote:
As for strange changes... well, it's very hard to design a perfect infrastructure that never needs to be changed ever again. Quote:
Quote:
Quote:
For example, if OpenFOAM 2.3.0 was 2014a and 2.3.1 was 2014b. And then foam-extend would also have its own 2014a (3.1) and 2014b (3.1.1)... The decision for the numbers is somewhat simple - If the changes were only related to bugs and some features that were missing in the previous stable release, then it's still in the same major release. 2.3.0 and 2.3.1 share this fact and if you compare the two release notes pages:
Quote:
--------- By the way, did you check if the problem you initially referred to here on this thread is stated in the release notes for 2.3.1? --------- But let's see a practical scenario, based on a recent bug fix:
Best regards, Bruno |
||||||||
April 24, 2015, 12:37 |
|
#7 | ||||
Senior Member
|
Hi Bruno,
Thank you for the answer. Quote:
Unfortunately comparison with LibreOffice is not quite correct, as it is twice older, and surely have wider audience. Quote:
Quote:
Quote:
Cordialement |
|||||
April 24, 2015, 16:31 |
|
#8 | |||
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Alexey,
Quote:
Quote:
Quote:
Furthermore, GCC has (roughly) switched to that numbering convention about a year ago, when they began the development of GCC 5.0 and recently released 5.1, beginning 6.0 when 5.1 was released. The 5.0 was originally going to be 4.10, but they ended up deciding that the numbering was outdated. Their current development guidelines explain it in more detail: https://gcc.gnu.org/develop.html The Linux kernel did the same, when it was going to develop... what was it... 2.6.40? And instead switched to 3.0. Firefox, Chrome and a few others went ahead with tons of new versions, although they still follow the 3 or 4 number convention... it's just the major number goes up a lot more frequently. Took me a while to see your point, but now I do agree with you, at least for future developments. Fixing OpenFOAM 2.3 at this point would be... complicated In theory, this is possibly what they originally had in mind when they began OpenFOAM 1.0, but... things rarely goes exactly as planned in any number of situations . OK, I support this idea of yours! Go ahead and report this as a bug/feature request, I'll comment in favour of this idea as well! Best regards, Bruno |
||||
April 27, 2015, 11:26 |
|
#9 | ||
Senior Member
|
Hi Bruno,
Quote:
Quote:
N3 is a bug-fix branch. No new features, no API changes. So everything that works with N1.N2.N3 MUST work with N1.N2.(N3 + L) (but something that was not working in N1.N2.N3 MAY start working in N1.N2.(N3 + L) due to bug fixes). From one point of view this number is not significant, still it can be used for reference (like "the bug was fixed in 2.3.2"). Surely this approach introduces necessity to formalize WHEN this number is increased. N2 is a backward compatible API/ACI changes. In this branch new features are introduced. And finally N1 can introduce backward incompatible changes. Guess one can assume than software is completely rewritten between N1 and N1+1. (Hm, thought I have mentioned "semantic versioning" (http://semver.org) in my responses but can not find it in the thread, so guess that is why the proposal was not clear at all) |
|||
April 27, 2015, 16:32 |
|
#10 | |||
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Alexey,
Quote:
Quote:
Quote:
But I've got a feeling that it's more likely they'll accept the idea of going with mostly major versions, than abiding to this stricter version numbering of "major.minor.patch" . I say (write) this based on what I've seen so far in the development of OpenFOAM. They originally - OpenFOAM 1.0 to 1.4 - didn't even have patch versions and the minor versions were most of the time API/ACI incompatible between them. I do know of a case where the 3rd party code was resilient enough to go from 1.4.1 (or 1.5 ?) to 2.2 without the need for changes in the code: http://openfoamwiki.net/index.php/Contrib_icoStructFoam - but this is somewhat of a rare situation. Again, based on what I know, the most likely answers are:
Because from what I'm seeing so far in the 2.3.x repository... features from OpenFOAM-dev are coming into 2.3.x based on the criteria of being "mostly beneficial and stable". If this work-flow is going to change, it's going to likely only happen starting in the next major (or minor) version is released. This to say that if you really want this issue to be fixed, you better report this sooner than later! Best regards, Bruno |
||||
April 28, 2015, 04:19 |
|
#11 |
Senior Member
|
Hi Bruno,
http://www.openfoam.org/mantisbt/view.php?id=1674 and according to commentary from Henry there will be less API-breaking changes as they will go into -dev repository. |
|
April 30, 2015, 12:35 |
|
#12 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Alexey,
Many thanks for reporting it. And my apologies for not commenting in the bug report (only a few hours ago did I start looking into community topics), although I'm not sure what I could have stated, given Henry's answer. Nonetheless, if you or anyone else happen to spot API/ACI breaking behaviour, let us try and point it out to them as soon as possible. Best regards, Bruno |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[PyFoam] installation on Ubuntu 12.04 | vaina74 | OpenFOAM Community Contributions | 16 | July 30, 2015 04:47 |
libz.so.1: no version information available | dmaz | OpenFOAM Running, Solving & CFD | 3 | January 4, 2015 17:54 |
[Matlab] - Add toolbox to version R2012b. | darkluix88 | Lounge | 2 | October 23, 2014 11:23 |
OpenFOAM Patched Version 1.5 via git Repository | OpenFOAM discussion board administrator | OpenFOAM Announcements from ESI-OpenCFD | 0 | August 26, 2008 06:06 |
Version 12 speed compared to 11 | maka | OpenFOAM Running, Solving & CFD | 2 | December 21, 2005 06:42 |