{"id":15036,"date":"2024-12-07T11:25:36","date_gmt":"2024-12-07T19:25:36","guid":{"rendered":"https:\/\/speculoos.world\/2024\/12\/oscc24-w4os-presentation\/"},"modified":"2024-12-07T11:25:36","modified_gmt":"2024-12-07T19:25:36","slug":"oscc24-w4os-presentation","status":"publish","type":"post","link":"https:\/\/speculoos.world\/nl\/lab\/w4os\/2024\/12\/oscc24-w4os-presentation\/","title":{"rendered":"OSCC24 w4os presentation"},"content":{"rendered":"<p>For those who missed the presentation of w4os plugin at OpenSimulator Community Conference 2024, here are the transcript and slides of the presentation, with some additional notes and Q&amp;A from the audience.<\/p>\n<h2 class=\"wp-block-heading\">1. OpenSim setup<\/h2>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-01-all-i-want.jpg\" alt=\"\" class=\"wp-image-5648\" title=\"\"><\/figure>\n<p>We all face the same challenges\u00a0: getting a fully operational grid, and offer all the features. OpenSimulator core provides the main ones, but not all of them.<\/p>\n<p>You need to install at least a web interface allowing users registration, a web assets server, a couple of helpers and for some, a currency server.<\/p>\n<p>At least half a dozen different applications, each of them from a different project, using different platforms or languages, and even when they use the same language, they use different standards.<\/p>\n<h2 class=\"wp-block-heading\">2. Graph \u2013 OpenSim raw<\/h2>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-02-graph-opensim-raw.jpg\" alt=\"\" class=\"wp-image-5631\" title=\"\"><\/figure>\n<p>This is OpenSim \u00ab\u00a0au naturel\u00a0\u00bb.<\/p>\n<p>If you are not familiar with this, nearly each line on this graph requires its own configuration, with its own name conventions when not in its own programming language.<\/p>\n<p>If you <strong>are<\/strong> comfortable with this, maybe you should see a doctor. <img decoding=\"async\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/1f609.png\" alt=\"\ud83d\ude09\" class=\"wp-smiley\" title=\"\"><\/p>\n<p>Some of them even have no implementation at all, only workarounds, like the in-world search, replaced by beacons like OpenSimWorld or the initial HYPEvents project, no viewer integration.<\/p>\n<p>And of course, you need a website, too.<\/p>\n<h2 class=\"wp-block-heading\">3. And then, they were one\u2026<\/h2>\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-03-graph-flexible-helper-scripts.jpg\" alt=\"\" class=\"wp-image-5636\" title=\"\"><\/figure>\n<p>My first step, years ago, was to consolidate existing helpers and rewrite them to use a single config file. That\u2019s the project \u00ab\u00a0<a href=\"https:\/\/github.com\/GuduleLapointe\/flexible_helper_scripts\" target=\"_blank\" rel=\"noopener\">Flexible Helper Scripts<\/a>\u00a0\u00bb. It is still maintained as a standalone project, in parallel with w4os, as it is in its core.<\/p>\n<p>But it still doesn\u2019t solve the integration with a website.<\/p>\n<h2 class=\"wp-block-heading\">4. The approach<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-04-approach.jpg\" alt=\"\" class=\"wp-image-5656\" title=\"\"><\/figure>\n<p>So here is w4os, a \u00ab\u00a0WordPress interface for OpenSimulator\u00a0\u00bb.<\/p>\n<ul class=\"wp-block-list\">\n<li>A <strong>one-stop shop<\/strong> for all needs\u00a0: user registration, grid management, in-world and web helpers.<\/li>\n<li><strong>Why WordPress<\/strong>\u00a0? it\u2019s popular, it\u2019s open source, powerful and multilingual<\/li>\n<li><strong>Centralized management<\/strong>\u00a0: no more settings in different places, using different standards, unified installation method<\/li>\n<li><strong>Easy setup<\/strong>. Well. According to the support requests I got, it\u2019s still not easy enough, though\u2026 <img decoding=\"async\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/1f609.png\" alt=\"\ud83d\ude09\" class=\"wp-smiley\" title=\"\"><\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\">5. W4OS plugin structure<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-05-graph-w4os-base.jpg\" alt=\"\" class=\"wp-image-5668\" title=\"\"><\/figure>\n<p>W4os plugin centralizes the web interface (registration, initial avatar model, web profile, password change\u2026) and the helpers (in-world search, land sales, classified\u2026) in one place.<\/p>\n<p>It also gives the configs to include in OpenSimulator ini files.<\/p>\n<p>And all of this integrated with the rest of your website, with the same look &amp; feel.<\/p>\n<p><em>Added comment: w4os in this graph represents the plugin installed on your website, not the website of w4os.org.<\/em><\/p>\n<h2 class=\"wp-block-heading\">4. Avatar registration<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-06-features-registration.jpg\" alt=\"\" class=\"wp-image-5666\" title=\"\"><\/figure>\n<p>The first need is avatar registration. W4os allows users to register an avatar from the website.<\/p>\n<p>Some names can be protected, for example to make sure nobody uses your own name and fake being member of the staff.<\/p>\n<p>Users can choose their initial outfit. You define models by creating and customizing dedicated avatars in-world:<\/p>\n<ul class=\"wp-block-list\">\n<li>What they wear will be the appearance of the new user<\/li>\n<li>Their profile picture will be used on the website for model picking.<\/li>\n<li>You can define what models are available by a name rule, or select them manually.<\/li>\n<\/ul>\n<p>The avatar profile displayed in the viewer is also available on the website.<\/p>\n<h2 class=\"wp-block-heading\">7. Blocks<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-07-features-blocks.jpg\" alt=\"\" class=\"wp-image-5685\" title=\"\"><\/figure>\n<p>The big thing in WordPress is the blocks system. It allows you to configure any specific pages, or the template used by all or some pages.<\/p>\n<p>Several widgets are available in the plugin. They are all available either as Gutenberg block (the modern system), shortcodes (available with any theme), or modules for specific themes like Divi.<\/p>\n<h2 class=\"wp-block-heading\">8. Blocks Examples<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-08-features-blocks-examples.jpg\" alt=\"\" class=\"wp-image-5694\" title=\"\"><\/figure>\n<p>Some examples<\/p>\n<ul class=\"wp-block-list\">\n<li>Grid info<\/li>\n<li>Grid status<\/li>\n<li>Registration form<\/li>\n<li>Profile page<\/li>\n<li>Popular places<\/li>\n<li>Destinations guide<\/li>\n<li>Web search<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\">9. Splash time<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-09-features-splash.jpg\" alt=\"\" class=\"wp-image-5701\" title=\"\"><\/figure>\n<p>Thanks to the blocks and shortcodes, you can customize your splash page. The page displayed by the viewer as login screen.<\/p>\n<p>I am not particularly proud of Speculoos splash page, it\u2019s a bit busy right there, but that was only my taste a few years ago. It will be easy to switch to a clean display. When I\u2019m decided.<\/p>\n<p>The point is, everything needed is here. I can mix w4os plugin features (the orange grid info boxes on the left, the popular places on the center) with standard WordPress features (the blue latest news on the right). The best of both worlds.<\/p>\n<h2 class=\"wp-block-heading\">10. Viewer Search<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-10-features-search.jpg\" alt=\"\" class=\"wp-image-5680\" title=\"\"><\/figure>\n<p>Another fundamental feature is the search. While there are websites dedicated to this, it\u2019s sad not to benefit from the viewer features.<\/p>\n<p>W4os plugin (and more precisely the helpers), allow this. And you can either show results of your own grid, or show results from several grid using the same search engine.<\/p>\n<p>For example by using 2do.directory, but any search engine following the search helper protocol would work.<\/p>\n<h2 class=\"wp-block-heading\">11. Calendar<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-11-features-search-calendar.jpg\" alt=\"\" class=\"wp-image-5708\" title=\"\"><\/figure>\n<p>The calendar is something I care a lot. It\u2019s integrated, and as for other searches, using 2do.directory or another provider, you can give access not only to your own grid events, but also to other grids.<\/p>\n<p><em>Added comment: the calendar requires extra steps by design, as publishing an event is neither an OpenSimulator functionality, neither provided by the viewer and not yet by the plugin. Using 2do.directory service allows to share a calendar from a standard service like Google Agenda.<\/em><\/p>\n<h2 class=\"wp-block-heading\">12. Web search<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-12-features-web-search.jpg\" alt=\"\" class=\"wp-image-5722\" title=\"\"><\/figure>\n<p>Aside from direct search tabs like \u201cPlaces\u201d or \u201cLand for sale\u201d, the viewer provides a \u201cweb search\u201d tab. The results are provided by the same engine. It allows you to enable search directly through all viewer features, or directly from  your website, while maintaining consistency.<\/p>\n<h2 class=\"wp-block-heading\">13. Destination guide<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-13-features-guide.jpg\" alt=\"\" class=\"wp-image-5728\" title=\"\"><\/figure>\n<p>Destination guide is a small, clean presentation of interesting places, it\u2019s a convenient way to help your members find popular places to go.<\/p>\n<p>The Destination Guide block use the same source format as our in-world <a href=\"https:\/\/github.com\/GuduleLapointe\/Gudz-Teleport-Board-2\" data-type=\"link\" data-id=\"https:\/\/github.com\/GuduleLapointe\/Gudz-Teleport-Board-2\" target=\"_blank\" rel=\"noreferrer noopener\">Teleport Board<\/a> project, so you can easy provide the same recommandations in both ways.<\/p>\n<h2 class=\"wp-block-heading\">14. Most recent features<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-14-new-features.jpg\" alt=\"\" class=\"wp-image-5733\" title=\"\"><\/figure>\n<p>I always try to enhance the easiness of the plugin. There\u2019s a lot more to do, but it\u2019s getting better every day.<\/p>\n<ul class=\"wp-block-list\">\n<li>Different settings pages for each functionality<\/li>\n<li>Direct link from admin-bar menu<\/li>\n<li>Detailed instructions everywhere I can<\/li>\n<li>Localizable<\/li>\n<li>The plugin itself already includes English and French (frequently revised), as well as Dutch, German, Italian and Portuguese.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\">15. It\u2019s coming\u2026<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-15-complete-structure.jpg\" alt=\"\" class=\"wp-image-5715\" title=\"\"><\/figure>\n<p>And now\u00a0? Where are last year\u2019s announced features?<\/p>\n<p>Here is a graph to better understand.<\/p>\n<p>Helpers and web integration are huge. A lot of different things linked together, and each change has implications everywhere. It\u2019s a lot of work for a single person. I am doing my best.<\/p>\n<p>The next thing to come is the separation of avatars and WordPress user accounts, to allow a more flexible approach: either one user\/one avatar as currently, or one user\/multiple avatars, or avatars managed without required wordpress users.<\/p>\n<p>I work actively on this feature, it will be available in the next weeks and it\u2019s the first step in integrating the features in progress in the Version 3 branch.<\/p>\n<h2 class=\"wp-block-heading\">16. Thank you<\/h2>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"512\" src=\"https:\/\/w4os.org\/wp-content\/uploads\/2024\/12\/oscc24-w4os-16-end.jpg\" alt=\"\" class=\"wp-image-5743\" title=\"\"><\/figure>\n<p>Thank you for your attention.<\/p>\n<p>For more information, you can check:<\/p>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/w4os.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/w4os.org\/<\/a> the website of the plugin<\/li>\n<li><a href=\"https:\/\/2do.directory\/\" target=\"_blank\" rel=\"noopener\">https:\/\/2do.directory\/<\/a> the shared search engine and calendar<\/li>\n<li>Teleport to <a href=\"8002\/lab\/\">hop:\/\/speculoos.world:8002\/lab\/<\/a> for in-world beacons (2do Events board and the Teleport Board)<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\">Questions from the audience<\/h2>\n<h3 class=\"wp-block-heading\">How secure is connecting WordPress to my grid?<\/h3>\n<p><strong>Short answer<\/strong>: as secure as OpenSimulator alone. <\/p>\n<p><strong>The long answer<\/strong> is there: <a href=\"https:\/\/w4os.org\/security\/\" target=\"_blank\" rel=\"noopener\">https:\/\/w4os.org\/security\/<\/a><\/p>\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-w-4-os wp-block-embed-w-4-os\">\n<div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"44c8Mb3bMq\"><p><a href=\"https:\/\/w4os.org\/security\/\" target=\"_blank\" rel=\"noopener\">Security<\/a><\/p><\/blockquote>\n<\/div>\n<\/figure>\n<h3 class=\"wp-block-heading\">Can I put the WordPress website on a different server than OpenSimulator?<\/h3>\n<p>Absolutely, as long as it has access to the mysql database<\/p>\n<h3 class=\"wp-block-heading\">I have already a web interface with my grid, can I use w4os in parallel?<\/h3>\n<ul class=\"wp-block-list\">\n<li>Most parts of w4os can be enabled or disabled, allowing to use it as a \u201cone shop stop\u201d or complement other integrations. If you need current \u201cfixed\u201d parts to be optional, the best way to ask is to make a request for feature on the issues page of the repository: <a href=\"http:\/\/github.com\/GuduleLapointe\/w4os\" target=\"_blank\" rel=\"noopener\">http:\/\/github.com\/GuduleLapointe\/w4os<\/a><\/li>\n<li>The helpers and 2do Directory are already by design usable independently.<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\">Can I send pictures from in-world to my profile?<\/h3>\n<ul class=\"wp-block-list\">\n<li>The profile picture used on the web profile page is already fetched from in-world profile<\/li>\n<li>Thanks to the web assets server, any in-world image can be used in a website, using their UUID.<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\">(somewhat unrelated, but interesting too) What about Joomla interface?<\/h3>\n<ul class=\"wp-block-list\">\n<li>The Joomla extension for OpenSimulator hasn\u2019t received any update since 2019. Unfortunately, regarding CMS and security, it\u2019s an eternity. I wouldn\u2019t recommend to use any internet solution that old.<\/li>\n<li>The w4os plugin is modular (and will be even more in v3), and parts of it could be included in Joomla extension, as long as there is a maintainer for this extension (they use very different structures, I am not used to Joomla).<\/li>\n<li>Particularly, the helpers included in w4os are unaltered code from <a href=\"https:\/\/github.com\/GuduleLapointe\/flexible_helper_scripts\" target=\"_blank\" rel=\"noopener\">Flexible Helper Scripts<\/a>, by design integrable in any other solution.<\/li>\n<\/ul>\n<p>(Original post on W4OS &#8211; <a href=\"https:\/\/w4os.org\/news\/2024\/12\/oscc24-w4os-presentation\/\" target=\"_blank\" class=\"feedzy-rss-link-icon\" rel=\"noopener\">Read More<\/a>)<\/p>","protected":false},"excerpt":{"rendered":"<p>For those who missed the presentation of w4os plugin at OpenSimulator Community Conference 2024, here are the transcript and slides of the presentation, with some additional notes and Q&amp;A from&#8230;<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[267],"tags":[],"class_list":{"0":"post-15036","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-w4os"},"_links":{"self":[{"href":"https:\/\/speculoos.world\/nl\/wp-json\/wp\/v2\/posts\/15036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/speculoos.world\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/speculoos.world\/nl\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/speculoos.world\/nl\/wp-json\/wp\/v2\/comments?post=15036"}],"version-history":[{"count":0,"href":"https:\/\/speculoos.world\/nl\/wp-json\/wp\/v2\/posts\/15036\/revisions"}],"wp:attachment":[{"href":"https:\/\/speculoos.world\/nl\/wp-json\/wp\/v2\/media?parent=15036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/speculoos.world\/nl\/wp-json\/wp\/v2\/categories?post=15036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/speculoos.world\/nl\/wp-json\/wp\/v2\/tags?post=15036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}