August 2020 Status Update

It is a sunny day, somehow I got up early this morning. The cool, chilling breath of air reminded me we are at the tail of the summer. It felt so strange, this summer was like it was never here. Hiking, go swimming, taking a trips and night outs. all those experiences for a normal summer I would do, they are all absent, hope I don't regret too much for crunching code at home all these months. It was a tough year actually, I was determined to push Taiwins to a usable state, it has been stressful. Every time I look at the pile of the TODO list, a sentiment of endless development and desperate hit me hard like a heart attack. I had to work a lot to stay healthy.

Here I am taking a clear picture of my memory from April. In the begining it was only getting a window to show up, and getting wl_seat to work, then I needed to draw surfaces, that is implementing wl_surface, binding textures from wl_buffers and paint them on the window, I had to writing dummy clients which normally shouldn't work because wl_surface requires a "role" (like xdg_toplevel). Rigging up the surface transformation code so it rotates and scale correctly. Boy, those transformations, I realised my understanding of Inverse Matrix was not correct at all. Subsurfaces was developped along the way, I didn't even know the usage at the begining, until I read this blog-post. Back then when I was writing wayland client library, I needed not care about the protocol I don't understand, but now I have no choice now I guess. Then here we go, the xdg_surface. The one that gives you all the desktop applications, turns you surfaces into xdg_toplevel and xdg_popup. The difficulty was that I want to implement the libweston-desktop style interface so I can interface with wl_shell_surface as well. xdg_surface was way more complicated, this is the point where I ran into the wall of wl_object dependency, where I found clients offer destruct wl_surface, xdg_surface, xdg_toplevel, xdg_popup in the arbitrary orders. Boy I hope I implement the dependency correctly, now I do not run into dangling pointers (or I think)? Plenty of protocols like wp-viewporter and wp-presentation were implemented along the way, those were "easier" one, did not give me many hiccups. Now I am on the way implementing an efficient renderer. Interestingly even with only a basic renderer, the renderer is still performing at sub-millisecond per frame.

Now compared to June or May, I felt much better, back then it felt like mission impossible, I tried to focus on the moment, try not think about how it can accomplish like KWin. But who I am kidding, With myself, certainly NO, only if I can get more people engaged in the project, the one thing I am not good at.