Merging of my Link branch

Here's the place for discussion related to coding in FreeCAD, C++ or Python. Design, interfaces and structures.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
User avatar
fosselius
Posts: 381
Joined: Sat Apr 23, 2016 10:03 am
Contact:

Re: Merging of my Link branch

Post by fosselius »

This breaks my heart a bit..

Back in 2011, I really wanted to use FreeCAD for our robotics project ( building soccer playing robots ).
20120206_111211.jpg
20120206_111211.jpg (466.9 KiB) Viewed 1542 times
20120206_111508.jpg
20120206_111508.jpg (396.14 KiB) Viewed 1542 times
But we had to give up on FreeCAD as we really needed an assembly system. Today with PDN and spreadsheets we would probably have proceeded with FreeCAD anyway.

And today I still see the same thing stated in project after project, "we really liked FreeCAD but Assembly.."
Now when we finally get rapid development in the right direction, it gets almost no attention from core developers, I know they are few and busy with other things, but this is THE most important feature in FreeCAD for many users.

Just one of several cases:
Screenshot from 2018-08-02 06-08-55.png
Screenshot from 2018-08-02 06-08-55.png (122.98 KiB) Viewed 1542 times
https://hackaday.io/project/26031-dogbot

In this fall, October - January, i will get some time off work and will finally/hopefully get some spare time on my hands, My intention was to remake my "robotCreator" workbench during this time based on realthunders work. But i would like to see a merge before i put in any serious time on that..

I could also spend that time on getting up to date with FreeCADs C++ codebase and help with the merge as i have only played around with the Python parts so far. But I am a C/C++ developer by trade and have some experience with 3D graphics as well (see http://www.idt.mdh.se/utbildning/exjobb ... TR1397.pdf).

PS:
Got an comment from Yorik through his homepage:
Screenshot from 2018-08-02 06-49-56.png
Screenshot from 2018-08-02 06-49-56.png (91.77 KiB) Viewed 1539 times
User avatar
Kunda1
Veteran
Posts: 13434
Joined: Thu Jan 05, 2017 9:03 pm

Re: Merging of my Link branch

Post by Kunda1 »

great insight @fosselius
Alone you go faster. Together we go farther
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
User avatar
yorik
Founder
Posts: 13665
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Merging of my Link branch

Post by yorik »

Task of the day: Test the link branch ;)
User avatar
NormandC
Veteran
Posts: 18589
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: Merging of my Link branch

Post by NormandC »

fosselius wrote: Thu Aug 02, 2018 4:42 am Now when we finally get rapid development in the right direction, it gets almost no attention from core developers, I know they are few and busy with other things, but this is THE most important feature in FreeCAD for many users.
You did read that according to realthunder, his branch has 50,000 lines of changes? Fifty. Thousand. :?

realthunder has probably worked hundreds (if not thousands?) of hours on this.

How do you review that when you develop FreeCAD part-time or in your free time? How can you evaluate all the possible implications? Of course realthunder wrote documents to explain his changes; still, merging his work is a huge decision that cannot be taken lightly. It will have repercussions for years to come.

The previous huge code change was for what we used to call "PartDesignNext". The code sat in an abandoned branch for 2 years, then it took almost 2 years to salvage it, upgrade it and merge it to master. At some point, there were 3-4 people to do this work. In all it took 5 years before it was finally released. TechDraw's story was similar. These projects were as important as assembly.

When you talk about "core developers", I believe there are only two left: yorik and wmayer, who until this week wasn't active on the forum nor the source code for the past month and more. I'd say the guy deserves vacation time. He also deserves to work on FreeCAD on his own terms.

And I'll add that last year, there was a big disagreement between ickby and realthunder regarding his Links implementation. Considering that ickby lead PartDesignNext to completion and laid down the ground work for the Assembly wb, I tend to give his opinions some credence. I find it unfortunate that this disagreement doesn't seem to have been resolved (I may be mistaken).

Don't mistake what I wrote for lack of enthusiasm, I've been waiting for an Assembly workbench for as long as you - if not longer, and I do hope the Links branch is the step that will finally make it happen. But I understand that FreeCAD remains a community project, held by a tiny group of people who want to do the right thing. "Rapid development" is really hard in these conditions.
User avatar
fosselius
Posts: 381
Joined: Sat Apr 23, 2016 10:03 am
Contact:

Re: Merging of my Link branch

Post by fosselius »

As you say review is more or less impossible given the size vs developers. What i would like to see is a part design next kind of merge that probably will brick a lot of stuff. But it will expand the amount of testers and it will be easier to fix what will break then to review, argue about and modify all of realthunders work. Also then realthunder would suddenly be one with the "core developers" and not a "rouge" coder with his own fork of freecad.

The benefits we get with this merge is:
Link implementation
Improved STEP import with partial load
TopoNaming work
Assembly3 workbench

The branch have been tested for a few months and is in a usable state, the bugs that are found are quickly resolved.

If things need to be changed we can do that after the merge when more people gets an insight into what feature implementations that did not work out and why.

I would love to help out with cleaning up the mess that probably will occour after the merge.

The longer the merge is put on hold the more will differ between mainline and asm3/linkStage3

My hope is that once we get a usable assembly workbench we will get more users and might attract more developers. In my experiance the people that need an assembly workbench are working on some electromechanical system that needs an control system. That means that they can code. If we are close enough to what they need some of them might be willing to help to fill the gaps.
Last edited by fosselius on Thu Aug 02, 2018 6:56 pm, edited 1 time in total.
User avatar
NormandC
Veteran
Posts: 18589
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: Merging of my Link branch

Post by NormandC »

fosselius wrote: Thu Aug 02, 2018 6:38 pm What i would like to see is a part design next kind of merge that probably will brick a lot of stuff.
:lol:

fosselius wrote: Thu Aug 02, 2018 6:38 pm But it will expand the amount of testers and it will be easier to fix what will break then to review, argue about and modify all of realthunders work.
You do have a very valid point.

I'm a little embarrassed to admit that I haven't even tried realthunder's Assembly3 yet, but I've closely followed his topics. With providing forum help and writing for the wiki I haven't found the time. If the Links branch was merged to master, it would certainly be more convenient for me, and I'd be able to report bugs I stumble upon in my regular use.

I'm wondering, bricking-wise, if it would be relevant to make a 0.18 release before the merge. If PartDesignNext is any indication, once (if) Links is merged, there won't realistically be a release in less than a year, maybe even two. But now I'm opening the big can of worms: "but we wanted to include such and such stuff in 0.18..." ;)
User avatar
Kunda1
Veteran
Posts: 13434
Joined: Thu Jan 05, 2017 9:03 pm

Re: Merging of my Link branch

Post by Kunda1 »

NormandC wrote: Thu Aug 02, 2018 6:51 pm I'm a little embarrassed to admit that I haven't even tried realthunder's Assembly3 yet, but I've closely followed his topics. With providing forum help and writing for the wiki I haven't found the time. If the Links branch was merged to master, it would certainly be more convenient for me, and I'd be able to report bugs I stumble upon in my regular use.
@NormandC, fyi, realthunder did make an appimage just for asm3 (JIC you weren't aware)

edit: https://github.com/realthunder/FreeCAD_ ... 3/releases
Alone you go faster. Together we go farther
Please mark thread [Solved]
Want to contribute back to FC? Checkout:
'good first issues' | Open TODOs and FIXMEs | How to Help FreeCAD | How to report Bugs
User avatar
fosselius
Posts: 381
Joined: Sat Apr 23, 2016 10:03 am
Contact:

Re: Merging of my Link branch

Post by fosselius »

What are you talking about? 0.17 was just released, we are early 0.18, its bricking time! ^_^
Btw realthuder released appimages just download and execute. He made me stop making my freecad daily builds that had become a ritual for me since 2011..

Actually have only been using his branch for the last months both for work and hobby.
User avatar
NormandC
Veteran
Posts: 18589
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: Merging of my Link branch

Post by NormandC »

I know about realthunder's AppImages. But I'm the former Ubuntu PPA maintainer and I continue to use the Stable and Daily PPAs. For me AppImage is less convenient. Also, these days I use FreeCAD exclusively to help forum members so I need to use vanilla FreeCAD in those cases. Once I've gone through the topics of the day, I'm more often than not out of time. And I need to allow myself time writing/translating stuff on the wiki, again about vanilla FreeCAD. Not enough people contribute to the wiki as it is.

Merging the Links branch will definitely push back the 0.18 release more than a year. 0.17 took two years to publish. I don't think people want to keep with such a long release schedule. Besides, there is ample stuff already to justify a 0.18 release. Last year, discussion about the v0.17 release started in September, and it was finally released only 7 months later.

But for 0.18 to happen, minimally I think the Python3/Qt5/pyside2 stuff needs to be resolved.
User avatar
yorik
Founder
Posts: 13665
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Merging of my Link branch

Post by yorik »

Ok I just gave the LinkStage3 branch a test spin, and read (rather quickly) the two docs (link features and core changes), and here are my impressions.

- The branch is pretty unstable. Several unit test fail, which is I think nothing serious, but the two existing models of mine I tried to open had serious problems, one got caught in infinite recompute loop and FreeCAD crashes quickly after, another after the apparently needed general recompute at file open (btw it is a design feature of FreeCAD to not need a recompute at startup) had half of its geometry screwed.. I could easily make some more bugs happen by playing a couple of minutes with Draft and Arch tools. There are also some lags or freezes appearing, for example to switch between the data and view tabs, or for the statusbar to change on hovering an item in the tree (apparently because of the new highlight system)

- Running FreeCAD in command line mode apparently doesn't work anymore. I cannot open an existing document or run an import script (arch ifc importer). Something seem to have changed in the document py API

- I am afraid this branch is impossible to merge as it is. It would likely screw a good portion of existing models (I must test further but the start is not good) and the changes are so huge and scattered all over FreeCAD that the potential quantity of new bugs is gigantic. I don't think any project would likely accept to do a big merge like that, half of the FreeCAD source code has been changed, so to speak... Even the smaller part that is currently in the pull requests queue would be considered by most too big to merge.

- Has anyone here who is pushing for a merge actually tested the branch? Reathunder has provided precompiled binaries. Please test, above all with existing models, and please help to test all the existing tools (sketcher, draft, etc). This is very important to be able to go any further. I would very much like to get other people's feedback.

About the implementation docs, a couple of questions:

- DeepSOIC is intelligent... I didn't understand not even close to 50% of it :oops:

- Why complicate Selection's SubName? Why not add other attribute such as Hierarchy? Seems to me easier to maintain backward compatibility. Many scripts out there might break with the proposed change... (It doesn't seem so at first sight, but I still need to test more)

- Why the new python attach() method for document objects? Isn't it the same thing as __init__?

- Core changes:
- Property status bit extension: what's the difference with the current setEditorMode()? Isn't it duplicating the same thing?
- recursive recomputing: I don't understand this... Isn't it what is already happening now?
- if a document is partially loaded, can be edited by the user but shouldn't be edited and the user receives a warning and the changes are not saved, this seems an implementation flaw to me. The user should either be able to modify or not be able to modify at all.

Basically my impression is that half of FreeCAD has been modified to serve the new features implemented in the App::Link system. It is not a bad thing in absolute terms, I really think most of the changes are good things for everybody (API extensions, etc), but because of this, what would have been an easy merge has become crazily complex.

So I think the only way to get any further here is to split this monster into something manageable. Of course I understand your reasons for considering it difficult to split, @realthunder. You have started working on link stuff then added some more functionalities that you needed on top of it, and now everything is thoroughly mixed together.

I understand it will require a huge work to isolate and extract things, but I really think we'll need to merge this step by step, feature by feature, starting with the big core changes one by one, without any of the more specific stuff. Otherwise I'm afraid there are high chances we'll simply throw all the stability we've been building in FreeCAD for years to the ground.

That said, I recognize the impressive work you have been doing, and I would like much to get most of it (or all) into FreeCAD. Like I wrote on the blog, there are details I might want to do differently, but that's not a problem, these things can always be adapted along the way. However, I cannot respond for other developers.

To everybody else here, please test, and give feedback...
Post Reply