DEV Community

Cover image for Wasp - language for developing full-stack Javascript web apps with no boilerplate

Wasp - language for developing full-stack Javascript web apps with no boilerplate

Martin Šošić on March 04, 2021

For the last year and a half, my twin brother and I have been working on Wasp: a new programming language for developing full-stack web apps with l...
Collapse
 
jankapunkt profile image
Jan Küster • Edited

Do you think it would make sense to have interfaces between wasp and in order to allow people to keep their stack but ease the way they build their apps with their stack using wasp? What challenges do you see with this idea?

Edit: I think this is what you aim for, I just want to ask how flexible you want people to choose their stack?

Collapse
 
martinsos profile image
Martin Šošić

If I got you right, it is exactly what we are trying to do: so you define stuff in Wasp, but then you can use React to implement stuff and there is an API between Wasp and React, so you can import things you defined in Wasp into React and use them there. And you can also import your React stuff in Wasp and use it there, so it goes in two directions really.
Right now it is React and Node, but we want to add more of it: this means not just React but for example also Vue and Svelte. And for the backend, maybe even other language next to Node -> for example Python or Go. That is something we could do. However, for now plan is to focus on React / Node combo and get it working really well and then we can expand :).

Collapse
 
jankapunkt profile image
Jan Küster

Makes total Sense from a strategic pov. You got me right - having Bindings to several layers of Frontends, Database etc. would be awesome. I could even think of an interfsce to RoR or Meteor, because from my POV the DSL Just defines the general Domain concepts and does not necessarily know how these concepts are implemented and thus you could define connectors for anything to implement them, right?

Thread Thread
 
martinsos profile image
Martin Šošić

In theory yes! It really depends on how much we detach the DSL from the implementation. Right now we are not detaching us as much as we might possibly like :D, just because it would slow us down a lot - instead we are going with relatively coupled approach, in the sense it is somewhat coupled to React / Node. But, once we get that working, we will look into generalizing it.
When speaking about frameworks like Meteor or RoR: we could have generators that based on the DSL generate stuff in Meteor or RoR. Right now we have just one generator: React/Node/Prisma generator.
However, using Meteor and RoR as building blocks that connect/interface with DSL is not the way we are going right now, because DSL we are building right now is about the same level of expresiveness as is Meteor and RoR, so blocks should be lower-level (like React, Node, Prisma, ...). I think Meteor and RoR could become valid "blocks" if we raise the abstraction of DSL to the level of e.g. microservics and similar, which we are not planning for now.
I might have explained this badly or misunderstood you, please let me know if this makes sense or not!

Thread Thread
 
jankapunkt profile image
Jan Küster

Not Bad at all, makes all Sense. Thank you! Will keep an eye on this!

Collapse
 
alvarolorentedev profile image
Alvaro

Sounds really inteesting ☺️. will have a look. Best of luck.
A colleague and me have worked on a very similar idea but not actually solving it at a language level but a composable actor system that can work in backend and frontend with decorators.

Collapse
 
martinsos profile image
Martin Šošić

Thanks Alvaro! That sounds interesting, do you have any materials on it? For example a blog post or maybe a github repo? I would love to check it out! Maybe get some good ideas for Wasp.

Collapse
 
alimobasheri profile image
MirAli Mobasheri

Good luck! 👍

Collapse
 
martinsos profile image
Martin Šošić

Thanks Mir :)!

Collapse
 
pozda profile image
Ivan Pozderac

This is nice effort to make development more simple. Great job lads and keep up the good work!

Collapse
 
martinsos profile image
Martin Šošić

Thanks, that is exactly what we want to do :)!

Collapse
 
speratus profile image
Andrew Luchuk

Just out of curiosity, why did you choose to implement the Wasp compiler in Haskell?

Collapse
 
martinsos profile image
Martin Šošić

It is a combination of reasons -> on one hand, brother and I have been playing with Haskell for some time and wanted to use it on a bigger project. On the other hand, Haskell is a really good fit for writing compilers, and has a good ecosystem of libraries that support the use case of building a compiler. If not in Haskell, I think we would probably consider doing it in TypeScript, which would make sense from the side that Wasp users are mostly coming from the JS background.

Collapse
 
martinsos profile image
Martin Šošić

Interesting, kind of reminds me of RoR! Anything specific you had in mind when sharing this?