Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.10.0 Release #2772

Closed
9 of 11 tasks
SergioRAgostinho opened this issue Jan 13, 2019 · 49 comments
Closed
9 of 11 tasks

1.10.0 Release #2772

SergioRAgostinho opened this issue Jan 13, 2019 · 49 comments
Milestone

Comments

@SergioRAgostinho
Copy link
Member

SergioRAgostinho commented Jan 13, 2019

I'll add the task list later. I just want to converge on the approximate date. I would propose early/mid April, after ICCV and IROS deadlines if I'm not mistaken.

I'm also looking to converge on the essential features to be released. I'm aiming at finishing the C++14 migration, or getting close to.

Tentative schedule:

  • May 12th June 9th - 1 5 week just to get the PRs out
  • May 26th June 23rd - 1-2 weeks to review everything.
  • June 9th July 7th - 1-2 weeks prepare the actual release. Revise PR labels and titles
@SergioRAgostinho SergioRAgostinho added this to the pcl-1.10.0 milestone Jan 13, 2019
@taketwo
Copy link
Member

taketwo commented Jan 19, 2019

👍 for keeping up with regular releases. We are still not a C++14 library when it comes to officially released versions, so the sooner the new version comes out, the better. I'm fine having April as our target, though I won't be strict about this.

As a long-term goal I would like to have Boost types in the library API to be replaced with std types (e.g. shared_ptr, function). Of course, this transition should not break source code level compatibility with previous releases. I don't have a clear strategy in mind yet, but it may be that a smooth transition would need to stretch over multiple releases. So I think we should figure this out soon and, in case a multi-phase transition is required, include the first phase in 1.10.

Edit: I've started #2792 to discuss smart pointer transition.

@claudiofantacci
Copy link
Contributor

As far as transitioning to C++14 and new release version is concernd, since moving from Boost to STL introduces breaking changes, shouldn't the targeted release for C++14 be a major one?
Not really sure whether I already discussed about this or not, but is PCL following SemVer? (btw, it would be useful to do so)

@SergioRAgostinho
Copy link
Member Author

I believe PCL 2.x.x was reserved for really big changes e.g. a templated free version of the library following in the footsteps of OpenCV. Without funding I don't see this happening, so I'm open to discussion on this.

The current status is:

  • 1.9.x to 1.10.x implies API breakage or serious behavior changes
  • 1.9.1 to 1.9.2+ implies full compatibility.

@claudiofantacci
Copy link
Contributor

@SergioRAgostinho thanks for the explanation 👍
If not written elsewhere, I would encourage to write this versioning meaning somewhere, e.g. in the main README file. What I would do is to use SemVer, but as long as something else is adopted and documented for me is just fine. 😄

@taketwo
Copy link
Member

taketwo commented Jan 30, 2019

I believe PCL 2.x.x was reserved for really big changes.

Exactly. (At least in my head) version 2 is reserved for a major revision of the library. Anything short of that would not fulfill expectations.

Is PCL following SemVer?

I'd say we loosely follow SemVer. The SemVer rules are:

  1. MAJOR version when you make incompatible API changes,
  2. MINOR version when you add functionality in a backwards-compatible manner, and
  3. PATCH version when you make backwards-compatible bug fixes.

On the PCL side we

  1. Reserve MAJOR for a large library revision.
  2. Bump MINOR at breaking ABI changes and (in certain cases) API changes
    1. When API change is minor and (supposedly) shouldn't affect many users or otherwise cause trouble
    2. When the change is removing APIs deprecated several MINOR revisions before.
    3. When the change happened by accident ;)
  3. PATCH is for fully-compatible updates, which occasionally may include new features.

@claudiofantacci
Copy link
Contributor

On the PCL side we

1. Reserve MAJOR for a large library revision.

2. Bump MINOR at breaking ABI changes and (in certain cases) API changes
   
   1. When API change is minor and (supposedly) shouldn't affect many users or otherwise cause trouble
   2. When the change is removing APIs deprecated several MINOR revisions before.
   3. When the change happened by accident ;)

3. PATCH is for fully-compatible updates, which occasionally may include new features.

Thanks! 👍
My two cents here is to write it somwhere, maybe even in the main README file so that people knows what to expect from a new release version 😄

@taketwo
Copy link
Member

taketwo commented Jan 30, 2019

My two cents here is to write it somwhere

Time, time... I've created an to-do issue though.

@claudiofantacci
Copy link
Contributor

Time, time... I've created an to-do issue though.

Eheh sure, didn't want to push anyone to rush for it 😄

@SergioRAgostinho
Copy link
Member Author

SergioRAgostinho commented Apr 25, 2019

I'm aiming at investing one week worth of time around early May (5th onward) to push for this release. @PointCloudLibrary/maintainers If any of you has some time to spare around that period let me know so we can decide on the goals and light sprints. @claudiofantacci and @SunBlack the same question and offer extends to you both.

Edit: Or anyone else who reads this post and wants to contribute.

@taketwo
Copy link
Member

taketwo commented Apr 25, 2019

I support the idea of pushing for the release, would be nice to get it out soon. Unfortunately I can not commit to spending much more time than I normally do, but I will try increase my availability for speedy reviews, discussions, and testing.

@SergioRAgostinho
Copy link
Member Author

Sounds good. Shall we have a quick chat over Skype/Slack/Gitter/something sometime between 2nd-3rd of May just to agree on the "work package"?

@taketwo
Copy link
Member

taketwo commented Apr 26, 2019

As far as I remember there is a Gitter room for PCL, so we can have an online discussion there. I'll be available first half of the day 2nd and during working hours 3rd.

@SergioRAgostinho
Copy link
Member Author

Works for me for the full periods you suggested. There is indeed a Gitter channel. Let's see if someone else joins in.

@SergioRAgostinho
Copy link
Member Author

Let's chat tomorrow 2PM CET on Gitter?

@taketwo
Copy link
Member

taketwo commented May 2, 2019

I have an exam appointment between 2 and 3 that quite unexpectedly landed in my schedule. Will be free to join immediately after.

@SergioRAgostinho
Copy link
Member Author

Let's start at 3 then. I'm not sure if anyone else will show up. ^^

@SergioRAgostinho
Copy link
Member Author

Testing the waters here: after noticing the potential API breakage that the transition from boost to std is causing I'm starting to question if it won't be better to call the new release PCL 2.0.0.

@taketwo
Copy link
Member

taketwo commented May 15, 2019

I'd be against. We've broken API on multiple occasions before and did not bump major version. If we were to follow strict semver, even when we remove deprecated functions we would need to do a major release! This we clearly don't do, so in PCL we tend to follow "loose" semver. With this in mind, I don't see a reason to suddenly become strict about potential (and hopefully mild) API breakage.

Now think about it this way. There is a library that doesn't strictly follow semver. This library makes 2.0 release. What would you expect from this release? I would expect new features, huge refactorings/rearrangements of modules, updates to the core. Certainly waaaay more than just s/boost/std/g. So I would feel totally like a blowhard if we call this PCL 2.0.

@Morwenn
Copy link
Contributor

Morwenn commented Jun 13, 2019

Semantic versioning has at least one big advantage: package managers tend to follow it when possible when asked to upgrade a library to a compatible version. I've been using PCL with Conan, and it does take into account semantic versioning when asked to pick compatible dependencies (and AFAIK considers anything that looks like semver to be semver).

If you had to switch versioning schemes, the most obvious thing to do would be to write a big disclaimer somewhere and to make sure that it is among the first things mentioned in the changelogs.

@vcarpani
Copy link
Contributor

Any updates on the release?

@SergioRAgostinho
Copy link
Member Author

Life took over and I have not been able to sit at the desk during my free time.

@taketwo
Copy link
Member

taketwo commented Sep 13, 2019

are there different compiler requirements between 1.9.1 and master (to be 1.10)?

Yes, 1.10 will require full support of C++14 standard. Therefore, I assume VS2013 will not work.

@kunaltyagi
Copy link
Member

@aslze As per this table and a quick grep for variadic templates, at least VS 2015.2 is required for PCL 1.10. I don't know how much the constexpr or default member init usage is. Maybe someone can compile using it since the CI uses VS 2017

@taketwo
Copy link
Member

taketwo commented Oct 18, 2019

My work on smart pointer transition has stalled a while ago and currently, I don't have time to proceed with it. This delays the next release (which is already overdue) by unknown time. I feel we should drop most of the items from the 1.10 milestone and release soon, the diff to the previous release is already enormous.

I've checked the milestone items and the TODOs from Sergio's list. I think the following two are the most important, the rest can be moved to 1.11:

@PointCloudLibrary/maintainers what do you think?

@SergioRAgostinho
Copy link
Member Author

I agree. Some of the pending items require some proper time investment in order be properly fixed.

As an example, I've tried at least 3 times to venture into finishing the migration of the random generators withing sample_consensus and in all three, I quickly ran out of time before being able to reach any meaningful conclusion as to why the changes were triggering unit test failures.

@SergioRAgostinho
Copy link
Member Author

I forgot to add, it is worth to merge #3345 as is and address the pending items later, if we are to close the milestone.

@simonschmeisser
Copy link

Just curious, is there a new estimate for when this will be released? There is about one month left for getting this into Ubuntu 20.04 which could be considered a goal? (Not saying it's still a realistic goal but even arbitrary deadlines can sometimes be helpfull ... 😉 )

@SergioRAgostinho
Copy link
Member Author

Good to know and agreed. I'll see what I can do. 😉

@kunaltyagi
Copy link
Member

I'm back from my holidays, so I can chip in

@taketwo
Copy link
Member

taketwo commented Jan 9, 2020

Thanks for the ping. I think getting this into Ubuntu 20.04 is a goal worth pursuing.

Big question is: do we want to flip the boost::shared_ptr -> std::shared_ptr switch before the release or not? I know this has been the plan all the way. But honestly, I feel uneasy about making this change and hastily tagging 1.10. This version will get "baked in" the next Ubuntu LTS. What if there are some tricky issues that we have overlooked?

@kunaltyagi
Copy link
Member

do we want to flip the boost::shared_ptr -> std::shared_ptr switch before the release or not?

I think yes because it was delayed for the switch (one of the TODOs).

I feel uneasy about making this change and hastily tagging 1.10

If Sergio is also hesitant, we could release in 2 different modes, conflicting with each other: say pcl-std, pcl-boost. I know it's possible on Ubuntu, Arch and MacOS (but might not be possible on vcpkg)

@jspricke
Copy link
Member

jspricke commented Jan 10, 2020 via email

@Morwenn
Copy link
Contributor

Morwenn commented Jan 10, 2020

From a user POV I'd that getting a new version that works is more important than the shared pointer change. I would even say that letting another version flow before the switch is better: it lets them the time to change boost::shared_ptr to pcl::shared_ptr without their coding breaking right away, which is a smoother path forward than breaking everything directly.

@kunaltyagi
Copy link
Member

kunaltyagi commented Jan 10, 2020

it lets them the time to change ... without their coding breaking right away

We added aliases this release, so maybe it makes sense not to flip the switch but to instead release it later.

At the same time, we should release it with the switch soon (maybe as 1.11 for 20.10 instead of 20.04) because we wouldn't know what issues crop up till we do it and preferably with little to no changes to the code (just the flip ie.). There's plenty of time for testing till then.

pcl::shared_ptr

There's no such thing (I think) 😄

I don't think we will get such a big change in time into Ubuntu

Did you mean 2 flavors or the flip?

@Morwenn
Copy link
Contributor

Morwenn commented Jan 10, 2020

Oh? I read the issue about pcl::shared_ptr and thought it was a thing since it was mentioned, my bad ^^'

@taketwo
Copy link
Member

taketwo commented Jan 10, 2020

@jspricke @Morwenn thanks for the inputs.

1.10 will be the new ABI version (I didn't check if there is actually a ABI break)

Absolutely, at the very least because we jump from C++98 to C++14.

From a user POV I'd that getting a new version that works is more important than the shared pointer change.

Same assessment here. In the last months, we put some effort into making sure that all API-visible smart pointers are hidden behind typedefs. Thus ideally, the shared pointer change will be invisible to the users. And if it is invisible, why would they even care? 😄

I would even say that letting another version flow before the switch is better: it lets them the time to change boost::shared_ptr to pcl::shared_ptr without their coding breaking right away,

As @kunaltyagi mentioned, we don't have pcl::shared_ptr. But the argument still holds: the users will have time to change raw boost::shared_ptr to Ptr typedefs. (Note that such typedefs were missing for some types and were added very recently).

At the same time, we should release it with the switch soon.

I'm pro flipping in master immediately after release and then getting 1.11 relatively soon.

@jspricke
Copy link
Member

jspricke commented Jan 10, 2020 via email

@taketwo
Copy link
Member

taketwo commented Jan 19, 2020

I've tagged 1.10.0.

@jspricke what are the steps we need to take to get this version into Ubuntu 20.04?

@UnaNancyOwen
Copy link
Member

Congratulations 1.10.0 Release! 🎉
I start creating the PCL 1.10.0 All-in-one Installer.

@kunaltyagi
Copy link
Member

I can create the darwin package for Mojave (10.14.6)

@jspricke
Copy link
Member

jspricke commented Jan 20, 2020 via email

@UnaNancyOwen
Copy link
Member

UnaNancyOwen commented Jan 20, 2020

PCL 1.10.0 All-in-one Installer released! 👍
I was created only x64 version. (I will be create x86 version if there is user's request.)

@kunaltyagi
Copy link
Member

kunaltyagi commented Jan 20, 2020

Mojave package too :) (Don't know if it'll work on other systems though, didn't test that)

@SergioRAgostinho
Copy link
Member Author

Congrats guys :)

@skhadem
Copy link

skhadem commented Feb 7, 2020

Hello, sorry if obvious (I am new to PCL), but it seems the All in One does not include io/real_sense_grabber.h? Am I missing something? Thanks.

@UnaNancyOwen
Copy link
Member

UnaNancyOwen commented Feb 7, 2020

@skhadem Pre-built PCL included in PCL All-in-one Installer is built with basic options.
If you need other features such as grabber for RealSense, Please build PCL from source code yourself.

@kunaltyagi kunaltyagi mentioned this issue Feb 21, 2020
2 tasks
@kunaltyagi kunaltyagi unpinned this issue Feb 25, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests