XaiJu
sfmlab
sfmlab

patreon


Development roundup: March 2022

Hi everyone. 

First of all, welcome to all the new Patrons who joined over the last few weeks. And returning patrons, thanks for your continued support.

If you haven't already, connect your Patreon account to your site and Discord accounts to claim your benefits.

It's been a while since the last update, and a lot of work has been happening on the site over the past half year.

Framework changes

The biggest changes happening on the site have been related to interactive site elements. The backend is still written in Django (Python), but I'm introducing new Javascript components on the client side. Yes, I've finally started incorporating more Javascript in the site, to build more interactive elements. This has been a particularly contentious point for me over the years. In the past, my goal was to keep the Javascript to a minimum. Javascript is a terrible language and is supported by an even worse development ecosystem. It is also the primary cause of security issues in modern browsers. This is why it is often safer to disable Javascript entirely using browser extensions like NoScript. If you disabled Javascript in the past, most pages on the site will still work without issue, since it's just HTML and CSS rendered on the server side.

However, attitudes and expectations have shifted over the years. Users expect a certain fluidity in web experiences. And search engines also prioritize short initial page load, with dynamic elements to enhance it. This is only possible with Javascript. My personal "Web 1.0 sensibilities" are not shared by many people anymore, especially not the type of person who would use the site. Plus, over the years much effort has been put towards combining certain approaches into a more unified web standard. One of these standards is Web Components.

Over the past few months, I've been taking steps to enhance site performance by slowly introducing these Web Components. These are custom html elements that have their own, self-contained functionality. They're easy to re-use and often have important performance benefits. To make this happen, I'm using the lit framework. If you're familiar with component frameworks like React and Vue, it's basically one of those. Lit is created by Google (gasp!), but not to worry; there's nothing scary about this framework. The main reasons for using it, are its low memory footprint, extremely good performance, and its easy to understand structure. It's also the framework that we are adopting at work, and it gives me a great opportunity to learn and improve upon my skills. Both at work and in my hobby.

So for a while now, you may have seen new "lit" elements pop up all over the site. Let's look at a few.

Collections

As mentioned in the last development roundup, the main improvement goal for the sites at this time is being able to search for and find content. As a part of this, I added a "Collection" system. This system allows users to create their own lists to organise models that they like, and want to be able to find again in the future. Lists can be private, unlisted and public. It's very similar to Playlists on Youtube, except there's no way to view/download every file at once.

Parts of this collection system were built the old way, such as the backend systems and overview templates. But the way items are added, involves a special lit element. The icon with the heart is a custom lit element that dynamically loads a user's collections, and checks whether or not the current item is included in that collection. When you click the checkbox, the item is added to- or removed from the collection. All the necessary "business logic" is contained within the element. And since the element appears multiple times on the same page (one for each project item) it is efficiently re-used many times without a loss in performance.

The collection functionality is already seeing a ton of use. Nearly 4000 collections have been created, of which about 200 are public. For now, a few example public collections are listed on the frontpage, with a separate "public collection page" coming in the near future. I hope you find this feature useful so far!

Site Search

Remember the tagging project from last year? One of the major steps taken on that front is the improvements to the site search. Using the different types of tags to intuitively search for models.

The search element is composed of several smaller web components. The 18+ and Furry filter toggles for SFMLab for example, are a single element that's re-used several times. Initial suggestions wished for the "exclusive" filters back, which is something that a regular checkbox couldn't support. But thanks to these components it's easier to build a new one and replace the functionality

Furthermore, the initial page load is much shorter thanks to this new search element. Projects load in after the page is loaded, and filter options are fetched without reloading the page. The pagination elements are also web components, to switching between pages is just as instant. The page loads are measurably faster, regardless of where you are in the world.

Further progress remains to be made however. The tagging project is not over. Not all uploads have been tagged. And new uploads are still being tagged with invalid tags that do not follow the tagging guidelines. The next steps are in adding better tools for tagging content for uploaders, as well as tools to moderate tags. Nothing's ever easy, but we'll get there!

Youtube Channel

The Open3DLab Youtube channel has also gotten some attention over the past few months. The channel has finally been approved for the Partner Program, so any ads that appear on the videos will now support the site as well. Plus, 6 new videos have been released over the past few months. I'm also working on a Blender rigging series of which the first part is set to be released later this year. So subscribe if you haven't already! https://www.youtube.com/c/Open3DLab/ 

Other updates

What else is there? Well, the site now has RSS feeds for you extreme nerds out there. If you want to add site uploads to your feed readers, or use them to create a bot: you can. You can find the links in the footer of each of the sites.

Also, the entire comments section has been rewritten with web components, and loads in dynamically! This makes some of the pages with really busy comments sections load much faster! Especially useful for really popular uploads.

Also note that the download speed limits to the free server have been raised form 250kbps to 500kpbs. This change was made around Christmas, but made permanent thanks to the supporters of the site. So hats off to you!

Future plans

As mentioned, the search project is still a theme for this year. People need to be able to find what they're looking for when visiting the site. In addition to that, there are further projects on the backend that should make streamline the upload and review process. The Blender Asset Tracer will be integrated into the backend. This is the groundwork which should facilitate integration of the Blender Asset Library when the time comes. I'm also waiting on progress from the Blender Foundation from this, so if you wish, support the development of Blender as well.

Also, I hope to shoot some behind the scenes footage at the datacenter soon as well, for the next behind the scenes video. I'm not sure when I finalize the rigging tutorial series, it's a lot to juggle right now. Either way; Youtube content will continue!

Furthermore, if you have feedback regarding the site, please feel free to drop a comment, send an email, or leave it in the Discord. Please don't contact me about bugs with specific uploads, but contact the uploader instead.

As always, many great models were uploaded to the sites over the past few months, and I would like to thank the contributors who shared their models with the world.

I want to thank the Patrons once more. Your pledge helps keep the site running, and I couldn't be more thankful.

Best of luck to you all.

Salaryman (Ganonmaster)


P.S. Stay tuned for a big NFT announcement next week! It's a special, limited time DeFi experience!


More Creators