DEV Community

loading...
Cover image for I Tried to Create HTML Alternative, Here's What Happened...

I Tried to Create HTML Alternative, Here's What Happened...

thorx86 profile image Athaariq Ardhiansyah ・3 min read

Hi Folks!

Most of you are familiar with "reinvent the wheel" right?
You know... Re-create something that used by a lot of people, like HTML.

Illustration of Reinvent the Wheel

Source: Alan O'Rourke

However, I ever wondered about NASA reinventing wheel for transportation at moon and Rover the Mars robot.

Picture of Rover the Mars Robot

Source: NASA

In some cases, we have to create better alternative for specific purpose. If we remember back in time, Tim Berners-Lee created HTML as globally shareable linking document.

Fast-forward to current day, we still use HTML. Moreover, it's not only for sharing document, but online application!

We successfully bring app that used to be OS specific, into any modern devices. However, HTML core concept is document (like Microsoft Word) not UI layouting for apps. Thus, we have some drawbacks:

  • We stuck on top-to-bottom direction concept. No constraint layout like Android XML layout.
  • Thanks to CSS, we have position: absolute; and flexbox. However, CSS is mainly purposed for styling document not UI layout for app.
  • Yes, we can put something like Material Design (material.io provides CSS snippets). The question is: does CSS standard care about modern UI/UX design?

Please don't get me wrong. Assuming you understand Web and Android Development, try build a login screen without logic (javascript always easier btw) on both HTML+CSS and Android. Then tell me what you feel.

I'm an Android developer before. Since 2017, I learn myself to develop web-based application. At that time, I have no idea how the f*** I put a box exactly at the center.

Simple HTML login screen, but everything are located at top-left corner

I've tried text-align, grid, and even flexbox causing HTML body to oversize so it's no longer exactly at center (I wish I knew box-sizing back then).

The solution? use margin-top: 25%; and margin-left: 25%; with width and height are 50%.

Wait... Where is the "gravity"? Is this a joke?

Yeah I have no idea why CSS behaves like that back then. So I force myself to follow the flow, then get into realm of React and Vue, got a lot of fun with them.

At April 2020, I have a lot of spare time and I have intention to bring the "Android way" of UI layouting for apps to web development world.

So I decided to create FIWL

HTML and FIWL concept are different

It tooks 6 months to work with. I spent almost every night, sleepless, only for making my idealism to reality.

At August 2020, it barely usable for public. Even though essential components are not in shape yet, anyone can try the concept on their own computer.

Then I share it to people at forums

No one get interested. Then what? well... I create a video tutorial.

To gain more attention, I share it to some communities at Discord.

Worse, everyone hate it.

These are what people said:

  • Don't be stupid, Thor.

  • Nobody want to start over again, it's not helpful by the way.

  • Lol it can't run minecraft

  • Imagine you did wrote thousands line of HTML CSS JS, will you ever re-write those again in different language? or at least API?

  • Enhance the wheel, don't reinvent it.

The last one hits me hard, very hard. I wasted my precious 6 months of coding for nobody.

Imagine if that time I spend with my friends to build helpful startup. I don't have to eat instant noodles every afternoon right now :(

So what about FIWL now?

I rather leave it as spare time project. However, if you found it useful, please let me know so I can maintain it better.

Anyway, thanks for being here. I want to say something for you:

Your time is more precious than any existing assets. Invest it in the best way, good luck!

Discussion (24)

pic
Editor guide
Collapse
bytebodger profile image
Adam Nathaniel Davis

I applaud such work as a way of expanding your own knowledge. Projects like this can really accelerate your engineering skills and gives you a much deeper perspective on how such systems come into existence.

But in terms of ever being a "replacement" for HTML+CSS, please keep in mind that the potential adoption of your system has very little to do with its merits - and almost everything to do with the ubiquity of the platforms on which your system can run. You see, there's a huge difference between saying: I will create a new environment that will run in existing browsers, versus saying: I will rework the basic language by which browsers operate (in other words, I will require all of the browsers to rework how they operate).

Imagine that I created a brand new, more efficient, more logical way to transmit phone calls. Maybe it's 100x better than the old way. But if everyone needs to get a new phone before it can work, the proposal will probably go nowhere. Also, even if the proposal were adopted, it wouldn't be adopted by the users. It would be adopted by the phone service providers.

So in your example, you really can't judge FIWL by whether other programmers want to use it. Of course they don't want to use it. If they use it, what they build won't work in any browsers. You can only judge it by whether you can convince the browser creators to adopt it.

Collapse
v6 profile image
πŸ¦„N BπŸ›‘

// , Someone needs to sit down the guys that have proclaimed themselves Blockchain "maximalists" and explain this to them.

Collapse
thorx86 profile image
Athaariq Ardhiansyah Author

Seems like the only way to convince people "revolutionize" thing is building a company (yup that won't be easy) and compete with existing company like Google. Anyway, let me know if I wrong, thanks!

Collapse
bytebodger profile image
Adam Nathaniel Davis • Edited

Again, I think it's cool that you've taken the initiative to do something like this. But if mass-adoption is your standard of success, then "building a company" won't be of much help to you.

Look again at my analogy regarding phone transmissions. Let's imagine that I've created a way to transmit phone calls that is just soooooo much better than the existing standard. But... the existing phone carriers won't listen to me. So, what should I do???

Well... I could "build a company" to compete with the existing phone carriers. But there's one massive problem with this idea:

Once I've built my company, that will transmit phone calls with my superior standard, and I'm selling phones that will utilize my superior standard, it still means that no will be able to talk to my customers - unless they have also bought my phones.

This means that, if someone has bought my phone service, and even if the technology underlying my phone service is somehow "better", they still won't be able to talk to anyone else who's using any other phone carrier.

Imagine if you bought a T-Mobile phone and it would only allow you to talk to other T-Mobile users. And imagine that iPhone users could only talk to other iPhone users. That would be an absolute mess.

So, no. Building your own company probably won't solve any of your problems. Not unless you actually think that you can get nearly all of the world's internet users to view web pages through your own browser, that were written in your own proprietary markup language.

Umm... Good luck with that.

Thread Thread
thorx86 profile image
Athaariq Ardhiansyah Author

That's really great analogy, thanks for that 😊 I'm wondering if World Wide Web Consortium actually willing to open their mind for the next web standard

Thread Thread
bytebodger profile image
Adam Nathaniel Davis

The Consortium is indeed the "correct" way to go about making such changes. It probably wouldn't happen as an alternative to HTML/CSS, but rather, as an extension to them. The Consortium works as all big, distributed, voluntary committees work - that is to say: they work at glacial speed and it's hard to get them to agree on much of anything. But it is, theoretically, possible.

But you should also keep in mind that what you are building, in many ways, goes against what that Consortium has been trying to do for the last 20+ years. In the very early days of HTML, there were more examples where style was stuffed right alongside the content (e.g., the height and width attributes of table cells). There was a very conscious effort to strip the style elements out of HTML. The thinking was to consciously provide a separation of style and content.

While I don't necessarily disagree with your approach, you are stuffing style elements right back into the content. I can guarantee that, if you were to talk directly with folks at the WWW Consortium, and you explained that your new-and-improved approach includes such built-in attributes as alignContents, width, height, backgroundColor, cornerRadius, etc., your idea would be dismissed immediately.

Collapse
yum profile image
Antariksh Verma

Wow! I mean you spent 6 months, that is awful lot of time for such bad comments.

Collapse
thorx86 profile image
Athaariq Ardhiansyah Author

You're right. I think this not only happened to me. Everytime someone tries innovate things, critics always exist. It seems to be part of reality.

Collapse
yum profile image
Antariksh Verma

Definitely, and hey I would love to contribute to this project and I am learning TypeScript so you could help me.

Thread Thread
thorx86 profile image
Athaariq Ardhiansyah Author

Sure! you could clone the source code and play with it.

By the way, I'm thinking of building a core team for FIWL development, minimum 5 people (including us). That will be best if several of teammate understand WASM because render performance is the main concern.

Thread Thread
yum profile image
Antariksh Verma

can u help me understand the structure of the project and how everything is working

Collapse
kevinvandy profile image
Kevin Van Cott

It looks like you just ended up re-inventing JSX from React. You could cut and paste that code in a react project, make the components, and the code would look just like that pretty much

Collapse
thorx86 profile image
Athaariq Ardhiansyah Author

At that time, I tried to avoid any form of compilation. So it must be directly run at browser via adapter. The adapter itself can be in form of ".js" or WASM. And yes... I ended up reinventing JSX, with different concept.

Collapse
yoursunny profile image
Junxiao Shi

You need to make a new browser, not adapters.

Thread Thread
thorx86 profile image
Athaariq Ardhiansyah Author

...or ask for proposal to currently available browser, if they want. Probably they just reject it.

Thread Thread
yoursunny profile image
Junxiao Shi

Someone invented new network protocol that replaces TCP/IP, and now I'm building high-speed routers.
yoursunny.com/t/2020/NDN-DPDK-ICN2...

Cisco, a major manufacturer of IP routers, is building their version of router for this new network protocol as well.

Never say impossible.

Collapse
patarapolw profile image
Pacharapol Withayasakpunt • Edited

There is also QML, which does not use HTML, but it still uses a JavaScript-like engine. It is also cross-platform, not only for desktop, but also mobile. It does not use any web browser at all.

I also know there is Sciter, but I am not sure whether it is an HTML or not.

Collapse
thorx86 profile image
Athaariq Ardhiansyah Author

That's looks prettier than any XML variants, honestly. Just add little touch like Material Design's ripple and auto animation, it will be perfect!

By the way, I didn't see conditional attribute as example different width on portrait and landscape screen at QML. State of the art potential :)

Collapse
seanmclem profile image
Seanmclem • Edited

I've been thinking about something like this for a while. Perhaps something that is faster for JavaScript interface with than HTML. I'm always interested in cool alternatives so I'll definitely going to look at this

Collapse
thorx86 profile image
Athaariq Ardhiansyah Author • Edited

The project is kinda unmaintained for now. However, I would assume to myself if at least has one pull request or issue, then I have to maintain it. Thanks for sharing your opinion πŸ‘

Collapse
kaleidawave profile image
Ben

Looks cool but difficult to justify its existence. With any personal project it is less about the content of the project and more about the process. It would be interesting on what ideas you have taken away from working on this project? What have you learnt from writing it? What opinions have changed since you started?

Some projects will fly and others won't. But working on anything large and complex will make you a better developer. Keep it up πŸ‘

Collapse
thorx86 profile image
Athaariq Ardhiansyah Author

Thank you buddy 😊

Collapse
manishfoodtechs profile image
manish srivastava

Continue....
Wonderful work!!!!

Collapse
thorx86 profile image
Athaariq Ardhiansyah Author

Thanks buddy 😊