Products are never really finished, they're always evolving and growing and changing, for better or worse. At what point do you draw the line, call it quits on further breaking changes, and ship it? Asking for a friend.

Maybe your friend is procrastinating. Does he even want to ship it? Maybe your friend likes developing and polishing.

Shipping a product is the moment of truth. Will people buy it? or even use it? Running a business means marketing, selling and support. Even releasing as open source means you start getting feedback -- both positive and negative and demands for support and features.

Perhaps your friend needs support in those areas.

If you’re asking, you’ve waited too long. Give up on perfection and ship it. Get it into the hands of users, customers, whatever, get feedback, and iterate loop from there. Failure isn’t imperfection, it’s giving up or never trying. Ship it!

Ship with the minimum features needed. Add more on a set timeline, every x months. The costumers will tell you what they want so ship ASAP with no major bugs.

Every two hours, roughly.

Cut scope to the absolute minimum (does the form submit, does the entire pipeline run) and release.

Then iterate.

It's time to go public. Your friend will know when it's ready. Open-source is public domain. 101