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.
However, I ever wondered about NASA reinventing wheel for transportation at moon and Rover the Mars robot.
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.
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
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!
Top comments (26)
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.
// , Someone needs to sit down the guys that have proclaimed themselves Blockchain "maximalists" and explain this to them.
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!
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.
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
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
andwidth
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.Great innovation and change comes from rethinking status quo.
I usually put myself in a theoretical parallel universe and start to think, how the better parallel universe would look like. There, technology would have been invented more intelligently from the start.
I noticed, that constraints of the existing technology are often caused by lack of thought of the authors. And many people will think within these constraints after they learn the technology.
That means, I don't see the problem in thinking of and experimenting with replacements for existing technology. Questioning and eventually changing the system is required, same for politics and economics. I think that HTML has usability problems which should be fixed. HTML makes it easy to lose overview.
Big "however" however! In order to really replace existing standards, it needs to be original in concept, it needs to solve new problems (not those which are solved already) and must be an original idea. That's why almost all new programming languages are useless because they don't get to the point of innovation, they don't find solutions for general but small specific or little personal problems, they don't rethink programming, although there is huge potential.
Reinvention just tries to "correct" existing technology. The improvement is too negligable.
Your effort looks astonishing but it does not feel like an innovation. It could make development easier by writing and reading less code but it looks like "HTML6". It does not solve new problems or like a new paradigm.
I'd like to have a directly mutable GUI technology with WYSIWYG editing mode (for customization and extension) which navigates and edits like a markdown text editor and a help mode where tutorial macros β selected for a searchable use case β can assist you with explanation (plus navigational tips), an outline of the use case and automatic navigation between the single steps. The underlying text representation of the GUI would just serve for editing, by default not even being visible, and for loading/saving GUIs from/to files easily.
I don't know, what the future will give us. Dreams like the ones of mine might be unrealistic from the point of presence but without ideas the future has no perspective.
Wow! I mean you spent 6 months, that is awful lot of time for such bad comments.
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.
Definitely, and hey I would love to contribute to this project and I am learning TypeScript so you could help me.
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.
can u help me understand the structure of the project and how everything is working
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
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.
You need to make a new browser, not adapters.
...or ask for proposal to currently available browser, if they want. Probably they just reject it.
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.
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
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 π
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.
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 :)
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 π
Thank you buddy π
Continue....
Wonderful work!!!!
Thanks buddy π
I have to create account to tell you that I'm support you on the idea of finding an alternative. Everything has it own pros and cons, but why html is the only choice when it comes to web? Worth the effort to think, my friend.