[HN Gopher] Second Life on GitHub
___________________________________________________________________
Second Life on GitHub
Author : ohjeez
Score : 176 points
Date : 2022-12-24 16:51 UTC (6 hours ago)
(HTM) web link (community.secondlife.com)
(TXT) w3m dump (community.secondlife.com)
| culi wrote:
| > In 2022, the renewed general interest in the Metaverse
| translated into significant media opportunities for Second Life.
| Over 21,000 articles and other stories included Second Life in
| 2022 - nearly 5 times greater than the amount of media coverage
| we received in 2021.
|
| Out of all the metaverse projects being worked on, SL coming out
| on top would be an incredible development
| rnd0 wrote:
| While I love me some SL, it's a sad sad statement about the
| current state of tech world that SL is the best we can do...did
| we really peak in 2002?
| slackfan wrote:
| Yes. We had virtual worlds and an internet that wasn't yet
| completely broken. The Patriot Act was yet to be fully
| implemented, and we were recovering from the dotcom meltdown.
|
| Good a peak as any.
| cdogl wrote:
| This idea peaked in 2002. Second Life fills a valuable niche,
| and I'm glad it exists, but most people prefer videogames.
| brirec wrote:
| TFA suggests that the official git repo for the Linux kernel is
| on GitHub. I wonder if they really did their research
| Philip-J-Fry wrote:
| The source is published to GitHub though, no?
| https://github.com/torvalds/linux
|
| It's an easy mistake to make, the code _is_ there and there 's
| nothing to suggest it's a mirror.
| Arnavion wrote:
| That said, every PR receives a bot comment indicating that
| the GH repo is a mirror and the user needs to submit a patch
| to LKML. And yet there are currently 312 open PRs on the
| repo. I've always wondered how people manage to know enough
| about the kernel to be able to contribute a PR to it, yet
| don't know the GH repo is a mirror _and_ seemingly ignore the
| bot response and leave their PR opened.
| mdaniel wrote:
| I'm surprised with the massive number of auto-close-bots on
| GH (combined with the kernel's development culture) that
| they don't just auto-close them
|
| I've also never understood why GH allows turning off
| issues, but not turning off PRs
| ratcline wrote:
| I believe this is often people who ARE in fact contributing
| via the mailing list -- but want a track record tied to
| their GH account.
| scatters wrote:
| People are aware the PR isn't going to be accepted; they
| just want to publish it _somewhere_.
| cactusplant7374 wrote:
| What is the reason for hosting it elsewhere? My cursory Google
| searches have failed me.
| ithkuil wrote:
| The historical reason is https://github.com/torvalds/linux/pu
| ll/17#issuecomment-56546...
|
| Perhaps some of these issues have been fixed by now, but the
| Linux project has been going on just fine without GitHub (git
| was even invented for the Linux kernel project itself even
| before GitHub existed) so there doesn't seem to be any reason
| to switch even if all the mentioned problems were to be fixed
| _Algernon_ wrote:
| Some good old Torvalds roasting going on in that thread.
| squeaky-clean wrote:
| Ironically his rant about why authors should do the line-
| breaking
|
| instead of your text renderer is really frustrating to
|
| read because of all the seemingly random line breaks
|
| throughout his comment.
| solardev wrote:
| Yikes. I didn't know the dude was so prickly. Glad I'm
| not a contributor.
| Longhanks wrote:
| With his attitude, the kernel has reached enormous market
| share, excellent performance, high quality and worldwide
| adoption. I'm sure it will be fine without your
| contribution.
| solardev wrote:
| Lol yes I'm sure it'll be fine too. It made me lose some
| respect for him, but he couldn't care less what I think
| lol.
| __alexs wrote:
| He's mellowed a bit as the years have gone on but yeah,
| he sure is a character.
| _Algernon_ wrote:
| I do find them fun to read, but yeah being the target of
| one must be rough. Though it probably contributes to the
| quality of the Linux kernel.
| sergiotapia wrote:
| He's amazing
| [deleted]
| codetrotter wrote:
| Linux kernel development has been coordinated via mailing
| lists for ages.
|
| Linus wrote the git version control system specifically to
| suit the development of Linux.
|
| GitHub made git mainstream, and they made lots of great
| features for the masses.
|
| But there is no reason for the Linux project to change the
| way that they like to work just because of that.
|
| Still, a copy of the Linux source tree is also hosted on
| GitHub. So it seems to me that everyone gets what they want.
| Linux get to continue their development in the way that they
| like to do it. People on GitHub can easily find the copy of
| Linux on GH, and browse the sources there. And they can
| create forks of the Linux sources on GH too.
| Shared404 wrote:
| Was coming here to say almost the same thing - pretty sure the
| kernels "de-facto home" is not in fact GitHub.
|
| Perhaps it was just a marketing person writing this who googled
| "Big open source github".
| cfuendev wrote:
| Lol, thought the same when I read "CPython".. Okay? Why not
| mention stuff like Godot and Monogame? Those are things the
| OSS-Gaming community are more familiar with. And why not say
| "The CPython Interpreter"? As if everyone knew what CPython
| was.
| LightG wrote:
| For any users, how active is it these days?
|
| I dabbled with it many years ago and ... Christ, can it really be
| 20 years since release?!?!
| rnd0 wrote:
| concurrency ranges from 23k to 45k or 49k at any given time.
| God only knows how many of those are bots/scripted agents
| though.
| branon wrote:
| Second Life has always really interested me, seems like it's got
| a quite the meaningful heritage behind it. If they are looking to
| move into the full VR/AR/Metaverse space, I can see that
| wisdom/prior art coming in very handy.
| T-A wrote:
| https://www.engadget.com/2020-03-27-why-second-life-linden-l...
| Animats wrote:
| It's been open source since 2007. Linden Lab recently moved the
| sources from Bitbucket to Github.
|
| The Firestorm viewer sources are at
| "https://vcs.firestormviewer.org/". It's a major fork.
|
| Technical documentation of the client-server protocol is at
| "https://wiki.secondlife.com/" It's out of date, but it helps.
|
| The real progress is that the build procedure has been cleaned
| up. It used to require ancient versions of Visual Studio on
| Windows. Firestorm can be built on Linux. I've built it and
| submitted patches that went in.
|
| This is just the client side. The server is proprietary. But
| there's a compatible server, Open Simulator. It's not a clone;
| it's in C#, while the original is in C++.
|
| There are meetings for third party viewer developers. Both inside
| Second Life, and on OSGrid, which is a third party grid of
| simulators. That really is the metaverse - a federated system of
| 3D worlds. It's sluggish, because most of the people running
| regions don't have enough server power. Think Mastodon for 3D.
|
| I'm been writing a new client in safe Rust for the last two
| years. I'm trying to see how much can be done in parallel. The
| viewer isn't ready for public use yet. I've posted videos made
| with it.
| GrinningFool wrote:
| > OSGrid, which is a third party grid of simulators. That
| really is the metaverse - a federated system of 3D worlds.
|
| I had no idea this existed, and have been looking for it
| [conceptually] for years. Thanks!
| msla wrote:
| Clickable links:
|
| https://vcs.firestormviewer.org/
|
| https://wiki.secondlife.com/
| solardev wrote:
| What is a "firestorm viewer"?
|
| Is a "viewer" a Second Life term for "game client"? And is
| Firestorm a particular FOSS client for the game?
|
| If so, that's really interesting... like you can access the
| same shared Second Life world but through a custom client? Does
| it reuse existing game assets or you free to reinterpret
| character models, textures, effects, etc.?
| dale_glass wrote:
| It's a client
|
| Assets are downloaded by the viewer from the SL servers.
| vorpalhex wrote:
| Everything in second life is sent to the client (which
| usually tries to cache). Eg you can even build new geometries
| ingame.
|
| Viewers are "game clients" yes. The viewer is intended to
| mostly be a dumb receiver. The server does most lifting.
|
| Firestorm is a fork of the official viewer. It forked about
| the time I played SL but seems to have grown into it's own
| these days.
| Animats wrote:
| A viewer is like a web browser for a 3D world. It's like a
| game client, but it doesn't have any game logic or content.
| As with a web browser, all content is downloaded from the
| servers. Firestorm is a third-party viewer with a sizable
| development organization. See "firestormviewer.org".
|
| Quick overview:
|
| Second Life / Open Simulator worlds are divided into
| "regions". Each region is 256m on a side on Second Life, and
| can be other sizes in Open Simulator. The world is about the
| size of Los Angeles. The viewer starts out by talking to a
| login server for a grid, which authorizes it to connect to a
| region. The viewer then talks to the region. There are short
| messages over UDP, and some bigger stuff over HTTPS.
|
| Once a viewer is talking to a region, it asks the region
| server about adjacent regions. The viewer can then talk to a
| few adjacent regions, too, showing the user a big, seamless
| world. As the user moves around the world, connections are
| made to new regions, and connections to regions out of range
| are dropped. This is how the world scales. There are about
| 27,500 live regions today, each with its own simulator
| program, always on even if nobody is using it. Each simulator
| program takes about one CPU and under 4GB on a server. Second
| Life is currently hosted on AWS, with dedicated servers. This
| scales well; the world could be scaled up substantially if
| there was demand.
|
| The always on feature runs up costs, but the business model
| is that users rent land. So costs and revenue stay in
| balance. Regions really are always on - trains run through
| regions where no one is around, for example. This
| architecture made more sense when Second Life had their own
| servers in a co-location facility.
|
| The region servers talk to their direct neighbors. This
| allows movement across region boundaries. If a region goes
| down or is restarted, the viewer will show a water-filled
| hole with steep sides where the region is supposed to be. So
| the overall system is fault-tolerant.
|
| Content is stored on asset servers, separate from the region
| servers. These are ordinary AWS web servers, front-ended by
| Akamai caches. Content includes textures (images in JPEG 2000
| format, which is a pain to decompress fast), meshes (a
| documented but nonstandard format), sounds, etc. There's
| petabytes of content. The region servers tell the viewers
| what hashes (UUIDs) to ask for, the viewers get the content
| from the servers with ordinary HTTPS requests, and all this
| is assembled in the viewer into 3D images for the user.
|
| Any user can upload new content. Uploading an image costs
| about US$0.05. Uploading a 3D model might cost $0.50. This is
| a one-time charge. As long as someone, somewhere, is using
| that content, it's kept on the servers. There's a garbage
| collection run every month or so.
|
| Voice is outsourced to Vivox. (Vivox has problems. Not
| recommended for new designs.)
|
| Coming soon is "puppetry". Second Life is now testing full
| body and face tracking, for those who want their avatars to
| run more than canned animations. This involves an entirely
| new data path by which viewers talk to other nearby viewers
| via a server that just forwards data. Second Life is getting
| VRchat features.
|
| So that's what a viewer is. And that's what the architecture
| of a big metaverse looks like.
| T-A wrote:
| https://www.firestormviewer.org/
|
| Assets are downloaded from the servers. Users can upload and
| optionally gift / sell their own.
| culi wrote:
| I had no idea Second Life has been an open source game this
| whole time! It might be one of the largest OS videos games of
| all time then
| vorpalhex wrote:
| The server components which are most of the logic are not
| open source. There has been a long running effort to have a
| compatible open source server.
| seydor wrote:
| Opensimulator is the open source project
| (http://opensimulator.org/)
|
| There are thousands and thousands of active regions and
| thousands of users (https://opensimworld.com/). It's not
| millions, but it s the best self-hosted virtual world
| ecosystem.
| Tostino wrote:
| That's incredibly surprising that it doesn't have one. I
| was involved in the l2j and wow emulation communities back
| in the day, and there was just so much effort going into
| it.
| T-A wrote:
| It does have one:
|
| http://opensimulator.org/wiki/Main_Page
| everyone wrote:
| Meta - "write that down write that down!!"
| seydor wrote:
| But afaik the second life viewer is not exactly open source, but
| instead only selected teams can participate.
|
| EDIT: the viewer code is LGPL , but forked Third party viewers
| are subject to particular terms
|
| https://secondlife.com/corporate/third-party-viewers
| Animats wrote:
| There are terms which apply when connecting to Second Life
| servers.
|
| Those terms don't apply if you use the viewer to connect to non
| Second Life servers, such as Open Simulator. For Open
| Simulator, you have to deal with a somewhat grouchy lead
| developer who does not suffer fools gladly. (He's helpful if
| you don't waste his time. He ran a test region server for me
| and looked at what I was sending to get something to
| interoperate.)
|
| Some viewers turn on extra features when talking to Open
| Simulator. The main one is "varregions". Second Life is divided
| into squares 256m on a side. Open Simulator supports other
| sizes. Also, there are several competing money and asset
| systems for Open Simulator grids, and third party viewers
| support those.
|
| This is the metaverse at the level where it actually works.
| seydor wrote:
| AFAIK the lack of viewer developers is the main reason why
| opensimulator has stalled. Even the server is supported by
| very few developers who still contribute, incuding Ubit. The
| project seems to suffer from high drama for decades.
| rnd0 wrote:
| The internal OS politics probably doesn't help so yeah
| -high drama is probably the killer right there.
| kmeisthax wrote:
| Last I remember, they didn't want people working on both
| viewer and OpenSim to avoid accusations of copying from a
| GPL viewer into the permissively licensed OpenSim. This,
| obviously, makes implementing new non-Linden features nigh
| impossible.
|
| Of course, this policy changed a few months after I stopped
| playing with OpenSim. I think RealExtend had something to
| do with it. I remember playing around with their viewer and
| being impressed, but never doing much else with it.
| Turing_Machine wrote:
| Is Open Simulator back in active development? The last time I
| looked at it there hadn't been a release for some years, if
| I'm remembering right.
| Turing_Machine wrote:
| To answer my own question, yes it does appear to be in
| semi-active development. At least there's a release from
| this year.
| rnd0 wrote:
| There's like two or three forks out there. I'm not sure how
| active any of them are though.
| culi wrote:
| So it's open-source but not FLOSS
| bombolo wrote:
| No, open source means a specific thing. You're perhaps
| thinking of "source available", which means "you can read the
| source but have to comply to a bunch of stuff"
| SquareWheel wrote:
| Not really. A lot of folks, including myself, don't
| subscribe to the OSI's definition of open-source because it
| just doesn't match the common usage. Open-source takes many
| forms, and source available is just one example.
| chungy wrote:
| Considering the term originated with them, it's fair to
| say they get to dictate what it means.
| SquareWheel wrote:
| Ah, things would be simpler indeed if words could be
| dictated.
| rnd0 wrote:
| And they can be -that's why we have dictionaries.
|
| Terms DO have meanings whether contrarians and the
| argumentative want to acknowledge those meanings or not.
| [deleted]
| Karunamon wrote:
| Dictionaries are descriptive, not prescriptive. The
| meaning of terms outside of specific fields like law is
| based on consensus, not authority. Merriam-Webster
| doesn't own the English language, and neither does OSI.
| rnd0 wrote:
| If you can't modify and distribute your modifications
| -it's not open source. Anyone who says different is
| simply incorrect.
| sureglymop wrote:
| Can you define what exactly open source means in that case?
| ghaff wrote:
| The majority opinion is the OSI definition and approved
| licenses but not everyone agrees.
| counttheforks wrote:
| No, open source is a vague term with many different
| definitions. The open source foundation does not control
| the english language.
| baeaz wrote:
| I don't know if things have changed but the last time I tried SL
| the client was so rough and awkward it seemed like an alpha. Even
| moving was laggy and annoying.
| vorpalhex wrote:
| The biggest contributor of lag is not having things cached or
| being in a laggy region.
|
| On first connect, it used to be practice to go to a busy scene
| (a mall) and then go do something in real life for an hour or
| so while the viewer grabbed everything and cached it.
|
| Regions can be very low lag or amazingly laggy, depending on a
| bunch of things (particulary misbehaving scripts).
| Animats wrote:
| The causes of lag in Second Life are complicated, and are, at
| last, getting a lot of attention right now.
|
| I've been working on that with a multi-threaded viewer in
| Rust.[1] After I started posting videos like that, there was
| a lot less "can't do" attitude from the Linden Lab devs. Now
| there's a "performance viewer" project out of Linden Lab,
| using many of the same techniques. Key concept: the backlog
| of assets to be loaded needs to be on a priority queue which
| gets reordered as the viewpoint moves. Otherwise you
| bottleneck loading stuff that you were previously near, not
| stuff near where you are now. There's a nice B-tree solution
| to this. Once you have that, everything in close-up is
| present and at high resolution.
|
| Hardware helps. 100mb/s networking and putting the viewer
| cache on an SSD will help a lot.
|
| There's still a big problem server side with the transient
| load when a new user enters a region. A mall or event with a
| lot of traffic can slow way down. The server devs are trying
| for more concurrency, but it's hard in an old single-thread
| 32-bit C++ program.
|
| It's striking that, despite all the "metaverse" hype, there
| are very few people, even among game devs, talking about the
| nuts and bolts of making this stuff work. The metaverse
| conferences are mostly about branding, NFTs, and
| moderation/censorship.
|
| [1] https://video.hardlimit.com/w/sFPkECUxRUSxbKXRkCmjJK
| jaChEWAg wrote:
| I wonder why Meta didn't fork Second Life to use for their 3D
| world rather than re-invent the wheel and in the end build a bad
| product.
| morelisp wrote:
| I don't know about the clients, but I've worked with a few ex-
| LL people and heard nobody really likes what the protocol
| became, and also lots of core parts of the LSL execution model
| they regret. Presumably Cory thought he could do better the
| second time around. (And maybe he did! I'm not sure Facebook's
| metaverse problems are technical ones...)
| Animats wrote:
| One tiny design error had huge implications. The UDP messages
| are multiple messages per packet with the form
| [msg_type variable_length_message]
|
| There is no message length in the message. So, to parse the
| message stream, the receiver must know how to parse each
| message type in detail, and can't skip message types it
| doesn't understand. Thus, no new message types can be sent
| until everything that receives them has a parser for the new
| type. And, so, there have been no new message types since
| about 2016.
|
| Most game systems use [msg_type msg_length
| variable_length_message]
|
| so you can introduce new messages and not break old
| receivers.
| n42 wrote:
| I am thoroughly enjoying all your contributions in this
| thread. I love getting a look into the architectural bits
| of a project/community of this scale that I don't really
| know much about. Very interesting, thanks
| Animats wrote:
| As I mentioned previously, there's not much written about
| this. Which is probably why existing metaverse projects
| are so awful. It's mostly taking Unity or Unreal Engine,
| which are intended for use with carefully pre-built
| content, and somehow trying to make a large dynamic
| virtual world from those parts. The duct tape is
| troublesome.
|
| The primary technical designer of Second Life did a very
| good job. Then he had a disagreement with management and
| was fired. So he went to Facebook, developed their mobile
| client, became a Facebook VP, made lots of money, and was
| semi-retired for a while.
|
| Scaling to a big world is really hard. Big has two
| dimensions - area and density. The Second Life
| architecture scales well in area but not in population
| density. More than 20-30 users in a region will choke it.
| More are possible if most users sit down and doesn't
| move, because sitters are not getting physical
| simulation. So audience-type events work.
|
| Improbable was working on large crowds, but their
| solution is really expensive to run. Which is why they
| just do demos of Otherside for a few hours at a time
| every few months. Also, they use very simple avatars and
| do not, as yet, support vehicles. Took them over US$500
| million to get to that point. They have dynamic regions -
| more people, divide the world into smaller chunks. That
| introduces a whole range of new problems. What if I have
| 20 people on my boat, and a region boundary moves under
| the boat while I'm crossing it? Stuff like that. Fixed
| region crossings involving multiple avatars and vehicles
| are troublesome in Second Life. People do try bus tours,
| but sometimes an avatar gets Left Behind at a region
| crossing. Linden Lab's devs have been trying to fix that
| for at least 8 years, without success. It's a tough
| problem in real time distributed system design.
| Turing_Machine wrote:
| > Presumably Cory thought he could do better the second time
| around.
|
| I remember a post from him where he said something like "Note
| to self: next time spend more than a week(end) on the
| scripting language". :-)
| rnd0 wrote:
| Primarily the problems with FB's metaverse are design (no
| legs? really?) and goals. I'm sure that on a purely technical
| level it's probably first rate. But as usually is the case,
| the biggest problem is people.
| fsiefken wrote:
| With Firestorm, Open Simulator and Termux you could theoretically
| host your own world in VR on your Quest.
| https://nwn.blogs.com/nwn/2021/03/second-life-social-vr-ocul...
| skrowl wrote:
| The amount of GitHub contributions may have something to do with
| how popular Second Life is for furries, and how many IT
| professionals are furries.
| xnx wrote:
| Zuckerberg must be kicking himself for spending so many billions
| on the metaverse right now.
| justapassenger wrote:
| That money is being spent on VR/AR HW and software ecosystem,
| not one app on it.
| steve1977 wrote:
| That's the project where Facebook's Metaverse forked from, right?
| guenthert wrote:
| The founder of second life was inspired by the virtual world
| described in Snow Crash, so both are forks in spirit from that
| novel.
| rnd0 wrote:
| Well, one of the original founders (?) of SL went from their to
| FB but I'm not sure what his original role is. I doubt that
| there was a fork as we think of it. Everything I've heard
| (second hand or third hand) is that the old SL server code is
| really messy and wouldn't migrate over well -probably better to
| simply take the lessons (social and technical) learned from SL
| and start over from scratch.
| jandrese wrote:
| I wish. The Metaverse (Horizon Worlds) client is horribly
| primitive compared to the SL client.
| b800h wrote:
| Perhaps when Linden Labs open-sourced the second life stuff,
| ChatGPT cached it and Meta asked it to write them a metaverse.
|
| EDIT: Well it does something...
|
| ```Sure! Here is a basic client for Second Life written in
| Python:
|
| import requests
|
| # Set the base URL for the Second Life API base_url =
| "https://api.secondlife.com"
|
| # Set the endpoint for the login API login_endpoint =
| "/login"```...
| FooHentai wrote:
| No, but when I saw where Meta's effort had got them it struck
| me they might have been better putting that development work
| towards modernizing an implementation of SL.
___________________________________________________________________
(page generated 2022-12-24 23:00 UTC)