How|Why Ring supported (Qt for WebAssembly) before Python?

144 views
Skip to first unread message

Mahmoud Fayed

unread,
Jul 26, 2020, 8:43:46 AM7/26/20
to The Ring Programming Language
Hello

How|Why Ring support (Qt for WebAssembly) before Python?

Answer:

Before developing Ring, When I was thinking about developing the second generation of the Programming Without Coding Technology software
I decided to use Qt - Because it's very powerful framework, provides a lot of features and support all platforms.

I checked Python & Ruby, because I wanted to use them (Free-Open Source, Dynamic languages, Objects-Oriented, All platforms, etc.)

I like Python & Ruby but I like Ruby more than Python because Ruby is more Object-Oriented, and more declarative which means it's more nice for creating domain-specific languages.

So I checked QtRuby, But it was not active/updated to Qt 5
Most of Ruby developers are web developers, there is too little interest in desktop development.

It was a commercial product!  ( 550$ per ONE DEVELOPER!)
So if I have used it in PWCT development, each PWCT developer will need a license of PyQt when using it for commercial applications development
And since PWCT (Now over 22M downloads, around 270K users|downloads for PWCT 1.9)
This means ---> 270,000 * 550 = 135 million dollars - Sure these numbers are not accurate - It's just an estimation about some high-cost that exist.

I started to think about creating the Qt binding myself for Ruby or Python, but I know it's too much effort
This reason beside too many other reasons was behind developing Ring, RingQt, etc.

In 2016, After Ring 1.0 release, Ring was a good choice for Python or Ruby developers looking for a similar language that provide nice Qt support (Everything in one package - Everything is free-open source - Could be used for commercial applications development without paying money!)

Later when we improved Ring Notepad, Added the Form Designer, the picture becomes more beautiful
Ring looks like (Python|Ruby + Visual Basic) for Desktop development
Sure Ring is too much more than that (Declarative, Natural Programming, Game Programming, etc.)
But this is what was very nice about Ring in the beginning
if you like Python|Ruby and want the productivity of Visual Basic for GUI development, Then Ring is here for you :D
Someone may say (This is just Visual FoxPro?) - But Visual FoxPro was (Windows Only, 32-Bit only, No powerful support for Console/Games/Web/Mobile, etc.) - but sure I learned a lot from using it in production for many years, and I like it :D

Now in 2020, we have a better position again for desktop development :D
Ruby support for Qt still not powerful!
Python have 2 projects for supporting Qt
(2) PySide2 (By the Qt company itself) : https://doc.qt.io/qtforpython/

But no one of these projects support (Qt for WebAssembly)
Also many developers reported that using them with Android is very hard (Maybe not supported!)

This raise a question : How|Why Ring supported (Qt for WebAssembly) before Python?

(1) Because Ring is not only : Python|Ruby + Visual Basic
It's Also : Python|Ruby + Visual Basic + Lua (Small Size Matters!)

Ring implementation is very small (The Compiler + VM is around 20,000 lines of C code)
So Ring as a language, beside the ability to be extended with C/C++ code (As we have in RingQt for Windows, Linux & macOS)
Ring can be embedded in C/C++ with little effort without adding too much size to the project (As we have in RingQt for Android, RingQt for WebAssembly)

(2) Ring Memory Management (Garbage Collector, Memory Pool, etc.) doesn't need threads

(3) We can compile a Ring project (*.ring) files to one file (Ring Object File - *.ringo file)

(4) Something related to the developers behind the project, If you created the programming language, then creating extensions like (RingQt) is too much simple than creating an extension for a strange programming language. In Ring, RingQt is developed by Ring Team, and since we know everything about Ring, we spend most of the time thinking in Qt (not in Ring) - and thinking in a framework like Qt - is much simple than thinking in a programming language like (Ring, Python, Ruby, etc.)
So I want to say thanks to (Majdi Sobain & Other Ring Team members) who helped me a lot in developing RingQt

This post from Qt blog will give you an idea : https://www.qt.io/blog/qt-for-python-5.15.0-is-out
This section : "We spent most of our time dealing with an old issue related to Threads and Python" and this "

long time ago, even before the the official release, we had a bug report
pointing out a problem while running Threads in a PySide application. We
 thought it was an important thing to solve, but we never expected that
it will require a whole new way on how we interact with
Python's Global Interpreter Lock (GIL).

We invested a lot of time trying to figure it out, and by mixing
different approaches the team thought to solve the issue, we ended up
finding a proper solution."


All of these features together, helped us to move faster and support (Qt for WebAssembly) before Python.

Summary:
* Ring is simple like Python
* Beautiful like Ruby
* Productive like Visual Basic
* Small like Lua
* Provides Powerful Qt Support
And more!

Screen Shots:

PWCT (Under Development) - Desktop Version

shot1.png




PWCT (Under Development) - Mobile Version

shot2.png



PWCT (Under Development) - Web Version (WebAssembly)

shot3.png



Greetings,
Mahmoud

Mansour Ayouni

unread,
Jul 26, 2020, 9:53:40 AM7/26/20
to Mahmoud Fayed, The Ring Programming Language
Thank you Mahmoud for sharing this with us!
This post is worth publishing in CodeProject.com or any other programming platform. The word of Ring needs to spread...
All the best,
Mansour

--

---
You received this message because you are subscribed to the Google Groups "The Ring Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ring-lang/23c56d3a-de9e-4153-8a9f-2b078a43301bo%40googlegroups.com.

Mahmoud Fayed

unread,
Jul 26, 2020, 10:08:28 AM7/26/20
to ring...@googlegroups.com
Hello Mansour

Thank you Mahmoud for sharing this with us!
This post is worth publishing in CodeProject.com or any other programming platform. The word of Ring needs to spread...

You are welcome :D

After finishing PWCT 2.0, we will invest more time in Ring Marketing :D
The idea is to achive success after success + Increase the product Quality & value(Productivity) + Increase Ring Team
Then after that the Marketing will be more easy :D

Product Popularity = (Quality) x (Marketing)

And PWCT 2.0 will be our marketing Horse - You get PWCT (While Ring exist inside it)

Greetings,
Mahmoud
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+unsubscribe@googlegroups.com.

Mansour Ayouni

unread,
Jul 26, 2020, 10:13:24 AM7/26/20
to Mahmoud Fayed, The Ring Programming Language
I totally understand and share your vision.
Let's invest in the foundation, and quality is the foundation.
All the best,
Mansour

On Sun, 26 Jul 2020 at 16:08, Mahmoud Fayed <msfcl...@gmail.com> wrote:
Hello Mansour

Thank you Mahmoud for sharing this with us!
This post is worth publishing in CodeProject.com or any other programming platform. The word of Ring needs to spread...

You are welcome :D

After finishing PWCT 2.0, we will invest more time in Ring Marketing :D
The idea is to achive success after success + Increase the product Quality & value(Productivity) + Increase Ring Team
Then after that the Marketing will be more easy :D

Product Popularity = (Quality) x (Marketing)

And PWCT 2.0 will be our markting Hourse - You get PWCT (While Ring exist inside it)
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+...@googlegroups.com.

--

---
You received this message because you are subscribed to the Google Groups "The Ring Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ring-lang/10b8313f-3f90-4a4c-8451-a05539602d54o%40googlegroups.com.

Nestor Kuka

unread,
Jul 26, 2020, 10:39:06 AM7/26/20
to The Ring Programming Language

hello mahmoud

thanks for the (comprehensive) comparison on the part of python/ruby/../ring.
i vividly remembered my comparison (years ago) between python/ruby (ruby also won for me).

it is obvious that for a system such as CAD or (say) PWCT, you should use the Qt (this is the logical consequence, there are no objections).

but it is anything but logical to take a "nQueens", a "Knight's Tour" or a "Sudoku" with Qt. it's like shooting sparrows with cannons... this is - short & clear - exaggerated!

greetings :-D
...

Mahmoud Fayed

unread,
Jul 26, 2020, 11:24:55 AM7/26/20
to The Ring Programming Language
Hello Mansour

I totally understand and share your vision.
Let's invest in the foundation, and quality is the foundation.

You are welcome :D

Greetings,
Mahmoud
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+unsubscribe@googlegroups.com.

--

---
You received this message because you are subscribed to the Google Groups "The Ring Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+unsubscribe@googlegroups.com.

Mahmoud Fayed

unread,
Jul 26, 2020, 11:27:39 AM7/26/20
to The Ring Programming Language
Hello Nestor

but it is anything but logical to take a "nQueens", a "Knight's Tour" or
 a
"Sudoku" with Qt. it's like shooting sparrows with cannons... this is
 - short & clear - exaggerated!

I agree with you, one of the design decision behind Ring is to be lightweight (Simple & Small in Size)
Qt is very large dependency and a lot of applications are simple and doesn't need all of this power

That's why on my to-do list is supporting a simple, small & portable GUI library

Greetings,
Mahmoud

Nestor Kuka

unread,
Jul 27, 2020, 6:36:25 AM7/27/20
to The Ring Programming Language

Hello mahmoud

Thanks for the link. it looks interesting..
I looked at it, but I don't have the guts to rate this (after the Raylib thing that looked so easy too).

Another point is the statement "I have it on the pending list". there is certainly still a lot .. in any order.

You know, Mahmoud, and I don't want you to see that as hassle, but do you know how long I've been waiting?
I fear if I can still live it (in a state that is capable of thinking), then in an age when I can only devote myself to
my grandchildren. I already have two .. and not the smallest. :-D

Have a nice day.
...

Am Sonntag, 26. Juli 2020 14:43:46 UTC+2 schrieb Mahmoud Fayed:

Mansour Ayouni

unread,
Jul 27, 2020, 7:07:58 AM7/27/20
to Nestor Kuka, The Ring Programming Language
Hello Nestor,
I wish to you all the health and happiness one could have in life.

I totally share your concern of having something really simple to design graphic applications in Ring.

This is something I will be working on, while preparing for my second book on Ring.

In fact, the book will be dedicated to programming GUI applications using RingQt. In the process of making samples of code in that book, I will be proposing a lightweight graphic library, that is declarative and very easy to use, just like QML for Qt.

More details about this in a near future.

All the best,
Mansour

--

---
You received this message because you are subscribed to the Google Groups "The Ring Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ring-lang+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ring-lang/879c441b-e039-41cc-9ffd-5aa4b2fa4e2fo%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages