tinganho / l10ns

Internationalization workflow and formatting
http://l10ns.org
Apache License 2.0
234 stars 24 forks source link

V3 Consideration #136

Open tinganho opened 8 years ago

tinganho commented 8 years ago

The goal of V3 is to modernize the architecture of L10ns, support multiple programming languages and make them pluggable. A new much more productive web interface for handling complex translations.

Though there are some obstacles, like choosing a programming language. And the other find time to implement it.

I will choose new programming language for the new implementation. The goal is to find one that is at least as strongly typed and modern as TypeScript(since I'm quite active on the TS community), with awesome tooling support and will last many years and actively improved upon on.

I've since tried C#, Rust, C++, Swift and TypeScript. Rust failed on being a productive language IMO. I don't quite liked traits over inheritance model they applied. Swift doesn't support Windows yet and too bad tooling support for tools other than XCode. C++ looks awesome since it will definitely last for at least 10 more years and is actively improved upon, though the community is not strong and working with boost libraries is a hell. That leaves us with C# and TypeScript. Lets begin with TypeScript. I don’t like all the JS awkwardness that TS have to deal with. Type definitions are also a hell to deal with. And I don’t think TypeScript will last very long, since we are in an era of new programming languages, TS might be a risky bet. C# looks amazing though one thing it lacks is control flow analysis and non null typing, which I can't currently live without. Though it will be highly likely be introduced in C#8.

Again since we are in an era of new programming languages, I think it's best to wait and keep an eye. L10ns is a huge project and my goal is to make it as timeless as possible and choosing a good programming language that can last long will help a lot.

My time is also limited implementing everything from the core to the interface will roughly take 5-6 months. And I honestly don't see that time in my horizon right now. Though nothing prevents me from implementing small steps at a time. And I will also accept any contributions as long as the architecture of V3 is set and some significant have been written, so people can begin to contribute by looking at the current code structure.

tkhyn commented 8 years ago

Glad to see you're thinking of a V3 to make l10ns even better!

Have you considered Python? It's going to be around for a long time, and there are 100s of libraries available for any application. If you need performance for a part of the program, you can still program a module in C/C++.

I used to program in C++ before, and I've almost forgotten it as I'm now using the approach: "anything that does not absolutely require C++ I do it in Python" and end up programming everything in Python. Now as I have to do some work on the front end as well and I have to use JavaScript (ES6-7, much like TS) and I am always very happy when I go back to the server side in Python after a JS debugging session ...

I'd definitely recommend you have a look at Python. I keep seeing new languages coming up but Python has really become the most sensible choice for almost anything for me.

EDIT: and actually I would love being able to use l10ns on the server side in my python code as well!!

tinganho commented 8 years ago

I'm afraid python is not suitable since it is not a statically typed language.

tkhyn commented 8 years ago

You can add optional typing in the latest python versions. See the typing module or the mypy interpreter, conforming to the PEP484 specification.

EDIT: unless you insist on the statically typed, of course, where only the mypy interpreter can help