php.codecasts.rocks is down

Sorted now!

Same issue again

any updates? site not working yet...

@berserker5000 its deprecated. Check this link


Add support for websockets

Describe the feature
There are a few instances were support for websocket was wished for, or workarounds were discussed (see references below), but no I couldn't find a proper issue.
I would volunteer to help implementing websocket support, and formulate a proper RFC. But for this I first need a general direction and scope for this feature. @pi0 @danielroe
Questions to be clarified are: Do you want to implement this at h3, or only at the level of nitro? Should the presets handle ws support? How to include vendor-specific implementations like fastify-websocket?
References:

nuxt/content uses ws here: https://github.com/nuxt/content/blob/8d4a3ca7ede0af12d6cf472816c67a67f5bd4d43/src/module.ts#L662
https://github.com/nuxt/framework/discussions/3907
https://github.com/unjs/nitro/discussions/270
https://github.com/unjs/nitro/issues/467

Additional information

[X] Would you be willing to help implement this feature?

WebSocket support would be really nice, and more especially useful if it were implemented similar to what we've done with FeathersJS. We've created "transport" plugins that adapt requests from each transport into the same routes/functions on the backend.  You also still have access to create custom entries that only work with a specific transport.
Here are examples of the three primary transports that we bundle with FeathersJS Dove:

The Koa adapter: https://dove.feathersjs.com/api/koa.html
The Express adapter: https://dove.feathersjs.com/api/express.html
The Socket.io adapter: https://dove.feathersjs.com/api/socketio.html

There's also a community-built adapter for Fastify, somewhere out there.  It seems like a pretty unjs-like approach to implementing multi-transport support.  We had to standardize on a socket API that's based around the Feathers Service interface. You can see the client message format for each method (find, get, create, update, patch, remove, and custom methods), here: https://dove.feathersjs.com/api/client/socketio.html#find.
Maybe it's worthwhile to create a @feathersjs/nitro adapter for Feathers.
Anyway, those are my thoughts. Use them as you wish, or not. 😁

I'd also be interested in this. I want to use socket.io with nuxt3 and I'm struggling to make socket-io server work as nitroApp plugin.

So, is it possible to somehow use Socket.io with Nitro?

@NoeReverse I use it like this:
server/plugins/socket.io.server.ts
import { Server } from 'socket.io'
export default defineNitroPlugin((nitroApp) => {
    const socketServer = new Server(3001, {
        serveClient: false,
        cors: {
            origin: '*'
        }
    })
    socketServer.on('connection', (socket) => {
        socket.on("message", async (message)=>{
            socketServer.emit("message", {
                    type: "user",
                    author: message.author,
                    content: message.content
            })
         })
     })
})

We are using ngrok and have not been able to get a solution for this.

+1

The groundwork is currently being done in h3: https://github.com/unjs/h3/pull/544

I played around with a few configurations of sockets in Nitro last week.
Here's a nice state of the art, current as of now:
https://stackoverflow.com/questions/75970500/how-to-use-socket-io-with-nuxt-3
But there's a bigger discussion to be had - Nitro is mean to "run anywhere".
For those of us using serverless, or Serverless-as-a-Service (e.g. Vercel), I don't think sockets would work even if Nitro contained them, because the functions spin up and spin down.
So, what would sockets look like on Nitro deployed to serverless?
P.S. - my solution?
I ended up using Supabase's realtime service since I was using Supabase anyways.

So, what would sockets look like on Nitro deployed to serverless?

I guess at first they would simply not be supported on most providers. However, some edge runtimes such as cloudflare workers do support websockets so this could become supported for them in the future.

spoiler

Maybe it's worthwhile to create a @feathersjs/nitro adapter for Feathers.

@marshallswain Do you have a plan to make @feathersjs/nitro adapter?
It would be great. ;)

https://nitro.unjs.io/guide/websocket


Cluster Scope IPAM melts DRBD storage fabric

Is there an existing issue for this?

[X] I have searched the existing issues

Version
equal or higher than v1.16.0 and lower than v1.17.0
What happened?
This is not a bug report per se, as I am more asking for opinion than for a fix. Anyway, when I create cluster with ipam.mode as default (not set) my interfaces on my nodes get assigned these random IPs in <IP_ADDRESS>/8. Another cluster exists on the same subnet (and that is fine) but when this other cluster also has DRBD nodes somehow DRBD goes of the rails with a lot of errors and taints the nodes with quorum lost.
In dmesg I see errors like "unexpected connection from..."
When I check the node pool in DRBD I see weird things such as this :
k linstor node list
╭───────────────────────────────────────────────────╮
┊ Node ┊ NodeType  ┊ Addresses             ┊ State  ┊
╞═══════════════════════════════════════════════════╡
┊ n1   ┊ SATELLITE ┊ FD00::215:3367 (SSL)  ┊ Online ┊
┊ n2   ┊ SATELLITE ┊ <IP_ADDRESS>:3367 (SSL) ┊ Online ┊
┊ n3   ┊ SATELLITE ┊ <IP_ADDRESS>:3367 (SSL) ┊ Online ┊

The nodes have picked up cilium clusterpool IPs (?) instead of an IP from the services CIDR (?).
FYI my cluster is configured with
nodes: <IP_ADDRESS>/21, 2a02::...
pods:  - fd00:0:a:1000::/64 <IP_ADDRESS>/16
services:  fd00:0:a:2000::/108 <IP_ADDRESS>/16

and the other cluster has completely different IPAM CIDRs.  No quorum lost there.
I actually started noticing this when I turned on encryption strict mode in prod cluster. But after digging a bit I am thinking there is an issue with ipam.mode=clusterpool somehow. This severely breaks storage accross ALL clusters in <IP_ADDRESS>/8 apparently. You have been warned.
Right now I am trying to figure out what is going on, so this Bug report will be very vague and I am posting here to see if anyone has any idea (first of all if that is even possible). Or maybe I should post to linstor board ?
How can we reproduce the issue?

deploy 2 clusters in adjacent networks with ipam.mode=clusterpool
deploy linstor-operator with full drbd config and encrypted dataplane on both
watch as over time your storage fabric melts.

Cilium Version
quay.io/cilium/cilium:v1.16.1@sha256:0b4a3ab41a4760d86b7fc945b8783747ba27f29dac30dd434d94f2c9e3679f39
Kernel Version
6.6.43-talos
Kubernetes Version
1.30.3
Regression
No response
Sysdump
No response
Relevant log output
No response
Anything else?
No response
Cilium Users Document

[ ] Are you a user of Cilium? Please add yourself to the Users doc

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I guess my first remark is : shouldnt the Interface assigned IP (I guess the ClusterPool IPAM ?) be equal to the value of ipv4NativeRoutingCIDR | ipv6NativeRoutingCIDR instead of 10./8?
(in my case thse values are set to the pods CIDR)

Cross-posting this here for Update:
After testing It seems the following Cilium configs break DRBD quorum without recovery:

ipam.mode=clusterScope
encryption.enabled=True -> breaks after a while. Interestingly no unexpected connection from.. messages. The quorum is just lost without a lot of explanation.

Note: these problems don't appear in a virtual environment (In my case a proxmox/qemu machines) deployment of Cilium. Only on bare-metal.
For anyone reading this trying to deploy Linstor/DRBD+Cilium in bare-metal you've been warned.


Allow extent to support symmetrical domains

fc.util.extent could support symmetrical domains, centered around a point with the range either set or computed somehow from the data.

First thoughts:

Add a new function to extent, perhaps called about(input) that accepts an input, and uses that value as the centre point about which to create the range.
The calculated range would be relative to this point, and then extended symmetrically in both directions using the max value calculated.

So if, for example, the data were shaped in such a way to have produced a range of [6,  13] then the product of modifying the extent would be:
.about(9) -> [5, 13]
.about(5) -> [-3, 13]
How does that sound?

Sounds spot on - the only think I am not sure about is the name. How about one of the following:

symmetricalAround()
symmetric
symmetry

Given that this will be the interface the natural question is how will this play with the other properties, specifically pad and include?
In my opinion symmetricalAround() should occur before both the pad and the include.

I think so, yes - although hard to say without trying it out against a few use cases.

Does this work correctly with dates? When calling on fc.util.extent().fields('date').symmetricalAbout(new Date(345345350000))(data); , my output is [-757805300000, "Thu Dec 11 1980 01:15:50 GMT+0000 (GMT Standard Time)1103150650000"].
Whereas when calling on fc.util.extent().fields('date').symmetricalAbout(345345350000)(data);, my output is [-757805300000,<PHONE_NUMBER>000]

I've looked in https://github.com/ScottLogic/d3fc/blob/master/tests/util/extentsSpec.js and it only makes the promise that it should pad dates.
Include works though, but probably need some tests on this regard.


nextflow: 22.04.5 -> 22.10.6

Description of changes
#211794 + #211320
Things done

Built on platform(s)

[ ] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 214089 run on aarch64-darwin 1

Result of nixpkgs-review pr 214089 run on x86_64-darwin 1


Error while adding gazzetta.it rss feeds

Whenever I try to add a gazzetta.it feed (Like https://www.gazzetta.it/dynamic-feed/rss/section/Calcio/Serie-A.xml), it throws this error: org.xml.sax.SAXParseException: DOCTYPE is disallowed when the feature "http://apache.org/xml/features/disallow-doctype-decl" set to true..
There's a way to bypass the error? It works great in other rss reader.
Thanks!

There is a DOCTYPE declaration at the top of the feed, which is unusual.

The parser CommaFeed is using actively blocks feeds with a DOCTYPE declaration for security reasons (see https://github.com/rometools/rome/issues/203).
Maybe I can remove the DOCTYPE from the XML before the parsing occurs, I'll see what I can do.
In the mean time, you could contact the website to ask theme to remove the DOCTYPE declaration.

I also have several that could not be imported when switching from feedly.   It would be nice to have an option ignore.

I also have several that could not be imported when switching from feedly. It would be nice to have an option ignore.

Do you get the same error as above? What are the feed urls that are not working?

This is no longer bothering me.   I was able to find the sites all had 2 feeds, one with and one without.   The website parser in commafeed finds the wrong one by default, but i was able to find the 2nd feed for all these sites worked.

I am also getting this exact error on some GitLab EE Activity feeds, and I can't add them.  I would love to have these feeds available.

I seem to able to subscribe to this URL though. Are you having a DOCTYPE is disallowed error? Do you have an error in the log files with a stacktrace?

In the UI:

Nothing showing up in the logs.  I am also still running v4.6.0. I've been putting off updating the config for the new Quarkus versions

I am having the same issue with several sites as well, e.g., https://research.checkpoint.com/latest-publications/

There is a DOCTYPE declaration at the top of the feed, which is unusual.

The parser CommaFeed is using actively blocks feeds with a DOCTYPE declaration for security reasons (see rometools/rome#203 and https://en.wikipedia.org/wiki/Billion_laughs_attack).
Maybe I can remove the DOCTYPE from the XML before the parsing occurs, I'll see what I can do.
In the mean time, you could contact the website to ask them to remove the DOCTYPE declaration.

Apparently after that vuln patch they also added a variable to allow DOCTYPE for trusted feeds. Could you make this a global, or per feed setting?
Variable declaration
Merged PR


dtc: define list of acceptable warnings (and silent them with --warning -no option)

As discussed in #7013, recent version of dtc checks for a list of syntaxic rules and generate warnings when rules are not applied.
Some of these warnings have been corrected. Some other are not corrected for valid reasons. But then we should provide a way for build logs not to be polluted for these "acceptable deviations".
Here is an example of warning we don't want to solve for a good reason (at least not contested so far).
If we do this:
green_led_1: led@0 {
		gpios = <&gpiod 2 GPIO_INT_ACTIVE_HIGH>;
		label = "USR1 LED";
};

We get this:
Warning (unit_address_vs_reg): Node /soc/pin-controller@40020000/usart1@0 has a unit name, but no reg property

According to dtc rules, using : led@0 requires that node provides a reg property, this is why this "unit_address_vs_reg" warning is generated.
We have 2 options to solve it:

Add a reg = <0>;. This is possible but does not add specific information: there is no reason for this line in term of HW description
Remove  : led@0. If we do this we loose the ability of using green_led_1 as a phandle and we should use absolute path instead. For instance alias definition led0 = &green_led_1; should be replaced by led0 = "/leds/green_led_1". Other example, 	pinctrl-0 = <&usart1_pins_b>; should be replaced by pinctrl-0 = "/soc/pin-controller@4200000/usart2_pins_d"; . Language becomes more heavy to use and hw description less clear.

To sum up, to clear this warning, we have option between adding a useless line or make description less clear.
Since this warning does not do harm, last option is to discard this warning.
dtc provides a way to do this: --warning no-unit_address_vs_reg (use "--warning no-<warning-name>" for each warning)
Proposal is to add this option in dtc command line in dts.cmake.

@galak , should we keep this one ?

@galak ping

Let me close this one as no need showed up in last year period


TypeError: int() argument must be a string or a number, not 'list' - line 245

Hi,
I dowloaded latest version 1.1.0 and got the error when render the table:
File "/home/vagrant/pycharm_proj/arp_norm/venv/lib/python2.7/site-packages/datatables/init.py", line 245, in output_result
output['draw'] = str(int(self.params['draw']))
TypeError: int() argument must be a string or a number, not 'list'

Could it be the draw parameter is in the url query more than once?

If using Flask, you need to pass parameters as request.args.to_dict(). This library is using dict() on it, and with Werkzeug's MultiDict this creates a dictionary with lists, not elements.


♻ Refactor instant search packages and remove warnings #1114

https://www.algolia.com/doc/api-reference/widgets/instantsearch/js/#widget-param-future


Cuda can not be installed

As of right now cuda 7.5 can not be installed through the usual means because of the same issue affecting java.  (just thought I would create this and link it to the same issue before someone else does and)
(Also does anyone know if cuda will work at all when compiled manually?)
Same problem as issue #49
This is through the debian local package method.
Additionally cuda will not work even when this bug is fixed because bash is now aware of the graphics card.
running this command is supposed to list the nvidia card if your computer has one installed
lspci | grep -i nvidia

its output is this:
pcilib: Cannot open /proc/bus/pci
lspci: Cannot find any working access method.

This could also be related to the other issues people are having with /proc
(cant find an official issue number for /proc issues)

Cuda is not supported at this time.  We have requests to get Cuda on our User Voice page.  We're using the user voice to help inform our priority decisions.

I also ran into the lspci problem - should this be tracked as a separate issue or is fine having it here implicitly?

@firewave, just wondering, but did you hit lspci trying out Cuda or was it in another scenario?  Either way, it would be interesting to have a new User Voice just for lspci to see if it gets any traction.  We know this is a blocker for some people, but it's always good to get a feel for about how many.

@russalex I hit the issue using lspci explicitly. I use it to get information about the graphics cards of the system. It's part of a bigger script which fetches hardware information about the system.

I can confirm with @firewave that this is something you do to check if there is a GPU installed so it could be a broader issue than just for CUDA support.

FYI lspci is also used by do-release-upgrade. The errors messages mentioned in the first post happen very early during "Reading cache...".

Hi folks, we announced today that WSL will support GPU compute! I'll be posting more details about this change today. :)

The OP lspci | grep -i nvidia repro is (academically) now LZ #5492
For CUDA and DirectML, /fixed 20150

#327 implications problems not yet working not unless render from neighborhood docs.Microsoft.com/windows/wsl

#11045Terminal now supports actions that can run multiple other actions (we heard you like actions,even if azure failed but colour succeed.

No automatic link on terminal run with your experience

lspci

pcilib: Cannot open /proc/bus/pci
lspci: Cannot find any working access method.

5 years later and this still isn't fixed? what's the point of using WSL if you don't even have a real working linux os? virtualbox can do it, why can't WSL? What else is broken?


document DATA_DIR

https://github.com/plausible/analytics/pull/4100

$DATA_DIR will be removed in favor of mounting a named volume to /var/lib/plausible.


Support more hash functions for tuple, unify FunctionHash template. [CLICKHOUSE-3490]

I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en

Even halfMD5 is switched to intHash for integers. This is totally wrong. Will fix.


Move repo to mozart organization

@layus
Opened PR to package_control_channel to change location of this repo to mozart org.
I'm waiting until that PR is merged as PRs to package_control_channel can take a while to get merged and want to minimize the length of time links could be broken.

Repo has been transferred: https://github.com/mozart/sublime-oz


Create couch_lib application

Overview
This is a cherry-pick of a https://github.com/apache/couchdb/commit/845f917e35005a84ee790cd9cb9918d0b5be25ef from main into 3.x.
Testing recommendations
Usual ./configure && make would be sufficient since this commit doesn't provide new functionality.
Related Issues or Pull Requests

https://github.com/apache/couchdb/pull/3529

Checklist

[x] Code is written and works correctly
[ ] Changes are covered by tests
[ ] Any new configurable parameters are documented in rel/overlay/etc/default.ini
[ ] A PR for documentation changes has been made in https://github.com/apache/couchdb-documentation

Wonder if it would make sense to add/move some functions to it as it seems a bit odd to commit an empty application. Or, do you think it's better to first have the app first, then plan on moving helper functions into it?
Just afraid most committers won't even know about it and will just keep adding functions to couch_util and the app will just stay empty for quite a while.

Wonder if it would make sense to add/move some functions to it as it seems a bit odd to commit an empty application. Or, do you think it's better to first have the app first, then plan on moving helper functions into it?
Just afraid most committers won't even know about it and will just keep adding functions to couch_util and the app will just stay empty for quite a while.

The original PR https://github.com/apache/couchdb/pull/3529 contained some functions.

couch_lib_parse:parse_boolean/1 - parses given string or binary into Erlang's boolean() type
couch_lib_parse:parse_integer/1 - parses given string as Erlang's integer() type
couch_lib_parse:parse_non_neg_integer/1 - parses given string as Erlang's non_neg_integer() type ([0..infinity))

However I was afraid pulling them here since there is no immediate need in them.

There is nothing in couch_lib, what is the value of this work?


Update bundle, cloudwatch, sdk-core, ses, sns, ... to 2.25.34

About this PR
📦 Updates

software.amazon.awssdk:bundle
software.amazon.awssdk:cloudwatch
software.amazon.awssdk:sdk-core
software.amazon.awssdk:ses
software.amazon.awssdk:sns
software.amazon.awssdk:sqs
software.amazon.awssdk:ssm

from 2.25.15 to 2.25.34
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "software.amazon.awssdk" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #3175.


[FEATURE] Support for iscsi boot disks

Is your feature request related to a problem? Please describe.

Large customers running diskless systems may wish to use something like an iscsi disk as the boot device.
Most modern hardware allows definition of an iscsi target as a boot device.
As we have tested internally when booting of an iscsi disk additional kernel arguments rd.iscsi.firmware rd.iscsi.ibft are needed to ensure that the OS can boot successfully.
Describe the solution you'd like

We should have an additional check in the installer / upgrade path to detect if the install disk is an iscsi disk, and accordingly append these additional kernel arguments in the default entry.
These arguments will need to be retained post upgrade as well.
Describe alternatives you've considered

Additional context

We may need to include the support to use the OS and DATA mpio disks rather than the individual disk. This means the initramfs would need mpio support. See here
Otherwise, we'd need to disable mpio for the root/OS disk.

Let's add HEP for this, even though we have a KB for reference.
cc @bk201

For testing the changes:
The multipath support can be validated in a kvm setup as follows:

Create a raw disk image of atleast 250GB

Add the same disk twice to an VM. Please ensure the following

The disk is marked sharable
A serial is provided, say disk1. The serial info needs to be same on both scsi disk additions

Boot from the iso.  Despite two paths being added to the same underlying disk, the harvester installer only shows the 1 installable disk. The serial info is important here as it is used to dedup disks with same serial info and/or wwn number
Proceed with installation as normal, and specify the following harvester config via a config url to enable multipathd and configure multipath.conf. The additionalKernelArguments are not needed for this example to work, but have been added to help validate the arguments being passed to kernel via grub post install

os:
  externalStorageConfig:
    enabled: true
    multiPathConfig:
    - vendor: "QEMU"
      product: "QEMU HARDDISK"
  additionalKernelArguments: "multipath=on"

Post install of harvester, create a VM
Shell into node and verify multipath is only showing pathing for the install disks, and longhorn disks are ignored

multipath:~ # multipath -ll
0QEMU_QEMU_HARDDISK_disk1 dm-0 QEMU,QEMU HARDDISK
size=250G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 0:0:0:1 sda 8:0  active ready running
`-+- policy='service-time 0' prio=1 status=enabled
  `- 0:0:0:2 sdb 8:16 active ready running

Validated multpath with Harvester v1.4.0-rc3.Verified that multpath was running properly after install and boot and ran the p0 volumes and images test cases from automation.

I'm checking if this covers the iscsi test case as well.
I ran the test according to the quoted steps.

For testing the changes:
The multipath support can be validated in a kvm setup as follows:

Create a raw disk image of atleast 250GB

Add the same disk twice to an VM. Please ensure the following

The disk is marked sharable
A serial is provided, say disk1. The serial info needs to be same on both scsi disk additions

Boot from the iso.  Despite two paths being added to the same underlying disk, the harvester installer only shows the 1 installable disk. The serial info is important here as it is used to dedup disks with same serial info and/or wwn number
Proceed with installation as normal, and specify the following harvester config via a config url to enable multipathd and configure multipath.conf. The additionalKernelArguments are not needed for this example to work, but have been added to help validate the arguments being passed to kernel via grub post install

os:
  externalStorageConfig:
    enabled: true
    multiPathConfig:
    - vendor: "QEMU"
      product: "QEMU HARDDISK"
  additionalKernelArguments: "multipath=on"

Post install of harvester, create a VM
Shell into node and verify multipath is only showing pathing for the install disks, and longhorn disks are ignored

multipath:~ # multipath -ll
0QEMU_QEMU_HARDDISK_disk1 dm-0 QEMU,QEMU HARDDISK
size=250G features='0' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 0:0:0:1 sda 8:0  active ready running
`-+- policy='service-time 0' prio=1 status=enabled
  `- 0:0:0:2 sdb 8:16 active ready running

I talked with @ibrokethecloud about this and the implementation of the multpath should cover the test case. It's checking for duped serial numbers and deduping them. This should affect anything that's being passed over to the host OS from the BIOS/UEFI. This includes duped serials from RAID controllers, iSCSI, and others.
I'm going to double check this on physical hardware then close it if it works as expected.

I'm closing this as fixed and will re-open it if there are any issues on bare metal.

Do we have a doc for this feature?

@ibrokethecloud we should have a doc PR before closing the issue.

i will submit a docs PR with the additional config needed to leverage this

Moving this to implement as this is waiting for doc PR.

Doc published https://docs.harvesterhci.io/v1.4/install/external-disk-support

Sorry to bother this issue, although it is already closed. There are two things that I'm still missing for this particular use-case:

where can I find the docs for the new(?) config parameters externalStorageConfig and additionalKernelArguments? I can't find them in the 1.4 harvester configuration docs -> https://docs.harvesterhci.io/v1.4/install/harvester-configuration/
In my usecase, I don't necessarily want to install harvester on an iSCSI disk, but later on I want to be able to use iSCSI disks for harvester VMs. I use NetApp trident (CSI) on harvester, which works fine, up until the point where I want to connect to the iSCSI target and mount the volume to the VM (pod). Since by default multipath=off, multipathd won't start and I'm getting this error in the harvester logs (VM pod that want's to use an iSCSI PV):

 Events:
  Type     Reason                  Age                  From                     Message
  ----     ------                  ----                 ----                     -------
  Warning  FailedScheduling        3m25s                default-scheduler        0/3 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling.
  Warning  FailedScheduling        3m23s                default-scheduler        0/3 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling.
  Normal   Scheduled               3m21s                default-scheduler        Successfully assigned default/virt-launcher-test-gkj9z to harvester-2
  Normal   SuccessfulAttachVolume  3m22s                attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-0b6f8b0c-93d4-40df-9b0d-18206ab87938"
  Normal   SuccessfulAttachVolume  3m12s                attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-9bf53b8b-2e7a-4f38-ae4c-de018668937d"
  Normal   SuccessfulMountVolume   3m11s                kubelet                  MapVolume.MapPodDevice succeeded for volume "pvc-9bf53b8b-2e7a-4f38-ae4c-de018668937d" globalMapPath "/var/lib/kubelet/plugins/kubernetes.io/csi/volumeDevices/pvc-9bf53b8b-2e7a-4f38-ae4c-de018668937d/dev"
  Normal   SuccessfulMountVolume   3m11s                kubelet                  MapVolume.MapPodDevice succeeded for volume "pvc-9bf53b8b-2e7a-4f38-ae4c-de018668937d" volumeMapPath "/var/lib/kubelet/pods/71d1ecd1-e432-415d-a085-4adf2a542816/volumeDevices/kubernetes.io~csi"
  Warning  FailedMapVolume         64s (x9 over 3m12s)  kubelet                  MapVolume.SetUpDevice failed for volume "pvc-0b6f8b0c-93d4-40df-9b0d-18206ab87938" : rpc error: code = Internal desc = rpc error: code = Internal desc = failed to stage volume: multipathd is not running

This problem contradicts with these docs/guides (an I get them), since they require multipath:

https://docs.harvesterhci.io/v1.4/advanced/csidriver/
https://harvesterhci.io/kb/install_netapp_trident_csi/

I did the same thing on 1.3.1 which worked fine. For config, I used something like this:

https://github.com/dell/iac-storage-automation/blob/harvester/kubernetes/harvester/multipathd-harvester.yaml

Sorry to bother this issue, although it is already closed. There are two things that I'm still missing for this particular use-case:

where can I find the docs for the new(?) config parameters externalStorageConfig and additionalKernelArguments? I can't find them in the 1.4 harvester configuration docs -> https://docs.harvesterhci.io/v1.4/install/harvester-configuration/
In my usecase, I don't necessarily want to install harvester on an iSCSI disk, but later on I want to be able to use iSCSI disks for harvester VMs. I use NetApp trident (CSI) on harvester, which works fine, up until the point where I want to connect to the iSCSI target and mount the volume to the VM (pod). Since by default multipath=off, multipathd won't start and I'm getting this error in the harvester logs (VM pod that want's to use an iSCSI PV):

 Events:
  Type     Reason                  Age                  From                     Message
  ----     ------                  ----                 ----                     -------
  Warning  FailedScheduling        3m25s                default-scheduler        0/3 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling.
  Warning  FailedScheduling        3m23s                default-scheduler        0/3 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling.
  Normal   Scheduled               3m21s                default-scheduler        Successfully assigned default/virt-launcher-test-gkj9z to harvester-2
  Normal   SuccessfulAttachVolume  3m22s                attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-0b6f8b0c-93d4-40df-9b0d-18206ab87938"
  Normal   SuccessfulAttachVolume  3m12s                attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-9bf53b8b-2e7a-4f38-ae4c-de018668937d"
  Normal   SuccessfulMountVolume   3m11s                kubelet                  MapVolume.MapPodDevice succeeded for volume "pvc-9bf53b8b-2e7a-4f38-ae4c-de018668937d" globalMapPath "/var/lib/kubelet/plugins/kubernetes.io/csi/volumeDevices/pvc-9bf53b8b-2e7a-4f38-ae4c-de018668937d/dev"
  Normal   SuccessfulMountVolume   3m11s                kubelet                  MapVolume.MapPodDevice succeeded for volume "pvc-9bf53b8b-2e7a-4f38-ae4c-de018668937d" volumeMapPath "/var/lib/kubelet/pods/71d1ecd1-e432-415d-a085-4adf2a542816/volumeDevices/kubernetes.io~csi"
  Warning  FailedMapVolume         64s (x9 over 3m12s)  kubelet                  MapVolume.SetUpDevice failed for volume "pvc-0b6f8b0c-93d4-40df-9b0d-18206ab87938" : rpc error: code = Internal desc = rpc error: code = Internal desc = failed to stage volume: multipathd is not running

This problem contradicts with these docs/guides (an I get them), since they require multipath:

https://docs.harvesterhci.io/v1.4/advanced/csidriver/
https://harvesterhci.io/kb/install_netapp_trident_csi/

I did the same thing on 1.3.1 which worked fine. For config, I used something like this:

https://github.com/dell/iac-storage-automation/blob/harvester/kubernetes/harvester/multipathd-harvester.yaml

I second this problem. We are using HPE CSI driver that uses iSCSI connections and the Multipath is not coming up  per the new changes related to this.  Is there any way to disable this new functionality through /oem custom files etc.  @ibrokethecloud

@DrackThor the documentation is here: https://docs.harvesterhci.io/v1.4/install/external-disk-support
if i understand correctly you just want to enabled multipathd?

@ibrokethecloud I'm familiar with these docs, but I'm still not sure where to find the reference for the storage related options externalStorageConfig.multiPathConfig. Like which values I can put there, what this does in detail,..
Exactly - I want/need multipathd to use iSCSI volumes, provisioned by a CSI driver running on Harvester.. providing additional disk volumes for VMs.


Workaround broken compilation against NDK r25

When targeting Android NDK r25 (reached EOL now, but still in some use) one gets the following error:
$(SOURCE_ROOT)/contrib/restricted/abseil-cpp/absl/time/time.h:1762:37: error: invalid operands to binary expression ('std::strong_ordering' and 'const std::strong_ordering')
  if (auto c = lhs_hi <=> rhs_hi; c != std::strong_ordering::equal) {

The error indicates the lack of operator<=> between two std::strong_ordering items.
I believe that this should be controlled by __cpp_lib_three_way_comparison (Three-way comparison (library support), see this article), not by __cpp_impl_three_way_comparison (which stands for Three-way comparison (compiler support)).
Fixes #1725.
The problem was introduced in a27662352e9caafc264747562162a8a32ef36cb9.

@derekmauro, I have applies the changes suggested.
It would be better to include this changeset into release, though we can backport a patch (this would require some extra efforts regarding the patch management).

I assume these changes are quite approved now.

@derekmauro, let's merge it and backport to the current release.

@derekmauro, let's merge it and backport to the current release.

Sorry, but a backport for an unsupported platform is not going to happen. These things take a lot of effort to validate and I only get to support Abseil in tiny fraction of my time. I do wish things were different, but the decision of how I get to spend my time supporting Abseil is not mine.

Ok, I will backport the patch into our repo by myself.
Let's just merge it to make it look more legit.

It will be merged, but it is not a matter of just clicking a button. This will take some time.


[firebase_auth] ITMS-90809: Deprecated API Usage - UIWebView APIs

After I upload my App to test Flight I have revived this message from App Store Connect 👍
We identified one or more issues with a recent delivery for your app....
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs
After some googling I think the problem  is in firebase_auth plugin
Here is a picture for dependencies in my project

And Here my flutter doctor

Reporting information from this issue

Description
I have 1 app in 2 variants (full and cut) that have different designs.
The difference between variants are:

assets
GoogleService-Info.plist
provision profiles
The 1st variant Apple releases without any warnings when the 2nd one returns warning "ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs ."

So, pods are the same, flutter packages are the same, also I've compare an XCode build logs - they are identical. In GoogleService-Info.plist are different only id/name fields.

Could you please advice what can I check to find the reason of the warning?

Flutter Doctor
[✓] Flutter (Channel stable, v1.9.1+hotfix.6, on Mac OS X 10.15 19A602, locale ru-UA)
    • Flutter version 1.9.1+hotfix.6 at /Users/admin/flutter
    • Framework revision 68587a0916 (7 weeks ago), 2019-09-13 19:46:58 -0700
    • Engine revision b863200c37
    • Dart version 2.5.0

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/admin/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.1, Build version 11A1027
    • CocoaPods version 1.8.4

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 41.0.2
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

pubspec.yaml
environment:
  sdk: ">=2.2.2 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  flutter_bloc: ^0.13.0
  firebase_core: ^0.4.0+9
  firebase_analytics: ^5.0.2
  firebase_messaging: ^5.1.6
  flutter_xlider: ^2.5.2
  amazon_cognito_identity_dart: ^0.0.22
  built_value: ^6.6.0
  built_collection: ^4.2.2
  kiwi: ^0.1.0
  modal_progress_hud: ^0.1.3
  graphql_flutter: ^1.0.0
  shared_preferences: ^0.5.3+1
  youtube_player_flutter: 5.2.0+1
  pull_to_refresh: ^1.4.5
  carousel_slider: ^1.3.0
  outline_material_icons: ^0.1.1
  cached_network_image: ^1.0.0
  country_code_picker: ^1.1.7
  flare_flutter: ^1.5.5
  firebase_dynamic_links: ^0.5.0+1
  uni_links: ^0.2.0
  sentry: ^2.3.1
  firebase_crashlytics: ^0.1.0+3
  webview_flutter: ^0.3.15+1

dev_dependencies:
  flutter_test:
    sdk: flutter
  build_runner: ^1.5.0
  built_value_generator: ^6.6.0
  mockito: ^4.1.0

Please upgrade Flutter and the plugins to their latest version, I believe this issue is now resolved.
If not, please let me know and I can reopen.

Please upgrade Flutter and the plugins to their latest version, I believe this issue is now resolved.
If not, please let me know and I can reopen.

The issue doesnot seems to be resolved yet.


Laravel 5.6 support

Hi,
Could be great to have the dependency updated to be compatible with Laravel 5.6
Error:
Conclusion: don't install symfony/process v4.0.2     - mhor/php-mediainfo 3.0.0 requires symfony/process ~2.3|~3.0
Thank you!

@meyer59 Support of symfony component >= 4.0.0 was added on version 4.* of php-mediainfo see Packagist.
Related to https://github.com/mhor/php-mediainfo/issues/77


fish: 3.3.1 -> 3.4.0

Description of changes

https://github.com/fish-shell/fish-shell/releases/tag/3.4.0
Resubmit in light of https://github.com/NixOS/nixpkgs/pull/163886#issuecomment-1065971268
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

This seems to work for me. Fish & docs are built and work

From that issue, it seems that the pexpect tests are just flaky (and indeed, I was able to get a few successful builds on the community box every once in a while). Could you disable the tests that they think are most likely to be flaky (i.e. all the pexpect tests and the history_* tests) and leave a link back to that issue?

From that issue, it seems that the pexpect tests are just flaky (and indeed, I was able to get a few successful builds on the community box every once in a while).

Exactly what I thought, the test error doesn't look that serious and I assume it's not due to fish itself.

Would you please disable the tests that they think are most likely to be flaky (i.e. all the pexpect tests and the history_* tests) and leave a link back to that issue? 🙏

I'm not sure, but seems like it's just tests/pexpects/exit_handlers.py on aarch64-linux that's on problematic. We can disable more if needed.

Is rming the tests the best way to disable them? Apparently there is an environment variable that disables some of them ($CI)

Would you please disable the tests that they think are most likely to be flaky (i.e. all the pexpect tests and the history_* tests) and leave a link back to that issue? pray

I'm not sure, but seems like it's just tests/pexpects/exit_handlers.py on aarch64-linux that's on problematic. We can disable more if needed.

You're right, a smaller scope is better. Thanks!


Dynamic require of "path" is not supported

Describe the bug
Specifying "type": "module" in package.json will cause an error: Dynamic require of "path" is not supported
You can refer to this issue: Subwaytime/vite-aliases#33
Reproduction
Don't need
System Info
Don't need

Used Package Manager
pnpm
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

We temporarily close this due to the lack of enough information. Please provide a minimal reproduction to reopen the issue. Thanks.
https://antfu.me/posts/why-reproductions-are-required


UI Build Tools

This is the beginning of adding build tools for the front end of the project. I've also added nodemon to auto refresh the back end when making API changes.

Added Material UI to scaffold the front end
Webpack to build the front end assets
Nodemon to refresh the server back end
cross env and concurrently were added to support development on windows and mac.

Going to open a new one after some refactoring.


[PE-D][Tester B] Issues about the blue tag

The UG says that

But other than the skill tags of a person still will be shown on the blue tag (e.g. friends), it is not that clear to see the skill tags of a person if this person has a lot of tags.

Perhaps can use another colour to show skill tags only.

Labels: type.FeatureFlaw severity.Medium
original: QQH0828/ped#1

????
Unable to understand this issue.


#884 add spark in setup.py tests and fix spark issue with additivity check

Because pyspark wasn't in the test dependencies, the spark unit test was ignored, leading to errors like #884
This commit add spark as test dependency and fix an issue ignoring check_additivity as it requires to run the prediction, which isn't implemented yet.
(Long term fix is to support the prediction directly with spark, starting a local spark cluster)

Thanks for working on this! Looks there are still some spark errors, so I'll hold off on merging right now.

ERROR Instrumentation: java.lang.IllegalArgumentException: Unsupported class file major version 55

I suspect this is an issue with the java version used in the travis build, spark is still on java8 and this error suggest that the jdk is running on something else, like java11
@slundberg I'm not super familiar with travis, should I add the following to the .travis.yaml file and try to re-run the build?
jdk:
  - openjdk8

Thanks! I was trying to figure out why this fails on python 36 and 37 on windows. Do you have thoughts there?

Making slow progress here...

It was failing on Ubuntu because we need java8 and not 11, I fixed that
On windows the winutils lib was missing (required by spark), so I added that too
Still have an issue on windows with python. For some reason it's looking for ctype under C:\Python27 and is failing, probably because C:\Python27 is 32b and not 64b.

File "c:\python36-x64\lib\site-packages\numpy\_distributor_init.py", line 26, in <module>
    WinDLL(os.path.abspath(filename))
  File "C:\Python27\lib\ctypes\__init__.py", line 366, in __init__
    self._handle = _dlopen(self._name, mode)

I thought adding $env:PYTHONPATH = "%PYTHON%\Lib;%PYTHON%\DLLs" in appveyor would solve this issue but there is something else. I'll try again tomorrow, but any idea is welcome!

@slundberg all good now!
However I had to remove - PYTHON: "C:\\Python38-x64": tensorflow doesn't work with python 3.8, how did you managed to make it works in the other build?

Thanks @QuentinAmbard this is great!! I have been meaning to remove py38 on windows for a while, it was not working on TF1.14 and I need to re-add it once we bump up the version of TF we are testing.


python310Packages.graphene: 3.0.0 -> 3.1.0

Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 175830 run on x86_64-linux 1

5 packages failed to build:

netbox
python310Packages.django-graphiql-debug-toolbar
python310Packages.graphene-django
python39Packages.django-graphiql-debug-toolbar
python39Packages.graphene-django

2 packages built:

python310Packages.graphene
python39Packages.graphene

This is a semi-automatic executed nixpkgs-review with nixpkgs-review-checks extension. It is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
Result of nixpkgs-review pr 175830 run on x86_64-linux 1

7 packages built:

netbox
python310Packages.django-graphiql-debug-toolbar
python310Packages.graphene
python310Packages.graphene-django
python39Packages.django-graphiql-debug-toolbar
python39Packages.graphene
python39Packages.graphene-django


Error if dataset size = 1 batch.

Describe the bug
If the dataset size is just one batch, then line 372:
self.val_check_batch = int(self.nb_tng_batches * self.val_check_interval)
in trainer.py evaluates to 0 as nb_tng_batches is 1 and val_check_interval=0.98 by default.
When the trainer then gets to the validation step on line 852:
is_val_check_batch = (batch_nb + 1) % self.val_check_batch == 0
The error ZeroDivisionError: integer division or modulo by zero is raised.
To Reproduce
import os
import torch
from torch.nn import functional as F
from torch.utils.data import DataLoader
from torchvision.datasets import MNIST
import torchvision.transforms as transforms

import pytorch_lightning as pl

class CoolModel(pl.LightningModule):
    def __init__(self):
        super(CoolModel, self).__init__()
        # not the best model...
        self.l1 = torch.nn.Linear(28 * 28, 10)

    def forward(self, x):
        return torch.relu(self.l1(x.view(x.size(0), -1)))

    def training_step(self, batch, batch_nb):
        # REQUIRED
        x, y = batch
        y_hat = self.forward(x)
        return {'loss': F.cross_entropy(y_hat, y)}

    def configure_optimizers(self):
        # REQUIRED
        return [torch.optim.Adam(self.parameters(), lr=0.02)]

    @pl.data_loader
    def tng_dataloader(self):
        dataset = MNIST(os.getcwd(), train=True, download=True, transform=transforms.ToTensor())
        subset = torch.utils.data.Subset(dataset, range(32))  # Dataset size = 1 batch.
        return DataLoader(subset, batch_size=32)

from pytorch_lightning import Trainer

model = CoolModel()

trainer = Trainer()
trainer.fit(model)

Possible solutions
A fix could be to do like on line 364 by adding
 self.val_check_batch = max(1, self.val_check_batch) after line 372.
Additional context
It may be an error that val_check_interval=0.98 by default.
A default value of 1.0 makes more sense, since it is more common to go through all training data before validating.

good find!

Should val_check_interval be changed to 1.?

i personally like to check a little before the epoch ends. That’s a personal preference however, maybe 1.0 makes more sense. although it’s more like .999 because it needs to check before the last tng batch or the epoch will end and never trigger validation

I think the last batch is batch_nb=nb_tng_batches-1, so we get
is_val_check_batch = (batch_nb + 1) % self.val_check_batch = nb_tng_batches % nb_tng_batches == 0
in case self.val_check_batch = int(self.nb_tng_batches * 1.0).
This means it will do validation on the last tng batch.


[#20] MPSC goes to sleep if empty

Description

When the write buffer is empty, CPU consumption is up to 100%.
Solution: use the standard channel as a sleep marker.
Related issue(s)
#20

:white_check_mark: Checklist for your Pull Request

Related changes (conditional)

Tests

[x] If I added new functionality, I added tests covering it.
[ ] If I fixed a bug, I added a regression test to prevent the bug from
silently reappearing again.

Documentation

[x] I checked whether I should update the docs and did so if necessary:

README

Public contracts

[x] My changes doesn't break project license.

Stylistic guide (mandatory)

[x] My code complies with the styles guide.

[x] My commit history is clean (only contains changes relating to my
issue/pull request and no reverted-my-earlier-commit changes) and commit
messages start with identifiers of related issues in square brackets.
Example: [#42] Short commit description
If necessary both of these can be achieved even after the commits have been
made/pushed using rebase and squash.

Before merging (mandatory)

[x] Check target  branch of PR is set correctly

Codecov Report
Attention: 24 lines in your changes are missing coverage. Please review.

Comparison is base (f1b9436) 82.64% compared to head (cdc83fb) 81.06%.
Report is 4 commits behind head on main.

Files
Patch %
Lines

cache.go
52.17%
19 Missing and 3 partials :warning:

internal/queue/mpsc.go
92.30%
2 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #21      +/-   ##
==========================================
- Coverage   82.64%   81.06%   -1.59%
==========================================
  Files           9        9
  Lines         657      713      +56
==========================================
+ Hits          543      578      +35
- Misses         99      119      +20
- Partials       15       16       +1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


test(metadata): use function instead of copy paste

@AndreasHuber I have extended your solution with https://github.com/serlo/database-layer/pull/414/commits/f9b2820de387c70c497e144f64a4e57cf00fcdd0 What do you think about this?


Update n-series-driver-setup.md

Updated install instructions (Ubuntu) to align with Nvidia recommendations and to prevent potential terminal drivers install failure by not rebooting after installation.
Updated Cuda version from 12.3 to 12.5
Updated Ubuntu version to 24.04

@microsoft-github-policy-service agree

@vikancha-MSFT
Can you review the proposed changes?
Important: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


Added correct exception type to ProgressBar.call

NEVER NEVER NEVER use an except without a type without reraising it.

Yep, the full rewrite isn't fully done yet :)
That's what you get when taking over old projects I suppose ;)


Code-Only Approach

Hello, this is a summary and a follow up of our discussion https://github.com/stride3d/stride/discussions/1253.
Describe the solution you'd like
Simplifying code-only approach. Literally create a new console app wherever you want to, add Stride NuGet package(s), add your code and run (meaning not running away from the computer 🤣).
There is no need to add every single scenario here as we can evolve this functionality.
This is a collaboration of multiple community members, I just put pieces together.
Additional context, reasons for this feature

You don't want to install anything on your computer (no Stride installation required?)
You want to start very quickly
You want to learn C# programming with a nice visual output instead of console
You want to learn game programming gradually, in the simplest way, without using the game editor
You find coding and coding tools very complex to understand and navigate around
You want to start with game development basics before you even start exploring the game editor
Easy and quick prototyping
Easy to learn game development concepts and steps
Performance and feature evaluation (@najak3d)
Other I am not aware of (Ping below and I will add it here)

Considerations

At this stage I am not sure about the game deployment, if this approach has all you need to successfully deploy your application like if you did with the Stride Game Studio, also that is not a purpose of this feature as it can evolve in other stages
Any other?  (Ping below and I will add it here)

Related issues

https://github.com/stride3d/stride/issues/1290
https://github.com/stride3d/stride/issues/1258
https://github.com/stride3d/stride/issues/80
https://github.com/stride3d/stride/issues/986

Working Prototype
https://github.com/VaclavElias/stride-code-only
Basic Usage
https://github.com/VaclavElias/Stride3DTutorials/tree/main/Other/Minimal
Plan

[x] Initial discussions - this was discussed on Discord channel and also #80, #986
[x] Preview Concepts - a few concepts will be proposed
[x] Issue Opened
[x] Collecting a feedback from the community, code review, updates and clean up - inviting others to suggest features and review
[x] Naming Convention - finalising naming convention for methods, properties, namespaces
[x] File locations
[x] Tests
[x] Documentation
[x] New Repo
[x] Release

Changes proposed

Small Engine updates, actually just one at the moment

https://github.com/stride3d/stride/issues/1290
The other is just a convenience not related necessarily to the code-only approach  https://github.com/stride3d/stride/issues/1258

New assembly/NuGet with extensions and boilerplate code

This is where we can further elaborate

Game Extension
This is the most important extension, which is going to simplify proposed code-only scenarios. Kudos @Eideren. This requires https://github.com/stride3d/stride/issues/1290.
https://github.com/VaclavElias/Stride3DTutorials/blob/c696513a444a0b240f499ddfd3b61579cd879e44/Other/Minimal/Stride.GameDefaults/GameExtensions.cs#L11-L30
public static void Run(this Game game, GameContext? context = null, Action<Scene>? start = null, Action<Scene, GameTime>? update = null)
{
    game.Script.Scheduler.Add(RootScript);

    game.Run(context);

    async Task RootScript()
    {
        start?.Invoke(GetRootScene());
        if (update == null)
            return;
        do
        {
            update.Invoke(GetRootScene(), game.UpdateTime);
            await game.Script.NextFrame();
        } while (true);
    }

    Scene GetRootScene() => game.SceneSystem.SceneInstance.RootScene;
}

Example 1
This one would be encouraging using Components. Using .NET 6, C# 10. Only 16 lines of code (excluding RotationComponentScript)
using var game = new Game();

game.Run(start: Start);

void Start(Scene rootScene)
{
    game.SetupBase3DScene();

    var entity = new Entity(new Vector3(1f, 0.5f, 3f))
    {
        new ModelComponent(new CubeProceduralModel().Generate(game.Services)),
        new RotationComponentScript()
    };

    entity.Scene = rootScene;
}

Example 2
This example is going to use Update() where one can do whatever they need to. Also, you can see I added a profiler and used game.NewDefaultMaterial().
using (var game = new Game())
{
    var entity = new Entity(new Vector3(1f, 0.5f, 3f));
    var angle = 0f;
    var initialPosition = entity.Transform.Position;

    game.Run(start: Start, update: Update);

    void Start(Scene rootScene)
    {
        game.SetupBase3DScene();
        game.AddProfiler();

        var model = new CubeProceduralModel().Generate(game.Services);

        model.Materials.Add(game.NewDefaultMaterial());

        entity.Components.Add(new ModelComponent(model));

        entity.Scene = rootScene;
    }

    void Update(Scene rootScene, GameTime time)
    {
        angle += 1f * (float)time.Elapsed.TotalSeconds;

        var offset = new Vector3((float)Math.Sin(angle), 0, (float)Math.Cos(angle)) * 1f;

        entity.Transform.Position = initialPosition + offset;
    }
}

Example 3
Eeh, I don't want your defaults, let me cherry pick/implement myself.
using (var game = new Game())
{
    game.Run(start: Start);

    void Start(Scene rootScene)
    {
        game.SetupBase();
        game.AddSkybox();
        game.AddMouseLookCamera();
        game.AddGround();

        var entity = new Entity(new Vector3(1f, 0.5f, 3f))
            {
                new ModelComponent(new CubeProceduralModel().Generate(game.Services)),
                new RotationComponentScript()
            };

        entity.Scene = rootScene;
    }
}

What do we need from the community?
Please, let us know your opinion and other suggestions you would like to have included, maybe state which one you think is a must and which one is optional.
Suggestions what else could be done

SetupBase2DScene()
AddSplashScreen()
AddGizmo() - that is my favourite proposal as I get disoriented
Option to switch on/off Physics (performance evaluation)
Option to switch on/off Shadows (performance evaluation)

Hi @Kryptos-FR, @rds1983, @CharlesWoodhill, @IceReaper. You have expressed an interest in the code-only approach just pinging you here.

This can be done iteratively.   You can dive in now and start building this framework for samples.
I'd suggest it open up to a menu of Samples to choose from.   In the end we may have up to 100 samples.  Here's what the Urho Samples project looks like; this style works well.

Also, it's vital to have these samples run well on Windows, Android, and iOS, without issue or headache.   With the new .NET/VS2022 approach, we can do this all with ONE launcher, and then just define the 3 platforms for deployment.  (Previously, you needed one launcher for each platform).   So we should structure it to work like that.
Double-click the .sln, Choose a platform, then press F5- - and poof, you have access to 100 samples.
Then there is no real need for "Tutorials" then -- users can see it working, and the code for each sample is simple, and easy-enough to see how it works by tinkering with code.    So when you see something you like -- you just snag the source code from the sample.

@najak3d that's not quite related to finishing the basic code-only implementation. The editor provides a couple samples that can be spawned, if you're not satisfied with those or the way in which they are provided better to focus on that specific issue in a new, more specific, issue thread instead

My usecase is building an RTS engine on top of Stride where only the game logics would be hardcoded and assets could be added/loaded dynamically without a need for the editor, so I am interested in no-editor approach too. In particular (may or may not be related to this issue) I would want to have documentation on how to do the stuff that is done in editor (asset importing, YAML reading etc.) via code.

In general, would want a documentation on more in-depth engine parts. Stride advertises itself as highly modular, and that should mean that I am free to take whatever parts I want from the engine, but only the top-level API is currently documented, which complicates this.

@najak3d that's not quite related to finishing the basic code-only implementation. The editor provides a couple samples that can be spawned, if you're not satisfied with those or the way in which they are provided better to focus on that specific issue in a new, more specific, issue thread instead

I'm not sure what you mean by "couple samples that can be spawned"?
I think the code-only approach should allow ALL settings to be set by the dev from code.   Could be as simple as setting a static property called "Game.DefaultSettings" or something equivalent, so that when Stride loads up, in the absence of a game settings asset, it just uses the DefaultSettings set in C# code before game.Run() is called.
My post above was suggesting the format of the UI for samples, in that they should all be included into the same master .csproj, each sample in it's own subfolder.  So when you are examining the samples, you can see them all in a single run of the Samples project.   Try one; back out; try another; back out; and so on.
I've seen some Samples provided as many individual csproj's and those are more tedious to get around, as you keep having to load, unload and reload VStudio with a new .csproj.
Also having one that can launch all, in succession, demonstrates (and tests) Stride's ability to clean up after itself, leaving behind no memory leaks/residue.   As you test the various samples, the RAM footprint should not keep growing, but should reduce back close to where it was when you started (generally, but not exactly, as GC sometimes is very latent, and that's fine).
It would be good to demonstrate how to build all basic assets in C# - e.g. materials, planes, cubes, physics hulls, etc.   Demonstrate to the user that they'll never have to enter the Game Editor, except maybe to facilitate the importing of advanced assets (like 3D models, terrain, etc).  And even then, would be better to have a CLI-based asset importer for the advanced stuff.

Hello everyone, thank you for you input.
@najak3d I will create a separate issue with your comments, how to improve code-only approach, with examples & documentation. Time wise this should be a next step/phase so we can finish our current basic code-only implementation.
@Metadorius, it is similar to @najak3d, just to add examples and documentation for what you need.

Update 1
https://github.com/VaclavElias/Stride3DTutorials/tree/main/Other/Minimal/Stride.GameDefaults
I have cleaned up my project so you can start giving a feedback / code review (@manio143), maybe let's try to stay in the scope of what is there functionality wise and just talk about simple things which could be added/adjusted/removed.
My initial questions:

Shall we keep all under this project or you would like to spread it to existing projects?
If we keep it separate as it is

Is it ok to use .NET 6/C# 10 syntax (GlobalUsings, File-Scoped namespace,  project has Nullable=enabled, ..)?
What should be the name of the project/namespace
Should it be a separate NuGet package?

If so, can this be a beta/preview for some time?
Can this be released in the faster manner if we would like to add more functionality?

What names (methods, files, anything..) do we need to change?

GameExtensions.cs
I don't know how far you want to take it with null checks, validation and so on.
Some extensions might be too much or too opinionated but that's why we are here :)

Run() - Main extension, which does the magic
SetupBase() - Minimum needed - You can start with this and cherry pick anything else, it contains:

AddGraphicsCompositor() - Still working on this one, thinking to add Clean UI
AddCamera() - Finished
AddLight() - Finished

SetupBase3DScene() - You can start with this - Adds additional goodies, similar to Game Studio default project, which I took as my source of content

SetupBase()
AddSkybox() - Almost finished

SkyboxGeneratorContext  - Need to review what is needed and what is not
Skybox Generator - Probably finished

AddMouseLookCamera() - A script taken from one of the Stride samples, not sure if we have got any official location for this, so I could reference it?
AddGround() - Finished
AddSphere() - Maybe not needed?

Optional

AddGroundCollider() - Adds a collider to the ground - Finished
NewDefaultMaterial() - Adds basic default material - Finished
CreatePrimitive() - This helper is similar to Unity CreatePrimitive
AddProfiler() - Adds profiler from our default script, not sure if I could reference it from the existing project?
ScreenPointToRay() - Opinionated wrapper for Raycast (Example in Program.cs)

Other Content

Resources/skybox_texture_hdr.dds used for skybox
Other cs files which we can discuss

Thanks.

Since this is a new/forward-thinking effort, I think you should move to .NET6/C#10 right off the bat.
In the long run, I would like to see this as something that is "part of Stride", not a separate Nuget add-on.  For now, offering the Nuget package seems like a great way to make usage very easy.

Regarding the Drag&Drop demo that drops many many cubes onto the ground.   If this is not already using the Instancing technique (implemented by @tebjan  in 2020) - I think it should use this technique.  Then when you turn off physics, you can see a very high FPS, to demonstrate competitive performance of Stride rendering with thousands of objects.

Yes, I haven't had a chance to use Instancing yet and I think Instancing is the way! 👍😁. I just needed code-only playground so I could play with anything, so that is being done, I can finally play with Stride 🤣.

Sure, as a nugget package, if you want to use nullables and such go ahead, it's your baby.
As for the name Stride.GameDefaults or Stride.Defaults is fine to me.

AddMouseLookCamera() - A script taken from one of the Stride samples, not sure if we have got any official location for this, so I could reference it?

I don't think so either, it's generated with the right namespace and such in editor when the user selects it from what I remember.
In general I would say that most function relying on the name search you do here and there like so:
game.SceneSystem.SceneInstance.RootScene.Entities.SingleOrDefault(x => x.Name == SomeHardcodedEntityName);
should be redesigned to avoid it. Those are not flexible and harder to debug than necessary for users, add a parameter for the entity/component you need in that function.
ScreenPointToRay for example, it's a bit hard to debug if your setup is slightly more complex.
For that function you could extend it from CameraComponent instead of game, that way users already specify which camera they want to test from.
But perhaps that method might be better of as just returning the vectors necessary for the ray instead of doing the raycast itself, that way users can then choose which raytest function they want to use instead of being stuck with just a simple raycast ? And at that point we might want to look into moving it in engine though given how useful and basic it is ...
AddGround should create a collider with the mesh by default, I think it's fair to say that users would expect the ground to be solid, and so have a collider. You could then remove AddGroundCollider.
AddSplashScreen doesn't seem that important to add compared to the rest, I think you can cut it if you don't care too much.
AddSphere seems a bit redundant given the PrimtiveModelType
Small typo PrimtiveModelType => PrimitiveModelType
I think the Add methods, like AddLight, AddCamera, should add them regardless of if it already exists in the scene. It should do what the name of the function implies.
There's a couple of extension methods which don't return the things they create, like AddLight, AddSkybox ...
That line is a bit awkward:
https://github.com/VaclavElias/Stride3DTutorials/blob/60c7f9358f255d9e712325313f45392d61e5fbdc/Other/Minimal/Stride.GameDefaults/GameExtensions.cs#L238-L239
It seems like DefaultMaterial is just bloat, you could remove that class and replace that function with:
public static Material NewDefaultMaterial(this Game game, Color? color = null)
{
    var materialDescription = new MaterialDescriptor
    {
        Attributes =
            {
                Diffuse = new MaterialDiffuseMapFeature(new ComputeColor(color ?? _defaulColor)),
                DiffuseModel = new MaterialDiffuseLambertModelFeature(),
                Specular =  new MaterialMetalnessMapFeature(new ComputeFloat(1.0f)),
                SpecularModel = new MaterialSpecularMicrofacetModelFeature(),
                MicroSurface = new MaterialGlossinessMapFeature(new ComputeFloat(0.65f))
            }
    };

    return Material.New(game.GraphicsDevice, materialDescription);
}
private static readonly Color _defaulColor = Color.FromBgra(0xFF8C8C8C);

Other than that it's pretty great, congrats @VaclavElias

Thanks @Eideren! Let me update the project accordingly and I will be back 😁.

AddGround should create a collider with the mesh by default, I think it's fair to say that users would expect the ground to be solid, and so have a collider. You could then remove AddGroundCollider.

If you want to automate the adding of Ground collider, please make it optional, with a trailing method parameter such as :  ", bool isPhysical = true"  - so that omitting the parameter gives you the collider, but also allows those who are simply using this for the Visual to set it to False.
IMO, keep in mind that this Code-Only approach is the only approach that also appeals to non-gamers who will be coming to Stride for Visualization rendering only.

Just a little bit of though, t would be great if editor support is still possible. So that if you start with this, is not impossible to work with the editor. A designer night join the team later, and then you would want editor support. If you start the other way around, by creating the project with the editor, you can use code only or mixed with editor.
So it would be great if with this approach is also possible to use both workflows...

Just a little bit of though, it would be great if editor support is still possible. A designer might join the team later, and then you would want editor support. If you start the other way around, by creating the project with the editor, you can use code only or mixed with editor.
So it would be great, if with this approach it is also possible to use both workflows...

I agree it would be best if you can use the Editor for any project created with Code-Only approach.  For starters, it just needs to be possible without too much headache (e.g. following a 10-minute manual procedure).   But, I don't know enough about Stride Editor to know the intricacies/complexities involved here.
As a common use case, if a designer created a scene in Stride Editor -- I think it needs to be easy to import that scene for use by a targeted Code-Only project.

I was actually thinking about this combination as well and I agree it would be great and cool if that works. I will explore this briefly and if it is too much work, I will create a separate issue (most likely). If we manage to publish this basic implementation we will add to documentation our intention and that code-only approach is still work in progress.

I'm curious if considerations for the .NET Host style of app construction? I see much of the design and examples here as being quite close to that style already (although around a slightly different service interface).
var builder = Host.CreateDefaultBuilder(args);

builder.Services.AddStride().WithBase3DGame().ModifyInitialScene((scene, services) => {
  var entity = new Entity(new Vector3(1f, 0.5f, 3f))
  {
    // Generate model being an extension method that retrieves a model service that provides the mesh reference.
    new ModelComponent(services.GenerateModel<CubeProceduralModel>()),
    new RotationComponentScript()
  };

  entity.Scene = scene;
});

var game = builder.Build();

game.Run();

That would also provide logging facilities, a fairly flexible config system, dedicated server interfaces as services like azure have native hooks with these kinds of hosts (at least config and logs wise).
I'm guessing this is a much more dramatic question as the structure is not exactly aligning with the existing system. But I am curious what y'all think about it, especially as it seems like dotnet is trying to make it easier to use the generic host.
I also am still trying to understand how stride works in general, so this may be way off base versus what is wanted, thanks for your time.
This could also mean I could easily do spooky things like this that make no sense but I find funny
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddStride().WithBase3DGame();

// ASP local web services, because why not.
builder.Services.AddControllers();

var app = builder.Build();

// I don't think this interface exists, but something through DI to get the current scene.
app.MapPost("/box", (ISceneProvider scenes, [FromQuery] Vector3 position) =>
  scenes.Current.Add(new Entity(position)
  {
    new ModelComponent(/*whatever gives a cube mesh*/),
  }));

app.Run();

This might actually be useful in some visualization cases, but still it's funky as heck.

@Earthmark the initial concept @VaclavElias was going for looked closer to that design pattern but it's just not as compatible with game programming or game engines. There's a lot of added bloat and obtuseness that's really not necessary, just compare the amount of functions you must know and call to set things up correctly between the current one and yours.
But to be fair, I know have a huge bias against that design so if others feel like this would be a good idea and provides decent arguments as to why we should go that way, I would understand.

@Earthmark the initial concept @VaclavElias was going for looked closer to that design pattern but it's just not as compatible with game programming or game engines. There's a lot of added bloat and obtuseness that's really not necessary, just compare the amount of functions you must know and call to set things up correctly between the current one and yours. But to be fair, I know have a huge bias against that design so if others feel like this would be a good idea and provides decent arguments as to why we should go that way, I would understand.

I agree with @Eideren :  Although I favor this Builder/Fluent-Pattern for UI composition, I don't think it should be front-center for laying out a Game/Scene composition, which is far more complex than a UI.    And for these Code-Only examples, I think it'll be better overall for us to expose more of the guts of what all it takes to setup a scene, including various options.
Later on, optimizations via Builder (or extensions to enable the Fluent-Pattern) are easy (and optional) add-ons, which can attempt to simplify these Code-Only samples into a more terse/sexy notation.

@Earthmark, more I play with the current simplified approach, more I like it but I agree with @Eideren and @najak3d. This can evolve to anything. I guess once code-only approach is out there, it will attract more audience as @najak3d suggested and then we are going to have more input, ideas and contributions 😁.

Update 2
Base on you feedback, this was done:

[x] We can keep namespace Stride.GameDefaults
[x] We will keep .NET 6 / C# 10 syntax
[x] The AddMousesLookCamera and AddProfiler script need to be updated independently from the Stride examples
[x] I removed hard coded entity names, I used them just to check if they already exist, considering the other comment that Add() should just add, I don't need names

[ ] Question: Do we still want a name as a parameter? Now, that an entity is returned, the name can be still added voluntarily
[ ] Question: I predefined only a camera entity name through a parameter, so I could later retrieve it and add a Camera Script. Is that ok?

[x] ScreenPointToRay() was added as an extension to CameraComponent https://github.com/VaclavElias/Stride3DTutorials/blob/main/Other/Minimal/Stride.GameDefaults/CameraComponentExtensions.cs, I see the flexibility now, any review on this? It returns a tuple (Vector4 VectorNear, Vector4 VectorFar)? (If you want it in the engine, I will open a separate Issue) Example usage: https://github.com/VaclavElias/Stride3DTutorials/blob/9dcff8975c884a491aef38ecf7740ad2fe037cb4/Other/Minimal/Minimal/Program.cs#L23-L55
[x] AddGround includes optional collider
[x] AddSphere and AddSplashScreen removed
[x] NewDefaultMaterial updated
[x] Typo fixed for PrimitiveModelType
[x] I think all extensions now return an appropriate entity
[ ] Question: CreatePrimitive doesn't add a collider, while in Unity it does. Shall we keep it without the collider?

Other Notes

[ ] Create an Issue "Code-Only + Stride Editor Approach"
[ ] Create an Issue "Code-Only Examples"

This all looks very encouraging and right-on-mark.
Here are my suggested answers to your questions:

Since Entity/Object names are important (some use them to Find(objectByName)), I think having an Optional name in the constructor is best way to go.
Keep the Camera 'name' parameter, for same reason.
Just like Ground, CreatePrimitive should have an Optional "includeCollider" parameter, that defaults to 'true' (defaulting to Unity3D behavior seems like a safe bet).

I agree with @najak3d, just one small point:

I predefined only a camera entity name through a parameter, so I could later retrieve it and add a Camera Script. Is that ok?

This is for SetupBase3DScene, right ? You could move your var cameraEntity = game.SceneSystem.SceneInstance.RootScene.Entities.Single(w => w.Name == cameraEntityName); to that function instead and pass that variable to your  AddMouseLookCamera, right ?

@Eideren you mean this?
public static void SetupBase3DScene(this Game game)
{
    game.AddGraphicsCompositor();

    var camereEntity = AddCamera(game);

    game.AddLight();

    game.AddSkybox();

    game.AddMouseLookCamera(camereEntity);

    game.AddGround();
}

public static void AddMouseLookCamera(this Game game, Entity cameraEntity)
{
   cameraEntity.Add(new BasicCameraController());
}

@najak3d you mean each extension should have an optional name here?
public static Entity AddCamera(this Game game, string? entityName = null) {}

public static Entity AddLight(this Game game, string? entityName = null) {}

And so on..

Just like Ground, CreatePrimitive should have an Optional "includeCollider" parameter, that defaults to 'true' (defaulting to Unity3D behavior seems like a safe bet).

That makes sense 😁. Just for a consistency, we should call it "includeCollider" also for the ground, currently I call it "isPhysical" for ground.

@VaclavElias sure, that's fine too

I am slightly confused, based on the feedback from my initial comment the fluent-style api was to be avoided? It seems like the pattern is now heavily towards a fluent-ish api (besides possibly the return type, but semantically it's pretty much the same).
Thank you for the valuable feedback with that, I now don't think I currently understand how this isn't a fluent interface though, or what the suggested pattern here improves performance and structure wise? It feels to me about the same as a fluent API (at least what I'd consider a fluent api). I think that would help me provide feedback on this if it's wanted, as I don't seem to currently understand all of the design constraints involved here.
Personally my advocacy was more for the app-host itself, where that provides standardized logging and config facilities. The hope being that it's less for users new to stride to need to care about, their logs are configured and go where they expect, config is provided however it was in other C#-ish projects. In my mind it's like adding entity framework to a project, configure it a bit at the start and it gets routed to where you need the new system. Stride would just be another system (that happens to allocate a GUI and bind a gpu... so a kinda hefty system possibly).
I guess from y'all's perspective, are you wanting the code-first to be more focused on making code-first stride game project, or integrating stride into an existing system, such as having stride be an interactive visualizer for something?

@Earthmark  - my comment was centered on the starting code snippet:
 builder.Services.AddStride().WithBase3DGame().ModifyInitialScene(....)

I'm not sure how much of that API you wrote here even exists yet, but my assumption was that it does not yet exist, and that it would take extra work to make an API such as what you suggested into a reality (fluent-pattern style).   So my comment was simply trying to suggest, "no fluent-pattern for Stride initialization is not important".
==
Your restatement of what you were saying, sounds more reasonable to me, i.e. "provides standardized logging and config facilities".    This sounds very smart to me, and I would think this is already has @VaclavElias already had in mind.. (??)
And yes, you are correct about what my intentions are for this Code-Only initiative -- It should be very simple for just about any .NET (or MAUI) app to insert Stride into their UI - for whatever purposes they have (e.g. visualization, maps, etc).

Stride doesn't use Microsoft.Extensions.Logging or Configuration (because they are fairly new compared to Stride, but also it may be a bit overkill), so if it's something you want to use in your code executed by Stride systems, you can write your own extension which will register IServiceProvider in the Game.Services and allow you to access it from scripts, entity processors, etc.
In the same spirit if you want to use IHost, you can create a small IHostedService which calls game.Run() in its StartAsync method.
P.S. sorry for no code formatting, but writing from phone

@najak3d Yeah, those methods do not exist right now. I was going off the interfaces I was seeing in the original post and assuming some boilerplate extension methods could be made if that kind of integration was wanted or needed. I assumed most of this was talking about methods that didn't exist yet, I thought this was discussing code-only interfaces from the perspective of making those interfaces, perhaps I misread the room there and this is more towards documenting existing interfaces?
With what your saying though about intended support targets Maui is host based, see Mahi app startup, so some adapters may be needed in that case or users will need to configure multiple logging and configuration systems. That may not be too bad, but that's at least something I can look into.
@manio143 I get that stride doesn't use those common interfaces at the moment, I think Stride.Core.Diagnostics and Stride.Core.Settings are the spots that stride uses for logging and configuration respectively? I am curious if having it interface with those loggers or config providers is desirable. I figure it's a re-invent the wheel kind of thing, stride may have been first between the two but I don't know if it's wanted to move towards the microsoft ones.
I'm happy to look into making adapters between the stride systems and the Microsoft.Extensions.* systems, it feels to me like that'll be needed based on the Maui case, and I've got experience with at least the microsoft side of that pond so if nothing else I can smack stride with hammers and see what happens. I'll probably poke at what would happen if you swapped the stride ones out for the microsoft ones as part of that, but given it'd be a versioning hell for users of stride I'll end up likely only proposing adapters if that's a desirable thing by the stride team.

Thanks @Earthmark for your input. I guess we didn't define exactly what "code-only" approach means. I think it was first mentioned in 2018 (https://github.com/stride3d/stride/issues/80). I was simply checking the posts and everything and trying to figure out if it could be done from all the existing puzzles spread everywhere, just "Running Stride without the editor".
I am new to Stride and game development, and it took me at least 30+ hours to put all existing pieces together and there we have a Stride engine non-invasive code-only approach, meaning literally we haven't done any changes in the Stride engine (those 2 pull requests I did already, didn't have to be).
That means, we have an exciting feature, we can use Stride in the most simplest way, which can target a specific audience. It was always there, just not enough resources to bring it to this point.
If the community wants to take it even further to the next level, whatever it is, that is now your and community voice. We can open a new issue and I will try to assist as I don't have yet enough Stride/game engine experience to lead this.
.NET Core 1.0 - NET 6 Host Builder evolved nicely based on the community feedback and lessons learned from the previous versions and I guess we can expect that also to happen for the "cody-only" approach.
The current implementation I did here is just a starting point. Once it is out and people start playing with it we might get more feedback to feed any future approach 🤣. Content wise @najak3d already overloaded us with his suggestions 🤣🤣.

@VaclavElias  - and "content-wise", if it's constructed to make it easy to add new samples, then we can accept new samples from many contributors.   That's typically how it works for other projects.   As people make use of Code-Only approach and figure out how to get stuff done, they then supply that example code back to the Code Only Samples -- and poof, it starts growing.   I plan to provide back several key samples, as I do my own learning/testing.
One thing I want to learn and add to samples is:

Geometry Shaders
Compute Shaders
Instanced Animated Models

And plan to do the same for Stridelonia, from a Code-Only approach.   Maybe we can have a separate Stridelonia Samples Project in the Code-Only Solution.  We are developing Game UI samples now (using Urholonia, but should port easily to Stridelonia).

From what I can see you have made a super solid foundation. New features only make it a feature-creep. Extending documentation and new features on top, should be discussed during the community meeting imo.

@najak3d as far as I can tell Aggror is just suggesting getting this out the door first and figuring out the what and how of samples afterward when people can actually play around with it.

Update 3
Based on you feedback, this was done:
https://github.com/VaclavElias/Stride3DTutorials/tree/main/Other/Minimal

[x] Optional string? entityName = null  added to methods which return an Entity
[x] bool includeCollider = true added to CreatePrimitive() , however this is ignored for a teapot, torus and plane. Is this ok?
[ ] I still need to review GraphicsCompositor
[ ] Question: What tests do you suggest should be done?
[ ] Question: Which Stride folder should I add this project?
[ ] Question: Which Stride solutions should I add this project?

Any comments let me know :)

Question: Which Stride folder should I add this project?
Question: Which Stride solutions should I add this project?

Perhaps its own specific repo since nothing depends on this, it would be easier to contribute and make PRs than the main since it wouldn't need all of the additional build steps ? Also issues would be properly separated; we won't have to ask if the user has that issue from a code only or an editor project.

Question: What tests do you suggest should be done?

Do what you deem necessary, it's fine

Yeah, that would give some flexibility indeed and more time to bake 😁. Do you suggest I create my own repo to start with or you had on mind creating this repo directly in Stride?

I don't really know honestly, perhaps start of in yours and if it grows too big for you tell us and we'll move it under our org. ? What do you think ?

Sounds good to me whatever is easier. If needed Stride org can take over that repo or simply reuse anything 😁.

I have moved code-only bits to a new repo here https://github.com/VaclavElias/stride-code-only. Once .NET 6 Stride is out I will create a NuGet package as well.

Time for some update here 🤣.
(https://github.com/VaclavElias/stride-code-only)
As we are still deciding where this library is going to be I have created 1st test/preview NuGet package https://www.nuget.org/packages/CodeCapital.Stride.GameDefaults/
I have tested it on my PC and I have got 1 problem.
The file skybox_texture_hdr.dds is in the NuGet package but it is not copied to *\bin\Debug\net6.0* when my test example is build.

Any ideas what I need to do?
Also, I am working now on some examples

Did you try this?

I do have something similar already but you are right there are a few more options and this makes it working copyToOutput="true" when set in the package. I have to now figure out if this could be pre-set in the project file.
<files include="any/net6.0/Resources/skybox_texture_hdr.dds" buildAction="Content" copyToOutput="true" />

I am going to put it together.. 😀.
Thanks!

Ok, my issue was fixed by adding <PackageCopyToOutput>true</PackageCopyToOutput> which adds the attribute copyToOutput="true" to the NuGet manifest. I am going to test all now on clean Windows 10 installation.
    <ItemGroup>
        <Content Include="Resources\skybox_texture_hdr.dds">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
            <PackageCopyToOutput>true</PackageCopyToOutput>
        </Content>
    </ItemGroup>

I have done a successful test, running code-only app on a clean Windows 10 installation (Azure VM), using Visual Studio Code and Visual Studio 2022.
I had to add to this approach these prerequisites:

Install Visual C++ Redistributable: https://download.visualstudio.microsoft.com/download/pr/cc0046d4-e7b4-45a1-bd46-b1c079191224/9c4042a4c2e6d1f661f4c58cf4d129e9/vc_redist.x64.exe
http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe

dotnet build is ok, but Visual Studio build complains

http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe

dotnet build is ok, but Visual Studio build complains

Found a bug in the SkyBox path which was fixed (AppContext.BaseDirectory was added):
using var stream = new FileStream($"{AppContext.BaseDirectory}Resources\\{SkyboxTexture}", FileMode.Open, FileAccess.Read);

If anyone is already using latest Stride (master branch) you can test the example from here https://github.com/VaclavElias/stride-code-only#readme, just follow the Steps, most likely you don't need prerequisites.
I have got another question now. When the code-only NuGet is used, these files are added automatically to the project when the NuGet package is created, do we need them?

glslangValidator.exe
glslangValidator.bin

Thanks.

these files are added automatically to the project when the NuGet package is created

The issue here is that they are stored inside of the nuget package or that they are referenced and included in the build output of a project ?
Not sure why if it's the former, if it's the later it's probably a requirement for OpenGL shader compilation ?

They were automatically added to the NuGet nuspec and the package itself.
They are not referenced in the project file https://github.com/VaclavElias/stride-code-only/blob/main/src/Stride.GameDefaults/Stride.GameDefaults.csproj.

Maybe it is requirement for OpenGL shader compilation as you pointed out. I guess I can ignore it  and leave it there.

Hello I am creating 3d rts game engine called Corrino Engine which will be the 3d version of OpenRA
it already support Mod System
https://github.com/cookgreen/CorrinoEngine

If no objection, we can close this issue. This is now well documented https://stride3d.github.io/stride-community-toolkit/manual/code-only/index.html, and available through Stride.CommunityToolkit.

My only comment is that all of the documentation in the Stride Community Toolkit manual probably belongs in the Stride Manul. ;-)

Actually, @Aggror and I were discussing this, and I suggested that we first stabilize it before considering a move.

Will more time and more content make the move harder in the future? I'm not sure how difficult it is to move stuff between the two.

Nope, Stride Community Toolkit, is using exactly the same workflow like Stride Docs. Copy and paste, maybe fixing some paths should be very simple.

Thank you, everyone, for your comments and contributions. The code-only approach is an example of how a small update to the Stride engine can make certain features easily accessible and elevate development in Stride to a new level. It took me almost 2 years to bring it from a draft to something we can showcase through our toolkit. A big thank you to @Eideren and @manio143, who helped bring this to life.
I am closing this issue now. The code-only approach is working, it's documented in our Stride Community Toolkit, and it's still being improved with documentation and examples through the toolkit.
The related discussion https://github.com/stride3d/stride/discussions/1253 can remain open, so we can continue to elaborate on Linux or other features.


Performance Optimisation.

Changes to improve performance

Changed date generation for date tag value
Added loading screen
Added "maximum items displayed" drop-down
Additional change from using locale functions to get day name for tags, to using a static list in config, which took another half second off processing time. This has the disadvantage that it needs a list in config, but has the advantage that the day names are fully customisable.

Good spot!
This was caused by the change from using locale formatting functions to just formatting hour and minute. To get the timezone code, it renders one date and extracts the timezone code. I used the epoch date of 1970 for this, which seemed to work fine for most timezones, but missed that it had problems for some, possibly if they had changed their timezone some time in the last 50 years. I've changed to using the current time to get the correct timezone code. I think this might have some problems around daylight saving changeovers, so I'll continue to look at ways of improving this.

Initial load wasn’t as snappy as Peter had hoped, but performance when navigating back to the schedule is significantly improved on the Chicon schedule.

Initial load wasn’t as snappy as Peter had hoped, but performance when navigating back to the schedule is significantly improved on the Chicon schedule.

Thanks for the feedback. I think there are a couple of areas we can improve things further, so I'll work on it over the next few days.