Best way to offer a bounty for feature development?

Have some feature requests, feedback, cool stuff to share, or want to know where FreeCAD is going? This is the place.
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
marthinwurer
Posts: 24
Joined: Thu Sep 06, 2018 10:29 am

Best way to offer a bounty for feature development?

Post by marthinwurer »

I'm interested in putting a bounty on a specific feature that FreeCAD has been lacking that I need. Specifically, I need to be able to make a bezier spline through specific points in Sketcher, and then to be able to constrain points to lie on that spline. I looked into developing it myself, but ran into issues. The first part seems fairly straightforward, as the geometry code exists in OCCT, and the method that is currently used for bezier curves could be extended to be used with that. I do not know how difficult it would be to do the constraints.

What would be the best way to set up a bounty for these features? What would be reasonable costs for someone to implement them?
User avatar
adrianinsaval
Veteran
Posts: 5553
Joined: Thu Apr 05, 2018 5:15 pm

Re: Best way to offer a bounty for feature development?

Post by adrianinsaval »

Hmmmh, isn't bountysource a place for that? Although I'm not sure how it works. I too want that feature and would be willing to add at least a little money for it too (or for constraints for splines).
Workshop_Notes
Posts: 620
Joined: Wed Sep 29, 2021 8:35 am

Re: Best way to offer a bounty for feature development?

Post by Workshop_Notes »

marthinwurer wrote: Thu Jul 14, 2022 7:18 pmSpecifically, I need to be able to make a bezier spline through specific points in Sketcher, and then to be able to constrain points to lie on that spline.
Please, are you aware that the ability to create a spline through specific points exists in Draft? Draft, Bspline is the way to do it. I think you can then 'upgrade' or convert the Draft Bspline to a Sketcher object. I do not know about constaining points to lie on that spline, however.

The difficulty is making it parametric - you would have to drop into Python to do this as Expressions and spreadsheet do not work in draft, but the 'scripting' section of the Draft, BSpline wiki page shows how to automate the B-spline creation by feeding it a point list created in Python.

The way I came to this is from long term AutoCAD use where it can convert a polyline between points into a series of biarcs that also pass through those points. IMO, biarcs have the potential to offer a lot more functionality than splines - being only circular arcs joined end-to-end, most of the code is already written. What is missing is the function (which could be written as a macro) that takes a list of points and converts that to a polyline made of arcs.
marthinwurer
Posts: 24
Joined: Thu Sep 06, 2018 10:29 am

Re: Best way to offer a bounty for feature development?

Post by marthinwurer »

Workshop_Notes wrote: Thu Jul 14, 2022 8:17 pm
marthinwurer wrote: Thu Jul 14, 2022 7:18 pmSpecifically, I need to be able to make a bezier spline through specific points in Sketcher, and then to be able to constrain points to lie on that spline.
Please, are you aware that the ability to create a spline through specific points exists in Draft? Draft, Bspline is the way to do it. I think you can then 'upgrade' or convert the Draft Bspline to a Sketcher object. I do not know about constaining points to lie on that spline, however.
Yes, and it doesn't work. I need it to be parametric.
The way I came to this is from long term AutoCAD use where it can convert a polyline between points into a series of biarcs that also pass through those points. IMO, biarcs have the potential to offer a lot more functionality than splines - being only circular arcs joined end-to-end, most of the code is already written. What is missing is the function (which could be written as a macro) that takes a list of points and converts that to a polyline made of arcs.
I've tried doing this manually but there were a bunch of issues and it was extremely fiddly. The constraints solver failed to solve once things got sufficiently complex and the circles got increasingly large in radius compared to the arc.
User avatar
sliptonic
Veteran
Posts: 3460
Joined: Tue Oct 25, 2011 10:46 pm
Location: Columbia, Missouri
Contact:

Re: Best way to offer a bounty for feature development?

Post by sliptonic »

marthinwurer wrote: Thu Jul 14, 2022 7:18 pm What would be the best way to set up a bounty for these features? What would be reasonable costs for someone to implement them?
This is a very good question. It's worthy of more discussion.

IMHO, bounties don't work very well. Here's why.

Contrary to popular belief, programming isn't the biggest part of what developers do. Implementing a feature requires the developer to thoroughly understand the code-base and also to understand the problem to be solved. In fact, this is the hardest part. Most of the job is research, tests, reading other code, and communicating with other developers or 'the customer' to understand the requirement. Once those are understood, a solution is usually pretty straight-forward.

Here in lies the problem: In order for a developer to know whether it's worth working on the solution to claim the bounty, he has to work on the solution enough to understand it. In other words, he has to do the work in order to know if it's worth doing the work. The developer takes all the up-front risk and puts in all the effort only to find out that the problem isn't worth implementing for the offered price.

From my observation, the only bounties that ever get claimed are for features that are trivial or where the developer already knows the code base and the solution. If the problem is that easy, it's probably already been implemented.

I think there's a better model: Contract programming.

Look through the git commit history and the forum posts. Figure out which developer(s) are working in the area you're interested in. Then send them a message and offer to contract with them for the feature. Start a conversation. Most developers I know are happy to do this, especially if they can work with one person to clarify requirements.

I don't know this code so I'm just wild-ass guessing here. Assume that the developer is going to have to spend a couple hours talking to you, doing research, and maybe some experiments. Plan on spending at least a couple hundred bucks to get his attention and time. Your feature is pretty well defined so it might be less talking but it might be more complicated. I don't know.
marthinwurer
Posts: 24
Joined: Thu Sep 06, 2018 10:29 am

Re: Best way to offer a bounty for feature development?

Post by marthinwurer »

That is a very good point. Other things to think about are how payment happens and how development requirements work. I've definitely got enough saved up to pay for real developer time, but it would be nice for people to be able to chip in a little bit.

I'll look into devs to contact for something like that. Since I've seen you have some commits, do you know of anyone who's done work with the bsplines lately?

Edit: looks like AjinkyaDahale has been doing a lot with them recently.
User avatar
jnxd
Posts: 952
Joined: Mon Mar 30, 2015 2:30 pm
Contact:

Re: Best way to offer a bounty for feature development?

Post by jnxd »

marthinwurer wrote: Thu Jul 14, 2022 7:18 pm I'm interested in putting a bounty on a specific feature that FreeCAD has been lacking that I need. Specifically, I need to be able to make a bezier spline through specific points in Sketcher, and then to be able to constrain points to lie on that spline. I looked into developing it myself, but ran into issues. The first part seems fairly straightforward, as the geometry code exists in OCCT, and the method that is currently used for bezier curves could be extended to be used with that. I do not know how difficult it would be to do the constraints.

What would be the best way to set up a bounty for these features? What would be reasonable costs for someone to implement them?
I've been chipping away at this problem but I'm not sure if my intended final picture is what you exactly want, or how soon I'll be able to get to it.

Basically, the problem is that to finally get to the constraints, we would (may?) have to implement bezier curves/bsplines once again in planegcs, which is the solver behind Sketcher's constraint mechanism.

It would be interesting to hear where you reached in your own experiments.

Coming to the question of "bounty", I have a liberapay account and receive a portion of the donations sent to the FreeCAD "team" there. That income is not in general related to any particular item. But if people are interested in funding this particular effort and the amount is substantial, it may be better to use different avenues than Paypal, (which is what ultimately gets the money to me), since it takes a significant portion of it.
User avatar
jnxd
Posts: 952
Joined: Mon Mar 30, 2015 2:30 pm
Contact:

Re: Best way to offer a bounty for feature development?

Post by jnxd »

marthinwurer wrote: Thu Jul 14, 2022 9:29 pm ...looks like AjinkyaDahale has been doing a lot with them recently.
Glad to see my work being noticed. I use the nick "jnxd" here, for whatever reason.
Post Reply