plankanban / planka

The realtime kanban board for workgroups built with React and Redux.
https://planka.app
GNU Affero General Public License v3.0
7.88k stars 731 forks source link

Refactoring to Typescript? #118

Closed byteSamurai closed 3 years ago

byteSamurai commented 3 years ago

At first: Great project! I see much potential here and want to help.

On the other hand: As far as I see Javascript has been chosen as programming language and when it comes to maintainability I consider it as a brave decision for long running projects.

Are there any concerns moving to TypeScript? I see this requires a lot of effort, but the later this happens, the hard it will be and I am happy to help here.

I collected a few information according the used technologies:

Maybe something like webpack is needed additionally. Overall I see no reasons not doing this. Additionally a migration/refactoring guide like the following would be neat, to avoid a mega-pull-request: https://www.lucidchart.com/techblog/2017/11/16/converting-600k-lines-to-typescript-in-72-hours/

Also, this might ease the effort a bit: https://github.com/airbnb/ts-migrate/tree/master/packages/ts-migrate

So, what do you think?

nickbe commented 3 years ago

Let me answer this. The current project in its already stable state is extremely well designed and well working. Currently there are lots of plans for the next version and Maks is working very hard to achieve what has to be done.

Concerns? Yes. Every few months there's a new more hip langauge, module, tool or platform coming along. Being a programmer myself for 30 years now I'm convinced that nothing good comes of this principle. But making the best of good tools at hand does. Every system claims to be better than the last. But none is - period. And that definetely includes Typescript.

So there are definetely no plans to move away from Javascript at this stage. We will put effort in other things.

byteSamurai commented 3 years ago

Interesting you consider Typescript as young hipster-language. I habe only 15 years experience going the way from Mootools over jQuery and consider Typescript as a true improvement. But I expected getting an answer like that. Your project, your choice.

Thanks for the response. πŸ™‚

byteSamurai commented 3 years ago

@nickbe just to learn from your experience: Can you give me a few indicators what an extremely well designed solution looks like?

Obviously there is much more I need to learn πŸ˜…

nickbe commented 3 years ago

I think you know that the answer to this question is very simple. A well designed solution first and foremost considers functionality and concept over technical playgrounds. In other words - stop playing around, take your tools, and get it done.

While working on something - never! change your tools if you already know they work. Think your concepts through and through on a piece of paper - again and again - with sticks or lego stones - it doesn't matter. But always think in concepts - not in tools. Because this will only add another "complete rewrite" to the thousands of github projects.

The war of the tools is always fought on the back of those willing to experiment for the sake of the experiment. Changing tools only gives you a different hammer or a new drill, but never a better house. For this you simply have to become a better creaftsman.

I don't want to argue pro or against tools here, but typescript for me is not even a proper programming language to begin with. It's just another pseudo language that will have to keep up with javascript itself. It's just a way of making one scripting language "look" like something else. And as I said already - inventing a new forms of scripting language abstraction will not lead to better products.

byteSamurai commented 3 years ago

Forgive me, but you forgot somehow about the indicators. I am with you regarding the tool chain change while the project has started already. Though I would prefer to weigh against pros/cons - I consider it very naive to stay with a tool, while another tool can make some task much more simple.

Also I consider Typescript not as a tool, but an extension to JavaScript. (Superset)

Regrading your opinion of Typescript, well... Let's say I have a completely different experience with it, but it doesn't matter at all.

However, you said Typescript cannot improve "the house". That is a strong statement. I thought Typescript (correctly used) can show you some issues in your code, before even trying it in the browser. Is this not the case anymore? (Seriously asking)

nickbe commented 3 years ago

To be honest I don't have time to discuss opinions with you. I'm managing too many projects at the moment and all I can say is: Always concentrate on the job at hand with the tools you know best. If typescript is your thing than use it. We'll will stick with Javascript for now, because it's working just fine and gets the job done.

byteSamurai commented 3 years ago

I see. Thanks for the exchange of views. Have a nice week