B4J Question Commercial product release - What else should I do?

aeric

Expert
Licensed User
Longtime User
I built a POS system in B4J and I am planning to release a desktop windows version very soon.
I have modified the application (protection flow) a lot recently.
Previously I created a Beta version but not many are interested to test and give me feedback, except some good friends I know. I want to say thank you.

I (wasted some time) created a demo version activation server. Beta user need to register with email to activate my beta application. The license actually generated offline. This look bad so now, I scrapped it.

Now, I want to allow potential customer to "evaluate" my software before buying. So they need to go to my product page, register as new user and click "Request Trial".
Once downloaded my software, they need to input their email and password to continue. This will make an API call to my new version of activation server. The server check if this user have registered and requested for trial and then send back the response to activate the trial which will last for 63days.

For the product license, the user need to make an order. I made it maximum 3 orders per user right now. I will get a notification through email and I can click on a link to activate an API to approve/activate the license. Once approved, a serial number will be issue to the customer by email.

I understand I can use the Release (obfuscated) compilation to make the code harder to read by certain level of hackers. I also can hide some String values if I put the variables in Process Globals sub.

I have read some threads in this forum discussed about software protection (especially for B4J apps).

Since I am a small company (indie developer), I wish I can use free tools to accomplish the protection.
or I should take Erel's advice not to worry so much?
If you add your server to the solution then you will be able to move some of the logic or process to the server.

With that said, I think that developers shouldn't worry too much about software piracy at early stages. There are enough things to worry about :)

For now, my app can work standalone without connecting to a server. I make an optional package which is a cloud reporting server. It has a dashboard similar to the backend but can be accessed through web browser. This will be useful for business owner checking their business progress anytime, anywhere even after business hours. It also act as a backup service. A B4A version can also be build in the future if there is a demand.

In 2023, what advice would you give to me, who is going to release my very first commercial B4J software to the world (I mean in my own country first)?

Should I use Proguard or any other tools?

How about selling the software very cheap but focus on the sales of the cloud reporting services (SaaS)?
 

Tecuma

Member
Licensed User
Hello @aeric
Your post remind me on a seminar I had before I had to start my 1st freelancer phase 18 years ago. The instructor was from the marketing and payed by the German department of commerce. He had to teach us some basics about being self employed.

Many companies do not failure on the technical side they failure on the sales side.

One question was "Why should a customer by from you?". Did you answer this question to yourself?
Did you ask potential customers about your product idea, what they expect and the way you want to release it?

To answer these questions is important before you start the 1st line of code. The answer should be part of a business plan. It may be lead to the result that there is no customer who is willing to invest money into your idea. It saves you time and you can concentrate on another idea / project.

You may have luck and / or be blessed and find a market gap so you can save this effort. My experience is this is more an exception and not the rule.

To answer this after you have a product created can be challenging as you are now more forced to sell it as you have spent time to develop it.


In 2023, what advice would you give to me, who is going to release my very first commercial B4J software to the world (I mean in my own country first)?

I can only describe how I plan to release my software / apps. I am using open source licenses like apache 2.0 or bsd. Users can donate if they like it. Personally I like and use Open Source software where I can and I want to give something back via this way. There are exceptions like MakeMKV which offers a lifetime license.
 
Upvote 0

Sandman

Expert
Licensed User
Longtime User
or I should take Erel's advice not to worry so much?
That's excellent advice by Erel.

Many companies do not failure on the technical side they failure on the sales side.
That's excellent insight.

For your POS I would do this:

1. Make it insanely simple to download and start using. No registration needed. But I would also add a green screen-wide panel on top of screen saying something like "This POS is using a trial license. 30 days remaining." When it's 20 days remaining it turns orange. When it's 7 days remaining it turns red. Clicking it opens up a screen with info on how to purchase, and what benefits follows a purchase and also (if available) some nice customer quotes.

2. During trial period also clearly show on the printed receipt (top or bottom - not sure which is best) "This point of sale software us using a trial license, with 30 days left."

3. When they purchase a license you return a fairly large license string that they are meant to paste into the app somewhere. This string also contains encoded information that you now include (smaller) on the screen: "Licensed to Wild Juicebar", and the same info is added (smaller) on the customer receipt.

4. Allow the customer to use the license key on as many computers they want. Upon startup you can make your software send a fingerprint (License ID, OS version, MAC address and a few details like that) to your server. If you get customers that buy (for instance) three licenses and you see they use it on eight computers, just make a friendly call and say that you saw that their business has grown - great, congratulations! - should you send the invoice for the five extra licenses to the same email address as last time? If you get lucky enough that you get a customer buying more licenses and you see they have just a few extra over-uses, just let it slide. (If they buy 50 and use it on 52 - why risk friction with such a big customer).

Implementing high security against hackers and software pirates is with almost total certainty not a good focus and use of your time and energy. Instead focus on making it super simple and smooooth to get started, pay for, and use your software.

Just some thoughts on top of my mind.
 
Upvote 0

aeric

Expert
Licensed User
Longtime User
I can and I want to give something back via this way
Yes, I have open sourced many of my projects too.
Maybe my projects are not very groundbreaking because unfortunately I can say I received 0 penny from them.
Many times I don't get any coffee when I have helped some one solved his big problem but I just pass.

Some projects which are open source do receive (financial) support from big companies or patreon donators. Some developers contribute to open source as side project as an hobby beside having a fulltime job. We as developers cannot purely rely on donations for our projects.

Erel has provided many free B4X products but he also provide a commercial product and service which can generate some income for his company.
The question is the business model. As I said, as what I thought about providing another service on top of a product is a good idea to go?

One question was "Why should a customer by from you?". Did you answer this question to yourself?
Did you ask potential customers about your product idea, what they expect and the way you want to release it?
Maybe I am too pessimistic.
"Why should a customer buy from me?" My answer would be "why not give it a trial? I have bought another one. How this doing differently?"
I think people would evaluate or buy something just out of curiosity. The product may not has good quality but people just don't care.

"Did you ask potential customers about your product idea, what they expect and the way you want to release it?"
So far I only got a feedback from a friend using similar software. They expect easy to use and have the features not in the existing software he is using or need to pay more for the extra features.

What I don't want to see is my software is available for download from somewhere else which I am not aware. I just make small profit (if I really could) and some people just use it for free.
 
Upvote 0

aeric

Expert
Licensed User
Longtime User
That's excellent advice by Erel.


That's excellent insight.

For your POS I would do this:

1. Make it insanely simple to download and start using. No registration needed. But I would also add a green screen-wide panel on top of screen saying something like "This POS is using a trial license. 30 days remaining." When it's 20 days remaining it turns orange. When it's 7 days remaining it turns red. Clicking it opens up a screen with info on how to purchase, and what benefits follows a purchase and also (if available) some nice customer quotes.

2. During trial period also clearly show on the printed receipt (top or bottom - not sure which is best) "This point of sale software us using a trial license, with 30 days left."

3. When they purchase a license you return a fairly large license string that they are meant to paste into the app somewhere. This string also contains encoded information that you now include (smaller) on the screen: "Licensed to Wild Juicebar", and the same info is added (smaller) on the customer receipt.

4. Allow the customer to use the license key on as many computers they want. Upon startup you can make your software send a fingerprint (License ID, OS version, MAC address and a few details like that) to your server. If you get customers that buy (for instance) three licenses and you see they use it on eight computers, just make a friendly call and say that you saw that their business has grown - great, congratulations! - should you send the invoice for the five extra licenses to the same email address as last time? If you get lucky enough that you get a customer buying more licenses and you see they have just a few extra over-uses, just let it slide. (If they buy 50 and use it on 52 - why risk friction with such a big customer).

Implementing high security against hackers and software pirates is with almost total certainty not a good focus and use of your time and energy. Instead focus on making it super simple and smooooth to get started, pay for, and use your software.

Just some thoughts on top of my mind.

Thanks @Sandman and @Tecuma.
I am looking for some points that I may missed out.
Basically I have designed the activation flow. It will take more time and delay the launching of my software if I am going to make further changes but I will consider to implement some of these tips for new updates or releases in the future.
 
Upvote 0

Sandman

Expert
Licensed User
Longtime User
On one hand it's probably not a good idea to delay launching.

On the other hand it's difficult to get people to take a second look if they thought it looked complicated the first time.

I don't know what is best for your situation, I'd just recommend that you be careful and thoughtful with your next steps, and please don't fall for the sunk cost fallacy.
 
Upvote 0

aeric

Expert
Licensed User
Longtime User
Currently I have this "Client Area" website built with B4J server.

1679562088329.png
 
Upvote 0

MikeH

Well-Known Member
Licensed User
Longtime User
This is very interesting as I'm in exactly the same position - will be (hopefully) releasing a B4J app in the next few weeks.

I'm also thinking about how to earn from it and how to handle that process. I was thinking of purely donations, using a link to Paypal but then also thought of the same model as Reaper where you either buy a license, which presumably has encoded identification info so that it will only work on one pc ( I haven't tested to see if the license works on another pc) - or you have a nag requester with a delay to have you stop and think about buying.

Tecuma, your questions are very good general business advice. I have answered those questions for myself and decided, before writing a line of code, to go ahead.

Sandman, your advice is very good too. The green.yellow, red banner is a good idea though I'd go for something more discrete to avoid embarrassing your customer in front of their customer. Also, excellent point about making the process of acquiring the app and paying for it as smooth and simple as possible. The only barrier left should be the potential customer deciding to buy or not.

As for security against piracy, I would only worry about that when your product has value. It only has value when it has paying customers. So work on that first. By the time that happens, you could be on a much improved version and the earlier, pirated ones would then essentially be free trials with the pirates serving as your distribution agents.

Good luck with your new project and also your reintroduction to society :)
 
Upvote 0

aeric

Expert
Licensed User
Longtime User
This is very interesting as I'm in exactly the same position - will be (hopefully) releasing a B4J app in the next few weeks.

I'm also thinking about how to earn from it and how to handle that process. I was thinking of purely donations, using a link to Paypal but then also thought of the same model as Reaper where you either buy a license, which presumably has encoded identification info so that it will only work on one pc ( I haven't tested to see if the license works on another pc) - or you have a nag requester with a delay to have you stop and think about buying.

Tecuma, your questions are very good general business advice. I have answered those questions for myself and decided, before writing a line of code, to go ahead.

Sandman, your advice is very good too. The green.yellow, red banner is a good idea though I'd go for something more discrete to avoid embarrassing your customer in front of their customer. Also, excellent point about making the process of acquiring the app and paying for it as smooth and simple as possible. The only barrier left should be the potential customer deciding to buy or not.

As for security against piracy, I would only worry about that when your product has value. It only has value when it has paying customers. So work on that first. By the time that happens, you could be on a much improved version and the earlier, pirated ones would then essentially be free trials with the pirates serving as your distribution agents.

Good luck with your new project and also your reintroduction to society :)
Yes, I need this kind of positive energy and attitude.
 
Upvote 0

Sandman

Expert
Licensed User
Longtime User
Any. As I just locked up myself from the outside world for years, I afraid I have been outdated. 😅
After a bit of consideration I feel that I'm probably not able to give you actual good advice. To do that we would probably have to spend a couple of full days talking so I could understand your situatuation a lot better. And if that were to happen, I could probably give you quality advice. But I worry that if I start giving you too many opinions right away, I could in reality give you counter-productive advice that would hurt you in the end.

For instance:

I have absolutely no problem imagining a situation where the single best advice for you is to stop procrastinating and start buying ads, work on sales and finding customers.

I also have absolutely no problem imagining a situation where the single best advice for you is to rip out a chunk of your system and re-doing it and instead try to launch in August.

...and many more variations like that.

I'll add just a generalized advice: The more urgently you need cash, the more you need to focus on sales. That's probably as good advice as I can give at the moment.
 
Upvote 0

epiCode

Active Member
Licensed User
My two cents:

If it runs, it can be hacked.
( You can only make it difficult )

If it can not be hacked, it is probably inaccessible.
( Server side applications are difficult to hack. Have some or part of your functionality online like, letting the desktop version work without any registration etc but require online module to customize some elements.)

If someone is trying to hack it, it has a worth by itself.
( Imagine having a product nobody wants to hack! )
Focus on creating additional value outside of the product like a product + service mix, like training, support, quick response time, fall back solutions etc. Humans tend to buy a new product from reliable person than reliable product from new person.
 
Upvote 0

tchart

Well-Known Member
Licensed User
Longtime User
Agree with some of the comments above.

My web app has a banner that says "Not Licensed - please email XYZ with hostname ABC"

This does two things;

1. It tells the user(s) they arent licensed
2. Shows them the information that I need to generate the license

I went with hostname as generating MAC based or some kind of hardware fingerprint causes problems. Many of the products I use daily require FlexLM or for the user to supply a MAC address. This is hard for some users and on Azure/AWS the MAC can change. I dont want to have to issue a new license evertime a machine changes its MAC address.

Yes the user can use the license on any PC with the same name but this is unlikley with my customers who would be running active directory unless they have multiple domains.

The point being make it easy for the user and easy for you.

Currently my installer requires a password. This does stop some copying but it does make giving out trials difficult.
 
Upvote 0

Winni

Member
Licensed User
Longtime User
Here's my take:

Piracy will always happen, full stop and end of discussion. It's a fact of life, accept it and move on.

At the end of the day, business is built upon trust. You need to focus on your actual customers and make sure that they have a great experience with your software and that they do not regret having paid for it. Give them good service and other incentives to keep using your product and to willing pay for your service and the next software update.

Do NOT make the mistake of giving them the feeling that you do not trust them by making your software hard to use just because you are afraid somebody could be stealing from you. For example, nothing motivates people more to pirate movies than the "FBI warning" things you are forced to watch on a purchased DVD/BluRay disk that you cannot skip. Pirates NEVER have to suffer through that experience, but paying customers are being punished. Activation services and forcing online connections in order to keep using a software that you paid for is such a punishment for the paying customer.

Just my 2 cents. Good luck!
 
Upvote 0

aeric

Expert
Licensed User
Longtime User
Aeric,
I have experience with several mass-market POS systems (SAP, Xpient among others) and if you wish, would be happy to offer my assistance to you.
Thanks but my system is incomparable to big products you mentioned. I only target small shops. However the production version will be available next week with free trial. RC1 is available but I still not confident to show.
 
Upvote 0

MrKim

Well-Known Member
Licensed User
Longtime User
Thanks but my system is incomparable to big products you mentioned. I only target small shops. However the production version will be available next week with free trial. RC1 is available but I still not confident to show.
Look at it from the small shop point of view. They are busy. They do NOT have the time or patience to TRY anything. They search for POS software and see a LOT of options. They are going to go with what looks most likely to work for them at their price point and looks like it will be the EASIEST to learn.
Make sure your web site lists everything your program can do for then - CLEARLY.
Do a a demo video that explains your software CLEARLY (and quickly).
I can't tell you how many programs I have looked at over the years that only got two minutes of my time because it was just not CLEAR if the software could do what I want, and I am not going to waste my time downloading and installing something just to find out if it will suit my needs.
 
Upvote 0
Top