[Bug Report] Relative links in markdown

Introduction
When using relative links in markdown files you have to use either ./file.md or file.md. When trying to use /file.md you will get redirected to the root of the gitea instance.
Example
https://try.gitea.io/schorsch/relative-links-in-markdown

Proposal
Change /file.md from directing to the web root to the project root
Credits
The bug was discovered by the codeberg user ivan-paleo. For further information have a look at the issue at codeberg: https://codeberg.org/Codeberg/Community/issues/252

This was fixed at some point and something has caused a regression!!

Yes this was fixed in #15088
This is particularly irritating as there was even a test created to prevent this from happening YET AGAIN

Let's just go through this again.
The base url for an image link rendered in a file GH is:
/owner/repo/blob/branch/path/to/file/
Relative links may traverse out of the repo i.e. if a file that is in / of owner/repo on the default branch master has a link:
../../../../owner2/repo2
then it would like to /owner2/repo2 directly.
Links that start with a / e.g. /../../../owner2/repo2 do not traverse out of the repo.

I'll do some more test cases in pathological and properly add tests to gitea to prevent this from happening yet again.

OK I guess we need the following (this is for a gitea mounted on a suburl /gitea):

name
input
file
fileInDir
wiki
issue

samedir
file
/gitea/gogits/gogs/src/branch/master/file
/gitea/gogits/gogs/src/branch/master/subdir/file
/gitea/gogits/gogs/wiki/file
/gitea/gogits/gogs/issues/file

childir
subdir/file
/gitea/gogits/gogs/src/branch/master/subdir/file
/gitea/gogits/gogs/src/branch/master/subdir/subdir/file
/gitea/gogits/gogs/wiki/subdir/file
/gitea/gogits/gogs/issues/subdir/file

/file
/file
/gitea/gogits/gogs/src/branch/master/file
/gitea/gogits/gogs/src/branch/master/file
/gitea/file
/gitea/file

../file
../file
/gitea/gogits/gogs/src/branch/file
/gitea/gogits/gogs/src/branch/master/file
/gitea/gogits/gogs/file
/gitea/gogits/gogs/file

/../file
/../file
/gitea/gogits/gogs/src/branch/file
/gitea/gogits/gogs/src/branch/file
/gitea/file
/gitea/file

../../file
../../file
/gitea/gogits/gogs/src/file
/gitea/gogits/gogs/src/branch/file
/gitea/gogits/file
/gitea/gogits/file

/../../file
/../../file
/gitea/gogits/gogs/src/file
/gitea/gogits/gogs/src/file
/gitea/file
/gitea/file

../../../file
../../../file
/gitea/gogits/gogs/file
/gitea/gogits/gogs/src/file
/gitea/file
/gitea/file

../../../../file
../../../../file
/gitea/gogits/file
/gitea/gogits/gogs/file
/gitea/file
/gitea/file

../../../../../file
../../../../../file
/gitea/file
/gitea/gogits/file
/gitea/file
/gitea/file

../../../../../../file
../../../../../../file
/gitea/file
/gitea/file
/gitea/file
/gitea/file

../../../../../../../file
../../../../../../../file
/gitea/file
/gitea/file
/gitea/file
/gitea/file

One slight problem is that this this is still not github compatible - githubs blob urls are:
https://github.com/zeripath/pathological/blob/master/README.md
Whereas the equivalent in Gitea:
https://try.gitea.io/arandomer/pathological/src/branch/master/README.md
So we're already slightly incompatible.
However, the / behaviour would be the least we should do.

TestCase to add to modules/markup/markdown/markdown_test.go
func TestRender_RelativeLinks(t *testing.T) {
	setting.AppURL = "https://localhost:3000/gitea/"
	setting.AppSubURL = "/gitea"

	testcases := []struct {
		name              string
		input             string
		expectedFile      string
		expectedFileInDir string
		expectedWiki      string
		expectedIssue     string
	}{
		{
			name:              "samedir",
			input:             "file",
			expectedFile:      "/gitea/gogits/gogs/src/branch/master/file",
			expectedFileInDir: "/gitea/gogits/gogs/src/branch/master/subdir/file",
			expectedWiki:      "/gitea/gogits/gogs/wiki/file",
			expectedIssue:     "/gitea/gogits/gogs/issues/file",
		},
		{
			name:              "childir",
			input:             "subdir/file",
			expectedFile:      "/gitea/gogits/gogs/src/branch/master/subdir/file",
			expectedFileInDir: "/gitea/gogits/gogs/src/branch/master/subdir/subdir/file",
			expectedWiki:      "/gitea/gogits/gogs/wiki/subdir/file",
			expectedIssue:     "/gitea/gogits/gogs/issues/subdir/file",
		},
		{
			name:              "/file",
			input:             "/file",
			expectedFile:      "/gitea/gogits/gogs/src/branch/master/file",
			expectedFileInDir: "/gitea/gogits/gogs/src/branch/master/file",
			expectedWiki:      "/gitea/file",
			expectedIssue:     "/gitea/file",
		},
		{
			name:              "../file",
			input:             "../file",
			expectedFile:      "/gitea/gogits/gogs/src/branch/file",
			expectedFileInDir: "/gitea/gogits/gogs/src/branch/master/file",
			expectedWiki:      "/gitea/gogits/gogs/file",
			expectedIssue:     "/gitea/gogits/gogs/file",
		},
		{
			name:              "/../file",
			input:             "/../file",
			expectedFile:      "/gitea/gogits/gogs/src/branch/file",
			expectedFileInDir: "/gitea/gogits/gogs/src/branch/file",
			expectedWiki:      "/gitea/file",
			expectedIssue:     "/gitea/file",
		},
		{
			name:              "../../file",
			input:             "../../file",
			expectedFile:      "/gitea/gogits/gogs/src/file",
			expectedFileInDir: "/gitea/gogits/gogs/src/branch/file",
			expectedWiki:      "/gitea/gogits/file",
			expectedIssue:     "/gitea/gogits/file",
		},
		{
			name:              "/../../file",
			input:             "/../../file",
			expectedFile:      "/gitea/gogits/gogs/src/file",
			expectedFileInDir: "/gitea/gogits/gogs/src/file",
			expectedWiki:      "/gitea/file",
			expectedIssue:     "/gitea/file",
		},
		{
			name:              "../../../file",
			input:             "../../../file",
			expectedFile:      "/gitea/gogits/gogs/file",
			expectedFileInDir: "/gitea/gogits/gogs/src/file",
			expectedWiki:      "/gitea/file",
			expectedIssue:     "/gitea/file",
		},
		{
			name:              "../../../../file",
			input:             "../../../../file",
			expectedFile:      "/gitea/gogits/file",
			expectedFileInDir: "/gitea/gogits/gogs/file",
			expectedWiki:      "/gitea/file",
			expectedIssue:     "/gitea/file",
		},
		{
			name:              "../../../../../file",
			input:             "../../../../../file",
			expectedFile:      "/gitea/file",
			expectedFileInDir: "/gitea/gogits/file",
			expectedWiki:      "/gitea/file",
			expectedIssue:     "/gitea/file",
		},
		{
			name:              "../../../../../../file",
			input:             "../../../../../../file",
			expectedFile:      "/gitea/file",
			expectedFileInDir: "/gitea/file",
			expectedWiki:      "/gitea/file",
			expectedIssue:     "/gitea/file",
		},
		{
			name:              "../../../../../../../file",
			input:             "../../../../../../../file",
			expectedFile:      "/gitea/file",
			expectedFileInDir: "/gitea/file",
			expectedWiki:      "/gitea/file",
			expectedIssue:     "/gitea/file",
		},
	}

	for _, testcase := range testcases {
		t.Run(testcase.name, func(t *testing.T) {
			t.Run("file", func(t *testing.T) {
				buffer, err := RenderString(&markup.RenderContext{
					URLPrefix: setting.AppSubURL + "/" + Repo + "/src/branch/master/",
					Filename:  "test.md",
					Metas: map[string]string{
						"user":     "gogits",
						"repo":     "gogs",
						"repoPath": "../../../integrations/gitea-repositories-meta/user13/repo11.git/",
					},
				}, "["+testcase.input+"]("+testcase.input+")")
				assert.NoError(t, err)
				assert.Equal(t, fmt.Sprintf("
%s
", testcase.expectedFile, testcase.input), strings.TrimSpace(buffer), "Incorrect file path")
			})
			t.Run("fileInDir", func(t *testing.T) {
				buffer, err := RenderString(&markup.RenderContext{
					URLPrefix: setting.AppSubURL + "/" + Repo + "/src/branch/master/subdir/",
					Filename:  "test.md",
					Metas: map[string]string{
						"user":     "gogits",
						"repo":     "gogs",
						"repoPath": "../../../integrations/gitea-repositories-meta/user13/repo11.git/",
					},
				}, "["+testcase.input+"]("+testcase.input+")")
				assert.NoError(t, err)
				assert.Equal(t, fmt.Sprintf("
%s
", testcase.expectedFileInDir, testcase.input), strings.TrimSpace(buffer), "Incorrect subdir file path")
			})
			t.Run("wiki", func(t *testing.T) {
				buffer, err := RenderString(&markup.RenderContext{
					URLPrefix: setting.AppSubURL + "/" + Repo,
					IsWiki:    true,
					Metas: map[string]string{
						"user":     "gogits",
						"repo":     "gogs",
						"repoPath": "../../../integrations/gitea-repositories-meta/user13/repo11.git/",
					},
				}, "["+testcase.input+"]("+testcase.input+")")
				assert.NoError(t, err)
				assert.Equal(t, fmt.Sprintf("
%s
", testcase.expectedWiki, testcase.input), strings.TrimSpace(buffer), "Incorrect wiki path")
			})
			t.Run("comment", func(t *testing.T) {
				buffer, err := RenderString(&markup.RenderContext{
					URLPrefix: setting.AppSubURL + "/" + Repo + "/issues/",
					Metas: map[string]string{
						"user":     "gogits",
						"repo":     "gogs",
						"repoPath": "../../../integrations/gitea-repositories-meta/user13/repo11.git/",
						"mode":     "comment",
					},
				}, "["+testcase.input+"]("+testcase.input+")")
				assert.NoError(t, err)
				assert.Equal(t, fmt.Sprintf("
%s
", testcase.expectedIssue, testcase.input), strings.TrimSpace(buffer), "Incorrect issue path")
			})
		})
	}
}

Has there been any progress on this bug? This seems like a reasonably important feature-breaking bug!
I was surprised to see that my relative links in existing repositories do not function properly in Gitea.

Same problem with using HTML A tag in markdown with relative file name
Steps:

Create markdown file with HTML tag A and link to local file (for example, readme
Save file, link will lost current path, if you viewing branch link will be /repo/src/branch/file.md instead of  /repo/src/branch/main/file.md

Demo: https://try.gitea.io/aybe/markdown-branch/

From https://try.gitea.io/aybe/markdown-branch/ , only relative link from a tag is wrong. Maybe it's accepted?

I just ran into this, sadly it seems to break almost all links in my documentation so this is a really high impact bug in my opinion. Especially since with the GitHub mirror it works fine.
Here's a demo file with a link that should work but it doesn't:
https://try.gitea.io/blablablablab/BlaTest/src/branch/main/A B/outsidelink.md
(The big bold (test link) is what you want to click. Expected behavior is that it gets you to the target file in the repository root, actual behavior is some nonsensical location.)

Duplicate of #25632
Maybe fixed by #26774

In original post it is said that relative links such as [text](file.md) or [text](./file.md) resolve correctly, but absolute ones do not. This is not my experience with Gitea 1.21.4. Example
I expect that a link such as [Project structure](crates/readme.md) in the project readme should be resolved to example.com/org/repo/src/branch/main/crates/readme.md, instead it is resolved to example.com/org/repo/crates/readme.md, making it pretty much useless, as it is always broken.

The issue above seems to be a regression between 1.20.5 and 1.21.4

@KN4CK3R sorry, pinging for visibility since you made the MR and you seem to be responsible for that area.

Thanks, sorry for panicking. Relative links work again, but the absolute ones are still broken.
A link such as /docs/running.md will be rendered as it is in html and will lead to localhost:3000/docs/running.md

Ok, that's not a regression of my PR 🎉 Gitea always rendered them like that. It's debatable what the root is for absolute links. Even Github is inconsistent with the links.
Inside issue:
A
/A
../A
../../A
../../../A
../../../../A
../../../../../A
../../../../../../A
/../A
Inside repo:
https://github.com/KN4CK3R/Test/blob/4398ccfc630b9b438421ca7e16c60de0538127cd/README.md

A fix would be to strip the / prefix for links too:
https://github.com/go-gitea/gitea/blob/3e8414179c3f3e8a12d3a66fdf32c144f941f5c3/modules/markup/markdown/goldmark.go#L148
- link = []byte(giteautil.URLJoin(base, string(link)))
+ link = []byte(giteautil.URLJoin(base, strings.TrimLeft(string(link), "/")))

GitHub is not very consistent even when it comes to rendering README.md as a repo front page or as an individual file.
Example:
link in the first footnote at the end of README.md
https://github.com/ratijas/kdesrc-build-sublime -- renders as https://github.com/ratijas/plugins/gen_conf_options.py
https://github.com/ratijas/kdesrc-build-sublime/blob/master/README.md -- renders as https://github.com/ratijas/kdesrc-build-sublime/blob/master/plugins/gen_conf_options.py
It really is tricky

@vilunov the first one seems more like a bug, doesn't it? usually in almost all places on GitHub it behaves like the 2nd example. maybe they just forgot about this corner case of footnotes in the one location, that feels like the most likely.
on gitea, sadly it still doesn't seem to work for links starting with / ever, not even in corner cases, see "Broken Example 2" here. this makes writing documentation where individual pages can be moved around inside the documentation folder without all their links to other files breaking quite difficult. so i hope this can be fixed eventually.

I am having (a variation of?) this problem on the latest version of Gitea (served at root, not at sub-path) — For example I write:
see [README](README.md)

In the Release description field and the link is replaced with:
https://example.com:3000/my_organization/my_project/README.md

And results in 404 error when clicked. Actual README.md link in the source tree shows as:
https://example.com:3000/my_organization/my_project/src/branch/master/README.md

I don't think either would be correct for Releases though — it should link to specific tagged release version of the file.

Is this bug resolved now, I am facing the same issue with version 1.21.4.
-Thanks.

It is not really fixed. Because the "absolute path" link handling is quite tricky and ambiguous.
And, if we change this behavior, it is a "breaking" change and will make existing "absolute-path" links broken.

It is not really fixed. Because the "absolute path" link (starting with a slash /xxxx) handling is quite tricky and ambiguous.
And, if we change this behavior, it is a "breaking" change and will make all existing "absolute-path" links broken.

Which means we need to use /src/branch/main/ as a prefix right?

Which means we need to use /src/branch/main/ as a prefix right?

Or use relative path like ../../foo/bar.

Maybe I could take a try in 1.23 to "fix/improve" the path handling, but I can't promise at the moment.

I just updated my installation to 1.22.0 and my issue got resolved, my issue was the 1st one referenced in comment https://github.com/go-gitea/gitea/issues/18592#issuecomment-1030591957

I moved recently to Forgejo, based on Gitea, and works fine. Even MD header URL links works fine, which I think is not the same with Gitea.

There are some different path problems, some have been fixed, while some are still not.
Forgejo is still largely based on Gitea's work, but they skipped some Gitea's commits (even some are security related) so I guess it couldn't be more complete than Gitea.

Made some tests on GitHub, I think we could just copy the behavior (and mark it as breaking)
https://github.com/wxiaoguang/playground/blob/44cc37ef49eb827345dd0d9d510b319f81f63f16/test.md
https://github.com/wxiaoguang/playground/blob/6bd6f1da05afc914abf452628d90c90b71093820/dir/test.md

But not sure whether we should 100% follow it ........

I vote for using the same logic as GitHub — that makes it easier to have both private Gitea and public GitHub repo with correct links in both.
Also please make sure that it works not just in issues and comments but in releases as well.

I moved recently to Forgejo, based on Gitea, and works fine.

In Foregjo 7.0.0 this seems not fixed, and linking e.g. /docs/start.md inside a repository's main folder inside a README.md, won't actually link to https://instance.org/user/repo/src/branch/main/docs/start.md as it probably should. At least as far as I can tell.

I moved recently to Forgejo, based on Gitea, and works fine.

In Foregjo 7.0.0 this seems not fixed, and linking e.g. /docs/start.md inside a repository's main folder inside a README.md, won't actually link to https://instance.org/user/repo/src/branch/main/docs/start.md as it probably should. At least as far as I can tell.

Actually they missed many bug fixes or improvements, because they hard-forked and skipped many commits.

:face_exhaling:
guys, I've marked the comments above as off-topic.
They have nothing to do with this issue or Gitea.
AFAIK, Forgejo hardforked some months ago and has diverged since.
as such, the two projects can no longer be seen as equal.
If you encounter issues with Forgejo, please discuss it with them instead of in the Gitea issue tracker.
I'll hide my own comment as well to not disturb others.

https://forgejo.org/compare-to-gitea/
https://forgejo.org/compare-to-gitea/#better-security

https://forgejo.org/compare-to-gitea/ https://forgejo.org/compare-to-gitea/#better-security
I can be a bridge between both parts because I have no problem with any of both :) haha

Then you could tell them they have some XSS in some pages, but not in Gitea.

v1.21.4, bare metal installation, server as root of subdomain. I have the same problem, e.g.
In README.md I have
[Schematics available in the docs folder](docs/schematics.pdf)

And it doesn't work. Full path to the file is src/branch/main/docs/schematics.pdf.  I assume this hasn't been resolved yet.

v1.21.4, bare metal installation, server as root of subdomain. I have the same problem, e.g.
In README.md I have
[Schematics available in the docs folder](docs/schematics.pdf)

And it doesn't work. Full path to the file is src/branch/main/docs/schematics.pdf.  I assume this hasn't been resolved yet.

Can you upgrade to v1.22.3 to try it again?

Can you upgrade to v1.22.3 to try it again?

It hasn't been improved yet. I am still working on some markdown refactorings. If I complete I would tell here.

Refactor markup render system #32612
Almost done, this PR will fix most problems.

v1.21.4, bare metal installation, server as root of subdomain. I have the same problem, e.g.
In README.md I have
[Schematics available in the docs folder](docs/schematics.pdf)

And it doesn't work. Full path to the file is src/branch/main/docs/schematics.pdf.  I assume this hasn't been resolved yet.

Hi  ApplePie420 , I have tested your markdown in 1.22, it seems that 1.22 could render that relative path correctly (something should have been fixed there). Would you like to upgrade to 1.22 and take a try? No need to wait for 1.23.
Screenshot:

If anything doesn't work as expected, please provide some reproducible examples. Thank you.

https://demo.gitea.com/ell1e/linktest/src/branch/main/README.md This example suggests relative links with no trailing slash work, but relative links with trailing slash to link files relative to the base of the file tree still don't work (which they do on GitHub). I hope this is helpful.

https://demo.gitea.com/ell1e/linktest/src/branch/main/README.md This example suggests relative links with no trailing slash work, but relative links with trailing slash to link to files relative to the root of the file tree still don't work (which they do on GitHub). I hope this is helpful.

Thank you, that's another problem and will be fixed in 1.23 (see my PR  #32612)
I think it works as expected now, feel free to try that PR 🙏

#32612 has been merged and the nightly build are ready (docker: main-nightly, binary: https://dl.gitea.com/gitea/main-nightly/ )
I think the "relative/absolute" path problem should have been fixed for most cases.
I have done my best to avoid regressions, if there is anything wrong, please let me know and I will fix bugs in first time.


Character Event Await End prematurely displays Text Box

The problem
Describe the bug
If the character event appears before they speak and Await End is toggled, the dialogue box is instantly visible without animation, disappears, and appears with the animation.
If Await End is false, no text box is visible.
To Reproduce
This has been reproduced with Dialogic 2 Alpha 12.
Note the Await End is toggled on:

Expected behavior
No text box is visible until the character speaks.

This is my fault, something's not correct in my own custom layer.
I'm sorry.


feat: upstream addHaveSuggestion and addRewriteSuggestion

Upstreams two more "Try this:" builders.

WIP

awaiting-review


validate video

Q
A

Bug?
no

New Feature?
no

Version Used
master

Hello
I am trying to 'fast' validate the image, so I know it passes validation and can be saved to the database.
In the CLI i do:
ffmpeg -v error -i video.mp4 -map 0:1 -f null - 2>/dev/null
echo $?

this command returns status code of 0 - if success.
1 - on error
What would be the 'alternative' in this LIBRARY way?
I can't seem to find a way to run 'raw' command.
thanks

For now I came up with a solution:
$ffprobe = FFProbe::create($config);

        $duration = (int) $ffprobe
            ->format($value->path())
            ->get('duration');

        return $duration > 0;

so if duration is more than 1 second -  it's ok
does it seem correct? If so maybe this issue van be close, or maybe some ->validate() method could be implemented?

Yeah, that's a valid approach.... Will implement this as soon as I got more time and more fun implementing those. Somehow, I like writing comments, but I lack of implementing things...

🎉

Thank you :)  works
but it would be better if you tag a new version sometime not too late
beeing on dev-master I don't feel good:)

Yeah, that's actually true, but I will check whether I can implement other feature requests until I tag a new version. :)


required only on update

I've a usecase where I want a field ("version") to be required only on update. In short, people updating a resource should define which version they are creating. On resource creating, this should not be needed.
This does not seems to be doable easily, so I will hack around on my end. But I open this issue for the record, as this seems to me a valid (though rare) use case.

This looks more like a Eve related issue? Have you checked into bulti-in Document Versioning?

Nope, I'm using cerberus in falcon based project: https://github.com/etalab/ban :)
But thanks for the pointer, I'll have a look at Eve to see how it's done there :)

is this still an issue?


HPA doesn't seem to work with Kubernetes 1.16.0

On GKE cluster that has 1.16.0-gke.20 recently.  Activation works, but the HPA never kicks in.  It shows 0 current replicas even when it's at 1.  I think the way KEDA activates may be bumping into the HPA changes that allow external metrics to drive scaling all the way down to zero. Not sure
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.16.md#other-notable-changes-11

To clarify too this was working on 1.15.5, and then in the last week GKE upgraded it to 1.16 at which point none of my deployments will scale past 1 and HPA never seems to kick in and start reading external metrics.
// cc @Aarthisk

@jeffhollan do you have an output from the HPA and metrics server?

The KEDA metrics server just has the standard few lines of startup code. I don’t see any errors or info.  Not sure if switching to debug logs (v=1) will show more?  I couldn’t figure out how to get logs from the HPA itself other than kubectl describe.  Not sure if you have any tips of how I can get more helpful logs.

okay, so the metrics server seems to be ok.
as for HPA, kubectl describe or kubect get -oyaml should give you some output. It might be worth checking this during the scaling. There you could see some messages about (not) getting the metrics, so we could role out problems with metrics server.

Hope this helps, I've been using 1.16.3 and i can see hpa working with keda.  Scale to zero and up is working for me.  This is with microk8s not gke.

Thanks @balchua - hard to know if a bug with 1.16.0 or gke rapid channel or something. I did repro this though on a clean cluster on 1.16.0-gke20.  when I start pushing load I see the metrics are working fine. I compared the APIs to a version on 1.15 in gke that was working fine and everything is identical, so not sure why it's having an issue

k get --raw /apis/external.metrics.k8s.io/v1beta1/namespaces/functions/queueLength

{
   "kind":"ExternalMetricValueList",
   "apiVersion":"external.metrics.k8s.io/v1beta1",
   "metadata":{
      "selfLink":"/apis/external.metrics.k8s.io/v1beta1/namespaces/functions/queueLength"
   },
   "items":[
      {
         "metricName":"queueLength",
         "metricLabels":null,
         "timestamp":"2019-12-17T05:42:07Z",
         "value":"281"
      }
   ]
}

But the HPA doesn't seem to see the custom metrics or get updated with the current replica count (KEDA has created 1 replica when I ran this, so current should be 1).

k get --raw /apis/autoscaling/v2beta2/namespaces/functions/horizontalpodautoscalers/keda-hpa-azure-function

{
   "kind":"HorizontalPodAutoscaler",
   "apiVersion":"autoscaling/v2beta2",
   "metadata":{
      "name":"keda-hpa-azure-function",
      "namespace":"functions",
      "selfLink":"/apis/autoscaling/v2beta2/namespaces/functions/horizontalpodautoscalers/keda-hpa-azure-function",
      "uid":"3babf67b-f748-4bde-8f07-701ce179dcad",
      "resourceVersion":"1542",
      "creationTimestamp":"2019-12-17T05:40:49Z",
      "ownerReferences":[
         {
            "apiVersion":"keda.k8s.io/v1alpha1",
            "kind":"ScaledObject",
            "name":"azure-function",
            "uid":"4a5bc2f1-123a-4ee9-9a04-641b87093bf9",
            "controller":true,
            "blockOwnerDeletion":true
         }
      ]
   },
   "spec":{
      "scaleTargetRef":{
         "kind":"Deployment",
         "name":"azure-function",
         "apiVersion":"apps/v1"
      },
      "minReplicas":1,
      "maxReplicas":100,
      "metrics":[
         {
            "type":"External",
            "external":{
               "metric":{
                  "name":"queueLength",
                  "selector":{
                     "matchLabels":{
                        "deploymentName":"azure-function"
                     }
                  }
               },
               "target":{
                  "type":"AverageValue",
                  "averageValue":"5"
               }
            }
         }
      ]
   },
   "status":{
      "currentReplicas":0,
      "desiredReplicas":0,
      "currentMetrics":null,
      "conditions":null
   }
}

Did one last test which was created the scaledObject with minReplicaCount of 1 to see if it would be happier. Same issue - hpa still reports currentReplica of 0 even though the deployment clearly shows 1.  I wonder if some other bug going on here specific to GKE.  Not sure if another provider who has an easy way to spin up 1.16 to test

Tested on Digital Ocean 1.16.2 and worked fine

We might want to document this somewhere @jeffhollan if you're up for it?
A "Known Issues" section or so, but also brings me back to https://github.com/kedacore/keda-docs/issues/49

For this who use GKE 1.16 and see this error when using kubectl describe hpa keda-hpa-:
unable to fetch metrics from external metrics API: access_frequency.external.metrics.k8s.io is forbidden: User "system:vpa-recommender" cannot list resource "access_frequency" in API group "external.metrics.k8s.io" in the namespace "default": RBAC: clusterrole.rbac.authorization.k8s.io "external-metrics-reader" not found
You can fix it by creating clusterrole and clusterrolebinding as specified here:
https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
kind: ClusterRole
metadata:
  name: external-metrics-reader
rules:
- apiGroups:
  - "external.metrics.k8s.io"
  resources:
  - "*"
  verbs:
  - list
  - get
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: external-metrics-reader
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: external-metrics-reader
subjects:
- kind: ServiceAccount
  name: horizontal-pod-autoscaler
  namespace: kube-system

Hopefully this helps someone that is having the same problems we had

@Cerberussian strange, similar clusterrole and clusterrolebinding should be created during the installation of KEDA:
https://github.com/kedacore/keda/blob/master/deploy/20-metrics-cluster_role.yaml#L1-L16
https://github.com/kedacore/keda/blob/master/deploy/21-metrics-role_binding.yaml#L36-L51

maybe keda-external-metrics-reader should be used then instead of external-metrics-reader? is it possible keda creates keda-external-metrics-reader but actually never uses it and instead uses external-metrics-reader?

The name is not important, the permissions. Both clusterroles grants similar permissions. The question is, why do you need your version of clusterrole and clusterrolebinding, when the same is being created during the instalation. You should check whether the installation was successful and all objects were created.

I probably don't fully understand something but it clearly states name of a cluster role it cant find:
RBAC: clusterrole.rbac.authorization.k8s.io "external-metrics-reader" not found

so I think the name is important.
I checked and KEDA's resources were created successfully and are in place if you do kubectl get clusterrole / clusterrolebinding. If name was not important, I believe creating the same resource with only a different name would not help us solve the problem.

@Cerberussian thanks for the snippet! It's missing apiVersion: rbac.authorization.k8s.io/v1 in the first line, took me some time to figure out why the role was not added :)

@Cerberussian thanks for the snippet! It's missing apiVersion: rbac.authorization.k8s.io/v1 in the first line, took me some time to figure out why the role was not added :)

Good catch!
It was there but due to Markdown error I've made it didn't show up.
Fixed it.
Happy to hear it helped you!

@thefirstofthe300 thanks for the confirmation!
It might be worth adding this to the FAQ or somewhere else in the docs, WDYT @tomkerkhove ?

Sounds good to me - Either FAQ or Troubleshooting

Do you want to contribute this @thefirstofthe300?

Docs on how to add a FAQ
Docs on how to add a troubleshooting


ardour reports wrong version number

Hi @cillianderoiste,
Even though we build from git tag 3.5.403, ardour --version reports
3.5-380-g2f6065b.
This is because we're building from a git tree, but without the .git/ directory, so our (manually cached) version info that is built into ardour has gotten out of sync.
Unfortunately the two version numbers have different format, so either we have to maintain two version numbers, or let ardour figure this out on its own by using a full/deep git clone and leaveDotGit.
Do you have any opinion on this?
I have a WIP commit to fix this here:
https://github.com/bjornfor/nixpkgs/commit/e267751dd145056ac012779e4032ba6fade1e46f
This issue is also why I created https://github.com/NixOS/nixpkgs/pull/5252, because there is currently no way to tell fetchgit to do a deep clone.

Fixed (worked around manually) in master (0e3007ec886948889bc634a88b3396b4ed01e7ee) and release-14.12 (3cb749f796307f007b119c95377dcd73f279289e).

Thanks @bjornfor. Sorry for not responding, I never noticed this ticket.

@cillianderoiste: No problem :-)


PkgConfig and ArborX installation

If
pkg_check_modules(PC_Kokkos QUIET kokkos)

fails in FindKokkos.cmake, the proper PC_Kokkos_CFLAGS are not set, and the whole Kokkos target becomes half-baked target. However, for downstream projects that compile against ArborX this fact may be obscured, and lead to errors like
#error "You enabled Kokkos OpenMP support without enabling OpenMP in the compiler!"

My question is: why do we not automatically fail when pkg_check_modules fails? Are there situations where we would want to continue?

Fixed by #121.


I wonder if the pushprox client can use a heuristic to reduce the connection time of /poll.  For example, don't initial /poll unless half of the recently observed scrape period has elapsed.  That could reduce global connection count by 50%?

That breaks if there's multiple scrapers, all active clients should have a
connection.

I wonder if the pushprox client can use a heuristic to reduce the
connection time of /poll. For example, don't initial /poll unless half of
the recently observed scrape period has elapsed. That could reduce global
connection count by 50%?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/RobustPerception/PushProx/issues/70?email_source=notifications&email_token=ABWJG5XFDV5Y4TUFZGFRPYDQ2VEEVA5CNFSM4J7SQLRKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4ICY7CVQ,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABWJG5TVIC6NILV6QQUJS2LQ2VEEVANCNFSM4J7SQLRA
.


Stable version file and link

Summary
Creates a stable version file that is published to blob storage (which then creates an aka.ms latest link) to allow for stable access to the latest version within each major.minor version bubble. This is currently only used for release note generation.
Example main build: https://dev.azure.com/dnceng/internal/_build/results?buildId=2195696&view=results
Example 7.2 build: https://dev.azure.com/dnceng/internal/_build/results?buildId=2195697&view=results

Release Notes Entry

/backport to release/8.x

/backport to release/7.2

/backport to release/6.x


Change the "Restart" button in GameOverView to a "Return to menu" button

Currently when the game is over your only option is to restart. This, however, blocks you from accessing the Settings feature. instead you should be able to Return to the Intro Screen

We could also make two buttons, one retry and one return to menu


Provide multiple correct answers for some questions

(apologies – I don't know why the diff is so large when I just added more correct answers to just eight questions)
This mostly fixes two categories of problems: one where doing a LEFT JOIN on an arbitrarily selected initial table was causing additional rows to appear in the data.
In the example below, both are the correct queries to answer the question How does the ratio of authors to organizations differ by continent?, yet only the first was previously marked correct
Query:
SELECT organization.continent, COUNT(DISTINCT author.aid)::float / NULLIF(COUNT(DISTINCT organization.oid), 0) AS ratio
FROM organization
LEFT JOIN author ON author.oid = organization.oid
GROUP BY organization.continent ORDER BY ratio DESC NULLS LAST;

Data:
   continent   | ratio
---------------+-------
 North America |   1.5
 Europe        |   0.5
 Asia          |     0

Query:
SELECT organization.continent, COUNT(DISTINCT author.aid)::float / NULLIF(COUNT(DISTINCT organization.oid), 0) AS ratio
FROM author
LEFT JOIN organization ON author.oid = organization.oid
GROUP BY organization.continent ORDER BY ratio DESC NULLS LAST;

Data:
   continent   | author_to_organization_ratio
---------------+------------------------------
 North America |                          1.5
 Europe        |                          0.5

The second big category is adding multiple accepted answers if a title columns is also being added. Like so:
SQL:
SELECT paperkeyphrase.paperid, COUNT(paperkeyphrase.keyphraseid) AS keyphrase_count
FROM paperkeyphrase
GROUP BY paperkeyphrase.paperid
ORDER BY keyphrase_count DESC NULLS LAST;

Answer:
 paperid | keyphrase_count
---------+-----------------
       3 |               2
       5 |               2
       4 |               1
       2 |               1
       1 |               1

SQL:
SELECT p.title, COUNT(pk.keyphraseid) AS num_keyphrases
FROM paper p
JOIN paperkeyphrase pk ON p.paperid = pk.paperid
GROUP BY p.title
ORDER BY num_keyphrases DESC NULLS LAST;

Answer
                    title                     | num_keyphrases
----------------------------------------------+----------------
 Machine Learning in Tackling Climate Change  |              2
 Social Media and Mental Health               |              2
 COVID-19 Impact on Society                   |              1
 A Study on Machine Learning Algorithms       |              1
 The Effects of Climate Change on Agriculture |              1

Additionally:

Renamed correct_instructions to instructions, and the old instructions to full_instructions. This ensures that we use the right instructions set in our queries for all evals
Clarified some questions and queries in the instruct-basic and instruct-advanced question sets


[Feature]  How can I create a lib and use in an application?

Can I create a spring-boot library and use inside a application in the workspace?

Sure, since v2.0.0 of the plugin you can.
Simply run:
nx g @nxrocks/nx-spring-boot my-boot-lib and choose Library when prompted for the type of project
You can also directly run:
nx g @nxrocks/nx-spring-boot my-boot-lib --library

Sorry for reopen the question but, I already have the lib and already have the application in the workspace, I'm wondering in how to use that lib in the workspace application similarly in the way of angular lib of nx workspace, is that possible, or I have to local map that lib with maven?

I'm not sure I follow you... just add the dependency of your library in the pom.xml (or build.gradle) of the application that needs it, just as a regular maven/gradle project.

I have added in the pom.xml, but it was not found by maven.
It gives me erro when I try to run.

As your library is not published yet, you have to locally install it so it can be visible by your app.
You must run mvn install from the library root folder to do so.

Perfect, works like a charm.
Thnx for you time.

No problem!
I will look into a way to automate this, i.e auto-install dependencies (libraries) of a Spring Boot app inside the workspace when running|building the app itself via nx serve your-boot-app.
I've created https://github.com/tinesoft/nxrocks/issues/66 to track that

Are there any examples of how apps and libs work together in nx-spring-boot?
I don't see the point of libs right now, it's like a separated app. In my case, I have an app with the following packages: "admin, auth, user, shared". I want to divide them into separated libs and use them in the app, but I can't find a way in doing that. I can't even import the class from lib to app.
Also, is there a way to have just one pom.xml in the main app, and that libs will read from it, like in angular for example? You have one main package.json, and all libs and apps can read from that one package.json.

It would be useful to add the same feature to nx-quarkus package.


[README] Need to add Community Forum

Description

README.md is the first file one should read when starting a new project. Our community launched Discussion forum for help seekers; needs to publish it officially on README.md for convenience.
Screenshots

Current behaviour:

Desired behaviour:

Note:
Need to add only last line for Community Forum
Environment:

OS: any [e.g. Ubuntu]
Browser: any [e.g. Chrome, Safari]
Version: any [e.g. 22]
Device: any [e.g. laptop, iPhone 8]

Reference:

Take reference to this pull request

Hey,@amino ,@debjani1413 ,can you assign this issue to me.

@Pawanupadhyay10 here you go

@Pawanupadhyay10 & @debjani1413 : This issue has already fixed; here.

Okay,  @amino19 should I close this one??

@debjani1413 : No, I will take the charge of this DW! :slightly_smiling_face:


Reimplement the vendors mechanism on top of 0.19.0

Done in https://github.com/AlmaLinux/leapp-repository/pull/114


Can't use it in deno tests

I want to use this in deno tests for easier visibility of long running downloads.
However, because you check this isTTY flag, i can't use it :(
I've disabled this check now locally for me, but it would be nice, If i could simply use your package from upstream.
Is there any reason we might need this isTTY check especially?

@bjesuiter
Landed in v1.2.9

v1.3.0 is published.
changes:

fixed colored string length calculation bug

Deno.consoleSize is now stable

Deno v1.27.0 : Stabilize Deno.consoleSize() API

The Deno.consoleSize API change
- Deno.consoleSize(Deno.stdout.rid).columns;
+ Deno.consoleSize().columns;

Now you can run a wider bar without unstable.
- deno run --unstable ./examples/width.unstable.ts
+ deno run ./examples/width.ts

So mod.unstable.ts and exmaples/width.unstable.ts was removed.
- mod.unstable.ts
- exmaples/width.unstable.ts

Thanks very much for fast reaction and merge!


Update publish-jekyll.md

output_location for Jekyll site should be _site instead of _site_

@georgeOsdDev : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thanks, @georgeOsdDev!
#sign-off


get temperature from flir camera

id like to get the temperature values for A615 camera flir with python.
but i didint found any example. how to do that ?

This is camera specific, however on some cameras it is accessible through the "DeviceTemperature" property.  You can also auto-document your specific camera using the included "document_connected_camera.py" script.


[BUG] <2.5.1-upgrade-2.6.0-pg.sql>

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior

Upgrade script issues
Expected Behavior
ALTER TABLE selector ADD COLUMN match_restful int2 NOT NULL;
COMMENT ON COLUMN "public"."rule"."match_restful" IS 'whether to match restful(0 cache, 1 not cache)';
COMMIT;
Modify to
ALTER TABLE selector ADD COLUMN match_restful int2 NOT NULL;
COMMENT ON COLUMN "public"."selector"."match_restful" IS 'whether to match restful(0 cache, 1 not cache)';
COMMIT;
Steps To Reproduce
No response
Environment
ShenYu version(s):2.6.0

Debug logs
No response
Anything else?
No response

can you fix it？

can you fix it？

of course


Close Video Player functionality Required.

What version of Streaming-Meda-Cordova-Plugin are you using?
2.2.1
What version of Cordova are you using?
9.0.0
What devices are affected?
All
Please describe the issue in detail, with relevant code samples
Need to Close Video Player after certain Time. No Close Player Functionality found.
What did you expect to happen?
There should be a Close Player function to Close Streaming Media Player.
What actually happened?
No Close Player function found.
Ionic:

   Ionic CLI                     : 5.2.1 (C:\Users\ammar\AppData\Roaming\npm\node_modules\ionic)
   Ionic Framework               : @ionic/angular 4.11.2
   @angular-devkit/build-angular : 0.801.3
   @angular-devkit/schematics    : 8.1.3
   @angular/cli                  : 8.1.3
   @ionic/angular-toolkit        : 2.0.0

Cordova:

   Cordova CLI       : 9.0.0<EMAIL_ADDRESS>   Cordova Platforms : android 8.1.0
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.3, (and 6 other plugins)

Utility:

   cordova-res : 0.5.1
   native-run  : 0.2.7

System:

   Android SDK Tools : 26.1.1 (C:\Users\ammar\AppData\Local\Android\Sdk)
   NodeJS            : v10.15.3 (C:\Program Files\nodejs\node.exe)
   npm               : 6.11.3
   OS                : Windows 10

There is no button to close the player.


Small things

Note I've updated the const fixes commit and sneaked in two other commits. This should be ready for review.

Also, I've tested this with a the released 0.52 assets+gamelogic, and it works, but I must say I'm a bit wary as this could be an ABI break.


Media Source path shown on front end when Image field is left blank

Summary
Media Source path being included in front end even when no content is included in the config and shows a blank image.
Step to reproduce
– Create a image config with a media source
– Leave config blank
– add config to template with notempty/not modifier
– View site
Observed behavior
Path to media source folder is still show so Config is seen as populated and shows blank image on front end. <img src="path/to/media/source/" />
Expected behavior
Nothing should be shown on the front end if Config is left blank
Environment
ClientConfig v2.0.0-pl, MODX 2.6.5

Also reported by Sander via support.

HI @Mark-H - we encountered the same issues, could you update us on this PR?
Maybe we could copy the Magento 2 solutions for the same "problem"?

@massimiliano-bizen I believe the PR in #167 should fix this, but haven't had the time to test it yet. If you can try that and report back on the PR if it resolves the problem for you, then that would be very useful.

Fixed in the next release.


Added code for issue #2750

Adding program for Combining_alternate_nodes_of_a_Linked_list
Solved issue #2750

[yes] I've read the contribution guidelines.
[yes] I've checked the issue list before deciding what to submit.
[no] I've edited the README.md and link to my code.

@HarshCasper Sir I have added comments in my code but I don't know what "Make Markdown Updates" mean


Start list of people working single-cell genomics

Addresses #9
Focusing on people doing stats/computational methods development
Very incomplete

Great contribution, Pete.  And the literature support for the editorial frontmatter is welcome.


Crash when generating Schema containing Json fields

Bug description
When running on a schema containing a Json field I get the following error:
Environment variables loaded from .env
Prisma schema loaded from schema.prisma
Error:

  File "pydantic/main.py", line 406, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 1 validation error for Data
dmmf -> datamodel -> models -> 1 -> fields -> 7 -> __root__
  Unknown scalar type: Json (type=value_error)

How to reproduce
prisma generate
Expected behavior
No bug
Prisma information
generator python {
  provider = "prisma-client-py"
  http     = "aiohttp"
}

datasource db {
  provider = "postgresql"
  url      = env("POSTGRES_EXTERNAL_URL")
}

model Label {
  id           String      @id @default(uuid()) @db.Uuid
  createdAt    DateTime    @default(now())
  updatedAt    DateTime    @updatedAt
  x            Float
  y            Float
  height       Float
  width        Float
  geometry     Json
}

Environment & setup

OS: MacOS
Database: Postgresql
Python version: Python 3.8.3
Prisma version:

prisma                : 2.30.0
@prisma/client        : 2.30.2
Current platform      : darwin
Query Engine (Binary) : query-engine 60b19f4a1de4fe95741da371b4c44a92f4d1adcb (at ../../../../../../var/folders/2g/yhlpschd00n71jykx6bgbp1w0000gn/T/prisma/binaries/engines/60b19f4a1de4fe95741da371b4c44a92f4d1adcb/prisma-query-engine-darwin, resolved by PRISMA_QUERY_ENGINE_BINARY)
Migration Engine      : migration-engine-cli 60b19f4a1de4fe95741da371b4c44a92f4d1adcb (at ../../../../../../var/folders/2g/yhlpschd00n71jykx6bgbp1w0000gn/T/prisma/binaries/engines/60b19f4a1de4fe95741da371b4c44a92f4d1adcb/prisma-migration-engine-darwin, resolved by PRISMA_MIGRATION_ENGINE_BINARY)
Introspection Engine  : introspection-core 60b19f4a1de4fe95741da371b4c44a92f4d1adcb (at ../../../../../../var/folders/2g/yhlpschd00n71jykx6bgbp1w0000gn/T/prisma/binaries/engines/60b19f4a1de4fe95741da371b4c44a92f4d1adcb/prisma-introspection-engine-darwin, resolved by PRISMA_INTROSPECTION_ENGINE_BINARY)
Format Binary         : prisma-fmt 60b19f4a1de4fe95741da371b4c44a92f4d1adcb (at ../../../../../../var/folders/2g/yhlpschd00n71jykx6bgbp1w0000gn/T/prisma/binaries/engines/60b19f4a1de4fe95741da371b4c44a92f4d1adcb/prisma-prisma-fmt-darwin, resolved by PRISMA_FMT_BINARY)
Default Engines Hash  : 60b19f4a1de4fe95741da371b4c44a92f4d1adcb
Studio                : 0.422.0

Thanks for the report, the Json type is not currently supported (#29).
I didn't realise that error message is not clear at all, I'll update it.
I'll also look into ignoring fields that we don't support yet and displaying a warning.

@crubier I've just added support for the Json type, you can try it out by installing the client from github.
pip install -U git+https://github.com/RobertCraigie/prisma-client-py#egg=prisma-client[aiohttp]

Please let me know if you have any more issues, thanks.


Add Directions Button to the TweetList Fragment

From our functional requirements:

The user must be able to view directions from their current location to nodes displayed on a map by being redirected to the Google Maps app.

Is it alright if I take over this task? I'm currently working in the TwitterListFragment.

@zandermax Sure!


Bibliography not IUBH standard

Hello altogether,
is there a possibility to adapt the citation style to the IUBH standard? I kind of wondered if someone already adapted a .bst file to use it with any kind of thesis of the IUBH.

Hello @client-side96,
well this was discussed but there are field specific practices that keep byting and the IU format is said to be APA but is not completely APA. APA is known to be a monster and I recommend no-one to try implementing such a bst.
We're opened to pull requests though!
paul

HI @polx . Yeah I noted that the APA bst is quite complex. There is though a bst generator that guides you step by step through the creation process and gives you a starting point for customising it to the IU format. For my last project report I did this, but faced some issues regarding the capitalisation of the source title names and spaces between the words.
I will try to go further and fix them and create a PR.
For reference I will attach the bst and a screenshot of the current state. If someone has any recommendations I would appreciate them.

iubh-example.bst.zip

I think apacite might be a good start?
Your example is quite helpful already.
I'd incorporate this as an alternative until we're sure it can work for everyone.

I created a PR and fixed all the issues I had previously with the bst settings. I used the IU thesis book as the reference of the citation style and created some examples for a book citation, collection and article.

Thanks. All done.


Add device_server_path and port to verbose debug level

[X] I have checked that a similar feature request does not already exist.

Is your feature request related to a problem? Please describe.
I want to know where the 'scrcpy' pushed the 'scrcpy-server.jar' and what 'ports' it's using.
I have checked path "/data/local/tmp/scrcpy-server.jar" and even find / -name "scrcpy*" and ss -l with root user, but got nothing. ( the former path comes from github.com/Genymobile/scrcpy/blob/625934fb1b078a5d66bc4864e8082840d57d4557/app/src/server.c#L21)
Describe the solution you'd like
print device_server_path and port when scrcpy.exe start with -V debug argument
Describe alternatives you've considered
or add it to readme.md?
Additional context
N/A

The path is correct, however, the server deletes itself on start, unless --no-cleanup is specified.
https://github.com/Genymobile/scrcpy/blob/9196dc156376760eb637024d5c0448ceeaa2a8ff/server/src/main/java/com/genymobile/scrcpy/CleanUp.java#L142-L148
https://github.com/Genymobile/scrcpy/blob/744312ec64d2552271fd2918abce2e14b6137843/app/src/cli.c#L388-L393

Ok.
But it still can't find the port scrcpy is using for the port forward.
And those mostly exist only in the code, what about adding them to debug level log?

    -p, --port=port[:port]
        Set the TCP port (range) used by the client to listen.
        Default is 27183:27199.

Ok. didn't find that via search.
This issue could probably be closed since seems those in the help msg.


Iconize causes abnormal display of inline code

When I turn on the option "Visibility of icons - Toggle icons while editing notes"（I don‘t know the purpose of this option），the character * in the inline-code will become null（N-U-L-L，4 characters），and when I turn of this option，the problem disappears.
Obsidian Version: 1.5.12

this might be related to #438.


mlnet auto-train gets to 100% accuracy

After trying out this tutorial using ML.NET CLI, it appears that my model gets to 100% accuracy after 1 iteration:
# MacOS 10.14.6

$ mlnet --version
0.15.28007.4 @BuiltBy: dlab14-DDVSOWINAGE054 @Branch: features/automl @SrcCode: https://github.com/dotnet/machinelearning/tree/dc9a9b7ffcaf636541fe997c59f3bfdda57501e5+dc9a9b7ffcaf636541fe997c59f3bfdda57501e5

$ mlnet auto-train \
    --task "multiclass-classification" \
    --dataset "./Datasets/RestaurantScores.tsv" \
    --label-column-name "RiskCategory" \
    --max-exploration-time 180 \
    --output-path "./Out"

Contents of debug_log.txt:
Inferring Columns ...
Creating Data loader ...
Loading data ...
Exploring multiple ML algorithms and settings to find you the best model for ML task: multiclass-classification
For further learning check: https://aka.ms/mlnet-cli
|     Trainer                              MicroAccuracy  MacroAccuracy  Duration #Iteration                     |
[Source=AutoML, Kind=Trace] Channel started
[Source=AutoML, Kind=Trace] Evaluating pipeline xf=ValueToKeyMapping{ col=RiskCategory:RiskCategory} xf=OneHotEncoding{ col=InspectionType:InspectionType col=ViolationDescription:ViolationDescription} xf=ColumnConcatenating{ col=Features:InspectionType,ViolationDescription} xf=Normalizing{ col=Features:Features} tr=AveragedPerceptronOva{} xf=KeyToValueMapping{ col=PredictedLabel:PredictedLabel} cache=+
[Source=AutoML, Kind=Trace] 1	1	00:00:02.0077380	xf=ValueToKeyMapping{ col=RiskCategory:RiskCategory} xf=OneHotEncoding{ col=InspectionType:InspectionType col=ViolationDescription:ViolationDescription} xf=ColumnConcatenating{ col=Features:InspectionType,ViolationDescription} xf=Normalizing{ col=Features:Features} tr=AveragedPerceptronOva{} xf=KeyToValueMapping{ col=PredictedLabel:PredictedLabel} cache=+
|1    AveragedPerceptronOva                       1.0000         1.0000       2.0          0                     |
Retrieving best pipeline ...

===============================================Experiment Results=================================================
------------------------------------------------------------------------------------------------------------------
|                                                     Summary                                                    |
------------------------------------------------------------------------------------------------------------------
|ML Task: multiclass-classification                                                                              |
|Dataset: RestaurantScores.tsv                                                                                |
|Label : RiskCategory                                                                                |
|Total experiment time : 180.76 Secs                                                                             |
|Total number of models explored: 1                                                                              |
------------------------------------------------------------------------------------------------------------------
|                                              Top 1 models explored                                             |
------------------------------------------------------------------------------------------------------------------
|     Trainer                              MicroAccuracy  MacroAccuracy  Duration #Iteration                     |
|1    AveragedPerceptronOva                       1.0000         1.0000       2.0          1                     |
------------------------------------------------------------------------------------------------------------------
Generated trained model for consumption: /.../Out/SampleMulticlassClassification/SampleMulticlassClassification.Model/MLModel.zip
Generated C# code for model consumption: /.../Out/SampleMulticlassClassification/SampleMulticlassClassification.ConsoleApp
Check out log file for more information: /.../Out/SampleMulticlassClassification/logs/debug_log.txt

Results: ain't no really 100%, I'm afraid.
Hi => High Risk [0.3133379, 0.3180585, 0.3686036]
Nothing to do here => High Risk [0.3133379, 0.3180585, 0.3686036]
Rats in the cold chambers ! => High Risk [0.3133379, 0.3180585, 0.3686036]
Dead ferret in the fridge => High Risk [0.3133379, 0.3180585, 0.3686036]
Customer sneezing on the waiter => High Risk [0.3133379, 0.3180585, 0.3686036]
Unapprosed equipment => High Risk [0.3133379, 0.3180585, 0.3686036]
Unapproved equipment => High Risk [0.3133379, 0.3180585, 0.3686036]

Did I miss something ?

Document details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: f7fff31d-9b11-e1f1-f4c1-d798a7d9b564
Version Independent ID: 8c94de21-2cc2-fb08-314d-6a62af1f0421
Content: Tutorial: Classify health violations with Model Builder - ML.NET
Content Source: docs/machine-learning/tutorials/health-violation-classification-model-builder.md
Product: dotnet-ml
GitHub Login: @luisquintanilla
Microsoft Alias: luquinta

Hi @martin-plessy
Thank you for your question. While it's certainly possible to reach 100% on the first try, and there are various factors that may contribute to this, it does not imply that the model will be correct 100% of the time and in fact the 100% may be misleading.
@justinormont thoughts?

Generally if you're getting 100% accuracy, you're either leaking, have too small of dataset to usefully measure the metrics, or the task is trivial.
In this case the dataset itself is leaking information or is trivial, depending on how you want to look at it. It has duplicates rows. The violation_description column perfectly predicts the label, risk_category, as it's the risk category of the given violation.
There are 53,974 rows but only 363 are unique:
$ wc -l /RestaurantScores.tsv
   53974
$ sort RestaurantScores.tsv | uniq | wc -l
     363

See more information about leakage:
https://en.wikipedia.org/wiki/Leakage_(machine_learning)
Next steps
I would recommend replacing the dataset. Perhaps with the original dataset (with all columns).
The dataset seems be SF Restaurant Scores (download). In that case, I would pose the problem either as regression or multi-class classification.
Problem styles:

Regression -- predict inspection_score (recommended)
Multiclass classification -- predict violation_description while ignoring risk_category (or the other way around)

For all tasks, I would split the dataset in to train/validate/test based on date (inspection_date column). With the oldest data in the train split, newer in validate, and most recent in test.
Why split on time?
This is to avoid leaking data between the dataset splits as this dataset is time-dependent, as the newer information better predicts the other newer rows than does the older rows. For example the inspection_score of a restaurant in June is likely closer to the July score than the January score.


Is creating private endpoint disabling the public one?

According to my tests - when I create one or more private endpoints the public endpoint doesn't work anymore. Could you confirm that? Somehow I miss this information this page.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 66c18eb5-5daa-9b36-36e3-fac79fce74ae
Version Independent ID: 130272b7-f8bf-eec1-555a-4c48f70be358
Content: Using private endpoints for Azure App Configuration
Content Source: articles/azure-app-configuration/concept-private-endpoint.md
Service: azure-app-configuration
GitHub Login: @lisaguthrie
Microsoft Alias: lcozzens

@marcin-vt , Thanks for brining this to our attention. We will investigate it further and update you shortly.

@marcin-vt that is correct. We are looking to introduce an option that will allow you to re-enable the public endpoint, but it is not available yet. I will update the article to make this clear. Thank you for the feedback!

@lisaguthrie - Thank you for providing your insights and updating the doc.
@marcin-vt - Thanks again for bringing this to our attention. We have updated the Doc and We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Update Credits.lua

I approve these changes.

I'm not sure why a 1st time contributor is litterally adding 2 names to the credits as their first commit but here we go.

I'm not sure why a 1st time contributor is litterally adding 2 names to the credits as their first commit but here we go.

When the credits tabs were made 2 additions and 1 modification to the credits list were missing. Reference to this commit.

wait whats the point of this pull request

wait whats the point of this pull request
Some changes to the credits were apparently lost when the tabbed credit list commit was merged.


Web - Workspaces - Name highlights on select member on invite page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

go to Settings > Workspaces >members
click on invite button
select any member

Expected Result:
name should be highlighted even if member is not selected
Actual Result:
name highlights on select member
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number:  v1.3.57-2
Reproducible in staging?: Y
Reproducible in production?: N
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/115492554/ff54a790-6075-4984-962d-56301c5ac8ba
https://github.com/Expensify/App/assets/115492554/828d045d-4a9f-414a-8a54-e909cb054540
Expensify/Expensify Issue URL:
Issue reported by: @gadhiyamanan
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1692777018489079
View all open jobs on GitHub

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

I think this behaviour is intended, happening same on prod too.

Behavior seems to be the same on staging and prod, just with a slightly different UI - not a blocker. Not even sure if this is really a bug. cc: @maddylewis to confirm
https://github.com/Expensify/App/assets/16747822/d5312a16-0a6b-41e5-9c13-12ab587af5ef

@NikkiWines I think this is referring to the the email (login) not being bold anymore for elements that are unselected

Oh hmm, yeah I definitely took "highlight" to mean that the whole row color was changed 🤔
@shawnborton can you confirm if the new UI styles are expected here?

OIC - the top line is no longer bolded. ok ya, let's see what Shawny says.

It is likely that this regression was caused by this big PR: https://github.com/Expensify/App/pull/22622 which caused a few other regressions. It changed stuff in the workspace member page.

thanks for clarifying @gadhiyamanan - i will process the reporting bonus to you for this particular issue.

offer sent

@maddylewis offer accepted, thanks!

paid!


feat: Support ERC6492 smart account signatures

Problem solved
Short description of the bug fixed or feature added

PR-Codex overview
This PR focuses on adding support for ERC6492 in smart account signatures, enhancing the signature verification process, and introducing new tests for signing messages and typed data in the thirdweb package.
Detailed summary

Added support for ERC6492 in smart account signature verification.
Updated error handling in verify-hash.ts to log errors.
Modified deployAndSignMessage and deployAndSignTypedData to use ERC6492 signatures.
Introduced new tests for signing messages and typed data in smart-wallet-integration-v07.test.ts and smart-wallet-integration.test.ts.
Removed checkContractWalletSignature references from tests.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

#5641  👈 (View in Graphite)
main

This stack of pull requests is managed by Graphite. Learn more about stacking.


Renaming Bus Factor

I know that renaming what is probably our most widely used metric is going to be painful, but I think it's time to rename Bus Factor to something else.
The number of people I've had express pretty severe dislike of the name Bus Factor is quite high, and I often try to avoid calling it Bus Factor.
I often call it "Lottery Factor" because it's easy to understand. How likely is your project to survive if someone suddenly one the lottery, retired on a beach, and never looked at your project again.
Pony factor is more widely used, because it's been adopted by the Apache Software Foundation, but I find that it's harder for people to understand outside of the ASF. There isn't an easy narrative around it like what I have above for Lottery Factor.
I'd be really curious about the opinions from folks involved in inclusive naming initiatives and whether they've seen a commonly suggested substitute for Bus Factor.
I'm also curious about what the academic folks have seen. Is there a particular term that is more widely used in Academia / research?
cc-ing a few folks that I think would be interested in this discussion: @GeorgLink @germonprez @sgoggins @ElizabethN @klumb @dicortazar
I welcome any Chaotics to jump in with opinions.

In my experience, academia (at least the part that's aware of open source software) uses bus factor. In academia, most people who don't know it, after having it explained, generally either get it and laugh, or still don't understand it (and don't really understand open source either).
I know I've also heard at least one other term that was more pleasant and still worked, but I can't quite remember it for the minute. (I've also heard truck factor, but I guess that's not really much of an improvement.)

If we're to rename the metric, now is the time before we standardize
anything with a standards body.
Bus Factor and Lottery Factor both describe an external event that would
impact directly a project member and thus the project. There are a host of
other events with the same potential impact: becoming a parent, getting
laid off, moving to a new city, having to take care of family members,
meeting a significant other, ... - the metric could be named after any of
these events and still always require explanation.
Maybe we can choose a name that is directly descriptive of the problem or
threat: concentration of knowledge, distribution of effort, ...

Maybe we can choose a name that is directly descriptive of the problem or threat: concentration of knowledge, distribution of effort, ...

When I talk about this issue, I generally frame it as a discussion of "Contributor Sustainability", but it's probably only one of a number of things that impact contributor sustainability.
I still think the metric should be named something that's already established within our community and the literature, which might make Pony Factor a better choice. I like Lottery Factor, but it's definitely not as well known.

There are two things I think don't work well about "Bus Factor"

Not everyone likes or intuitively understands the purpose of "bus" in the phrase without explanation
"Factor" feels like a word that works, but isn't as intuitive as "count".

I find skeptical looks and confusion when I'm explaining that a "bus factor" of a project is 3, and that's a bad thing. I feel that if we had some language that better indicated what the bus factor is, intuitively, that would be more persuasive and useful. I know "bus" is what we're moving away from, but... When I think of projects making progress, I usually think of forms of transportation. Trains, planes, boats, cars, etc. They move many people around and need critical pieces to keep them moving.
We could borrow some of these ideas, and swap "factor" for "count" like:
Captain Count
Pilot Count
Engine Count
Turbine Count
Tether Count
Anchor Count
Driver Count
Wing Count (gets a little dark, if you think of it)
Battery Count

I'm also happy to turn away from "bus" like things, maybe options from nature without conflicting with git?
Root Count
Host Count
Monarch Count

That's if we're willing to get creative though. I think if we plan on changing the name to something, Bus Factor is certainly the most well known -- so we should update it to something more intuitive and descriptive. Out of the options I gave, I like Host, Pilot, Captain, and Monarch. Excited to have a discussion about it.
The confusing wordplay also exists for "elephant factor" -- but that should probably be a separate discussion :)

I would vote against Pony Factor, as it's based on an in-joke that is just confusing to people who aren't in the group
(because ASF is full of ponies, or people who think they are ponies)

@justaugustus I'm curious if the Inclusive Naming Initiative have had any discussions about this or related terminology?

I usually use lottery as well, pony doesn't make a lot of sense to me. On count vs factor, what about something like frequent contributors count, which parallels with 'inactive contributors' and 'new contributors'. Bus factor assumes something about the impact of these specific people leaving which might or might not be true depending on additional context. Just calling it a count of people who undertake a certain level of activity leaves it more neutral and more clearly as just part of the fuller picture.

I usually use lottery factor as well

I like to use names/terms that are easy to read and do not have implied meaning or metaphor. For something like this in other kinds of projects or organizations, it is sometimes called 'key person risk' (or key people/member risk). I'll toss 'key maintainer risk' in here for consideration, since when I read things like 'lottery factor' or 'pony factor' I have to go look up what that means in this context (and it may be even harder for those who don't have English as a first language); 'key maintainer risk' seems closer to describing exactly what is being measured.

I would love to not use "bus factor" and usually use "lottery factor" instead. And I always explain in a few words what that means, as I'd explain the naming for any of our metrics. In my opinion, nothing is intuitive to everyone. Even something like "event location inclusivity" requires a few words of explanation by what we mean by that.

I understand the need for consistency, but if we have the opportunity to make open source more inclusive overall, I think we should do that.
I agree with @GeorgLink in that we are focusing on the issue that is causing risk makes a lot of sense. I think it's also about access, not just knowledge. Who has the keys to the castle, so to speak.
I like @GaryPWhite's suggestion to use "Count" instead of Factor.
I agree with @danielskatz in that the use of "pony" is confusing and gate-keepy (I'd actually never heard that).
I agree with @starsplatter in that simply focusing on a count of people who undertake a certain level of activity is neutral
I like @PaulaPaul's suggestion of "key person" or "key maintainer" because we're also talking about the folks that have access to all the levels of the project.

What about "Key Maintainer Count" or "Core Maintainer Count"?

@ElizabethN I would be concerned with using the term "maintainer" as for many projects that has a very specific meaning. Maybe "Key Contributor Count"

KCC has a nice ring to it, and it's definitely more clear than an analogy.

Oooh, I like Key Contributor Count.

For some reason, I thought we had already addressed this one. Thanks for bringing this up @geekygirldawn. The name is definitely problematic and agree pony factor isn't good option either. We could use them as key words though link them to the new name.
I like Key Contributor Count... Or Key Contributor Risk.

...or Core Contributor Risk.
We have defined Occasional Contributors ( which was previously problematic as "Drive-by Contributors").
However, we have not defined key or core contributors. Academic literature usually uses core but key may be more descriptive of contribution importance.

I like Risk better than Count, as it has the same sense (of urgency/danger) that Bus Factor has. It also feels less like something people would try to game

At risk of sounding like a typical tech exec.... Wouldn't "gaming" this metric be a good thing? More people contributing to oss at a level to constitute bus factor seems likea. good thing...
I'll put in that I think "risk" being a number runs the same risk (ha) as using a word like "factor". Without explanation, "my key contributor risk is 3" is a nonsensical phrase.

I like Key Contributor Count.
My concern with "key" is that it adds a value judgement. Also following
Elizabeth's comment: not everyone needs to have a key to the project to be
included.
Returning to the definition of the metric, we're counting the smallest
number of contributors that made 50% of all contributions during the
analysis time window.
How about: Majority Contributor Count
"Majority" because people know that concept from voting and other contexts.
We could also emphasized that a larger count is good and go with something
like:

Majority Contributor Spread
Majority Contributor Concentration

In truth, without explanation, any name we choose is likely to be nonsensical. Some are more descriptive than others though. The metric should describe what we are trying to measure - which is the risk associated with key contributors abandoning a project (i think). I wouldn't get hung up on a number.

@klumb I get ya. The measurement is absolutely indicating the risk. I would agree more with "risk" if the metric itself wasn't a count/number. It's descriptive of what we're measuring to name the measurement. If we're renaming it anyways, why be vague? We could keep metaphorical names like "pilot risk" etc. but that hardly solves the #2 problem I mentioned above, where I regularly have to explain what the metric actually is for people to buy into why it's useful. Just my experience, though.
I like @GeorgLink 's observation. Majority Contributor Count is ultra-succinct and descriptive. I didn't even think about how "key" could mean like "having a key". Majority is much more specific.

Also, I think value judgement is going to necessary for this metric. What the value is the question? Is it related to 'ownership/authorship of a percentage of the codebase?

I really like majority, I think it removes the value judgement of 'key'. This count in the chaoss metric reads to me as just a naive count of how many contributions people make as a percent of the total number of contributions, it says nothing about the value of those contributions in terms of code quantity or quality, which I think argues for keeping the metric as more of a single neutral data point. The metric says it wants to answer "how many contributors can we lose before a project stalls?" but that seems packed with assumptions to me.

Sorry, but I have no idea what majority means in this context. And given that not all open source contributions are captured in a repository, how would it be measured?

The metric says it wants to answer "how many contributors can we lose before a project stalls?" but that seems packed with assumptions to me.

It totally is! That's part of the magic IMO 😄 There's some stake-in-grounding happening here. What kind of assumptions need to get made to actually measure something, ya kno?

And given that not all open source contributions are captured in a repository, how would it be measured?

While it's perfectly possible this isn't a perfectly accurate representation, I believe that the metric and it's implementations are usually disjointed. I believe most of the time, contributions are "counted" here as "commits" or "pull request open/close" or "issue open/close". That's just a function of using the GH API / history to make measurements... More tools could definitely get built to measure more though 😃

Sorry, but I have no idea what majority means in this context.

"Majority" here meaning who is making the majority of contributors. Majority Contributor Count = count of contributors who make the majority of contributions in the project for some time window.

I like what the bus factor means, in that - a project is one disaster away from the project being completely abandoned or maintained.   Some maintainers might keep maintaining if they win the lottery :)
I think the seriousness should be retained because that seriousness is what gets people (leaders, people with influence) to act (majority contributor count IMHO, not so much) _, but agree bus factor is morbid.    Propose then something more like 'disaster factor'

Adoption may be better for Disaster Factor because it is close enough to the previous problematic name. It also signals the risk part. I think that could work.

Disaster Factor = the risk associated with a count of contributors who authored a majority of contributions in the project for some time window abandoning a project. It is probably a good idea to review the description and objective of this metric as well.

This is such an interesting discussion!
I understand the concerns with the use of terms like 'key' (that would require definition), and the discussion of what we are really trying to measure or gauge here. There is an element of 'risk' (is this project at risk if any one person decides to stop contributing?), and an element of project 'resilience' and 'sustainability' (could the project survive and thrive without a specific, small, number of engaged contributors?).
At the risk of making this more complicated, is there a rubric that is used to come up with this number, so the name of the metric might be less of a concern (it's explanation would be the rubric)?  I like the words 'adoption', 'risk', 'sustainability', and 'resilience' because they are less problematic (for me) than 'bus' or 'disaster' -

We could use the GitHub poll capability in the Discussions area to create a poll from the names that have been suggested here and solicit votes from the community. Let me know if you'd like me to put that into a Discussion thread (I'm still relatively new to this community - sorry if that's been rehashed or if there is a different norm for this sort of thing!)

There may be some value in exploring other concepts related to the Pareto Principle (80/20 rule) as well.

@PaulaPaul I think a poll with the ability to select multiple options would be great! I am a bit on the same boat as you as I am new to this working group so not sure if there are any specific procedures in places

I think a poll to gather information from our group is good, but we can't really decide on what the community will accept by means of a poll of us.

Hello there! A bit late here, but even this might be an unfortunate name, this seems to be used in many places, even in Wikipedia.
According to Wikipedia, it seems there's an existing and older concept coming from the insurance world called Key Person Risk. This is indeed a term similar to other proposals here mentioned.
Even in Google Scholar this seems to be a term used once and again.
My proposal would be to either keep using this term, or if this is updated, we should identify this with this more usual way. As an example,  we could say: Key Person Risk (aka bus factor).
Some thoughts on this :).

Crediting some recent work of @justingosses  I'll also nominate 'Nebraska Factor' , which also shows that with one false move ...
It also depends how granular we believe this metric to be - for me sustainability and resilience are more like metric-models, which would contain the bus factor among others, not itself the measure.

I like some of some the other names mentioned as well, but I do tend to agree with Daniel here. My favorite name is a variation on that - Key Contributor Risk.

We could do a ranking poll in our community for the names mentioned in this discussion and then discuss the top three in the next metrics meeting.

@emmairwin that's a great point! But this is perhaps too US centric...we can always talk about the Antartica factor XD.
Anyway, my understanding (without having the proper definitions in front of me) is that the Nebraska factor focuses more on a tiny but important piece in the whole SBoM ecosystem where there's a risk of not being aware of the use of such pieces of code and its risks, while the bus factor is specific of one project. Perhaps we could say the Nebraska factor is a meta-bus factor.

Sure.  I refer to the xkcd comic
Naming is hard  :)
On Fri., Mar. 29, 2024, 1:37 p.m. Daniel Izquierdo Cortazar, <
@.***> wrote:

@emmairwin https://github.com/emmairwin that's a great point! But this
is perhaps too US centric...we can always talk about the Antartica factor
XD.
Anyway, my understanding (without having the proper definitions in front
of me) is that the Nebraska factor focuses more on a tiny but important
piece in the whole SBoM ecosystem where there's a risk of not being aware
of the use of such pieces of code and its risks, while the bus factor is
specific of one project. Perhaps we could say the Nebraska factor is a
meta-bus factor.
—
Reply to this email directly, view it on GitHub
https://github.com/chaoss/community/issues/632#issuecomment-2027713852
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAOZST7VH4ZN6KPNIHG2ALY2XGJDBFKMF2HI4TJMJ2XIZLTSOBKK5TBNR2WLJDUOJ2WLJDOMFWWLO3UNBZGKYLEL5YGC4TUNFRWS4DBNZ2F6YLDORUXM2LUPGBKK5TBNR2WLJDUOJ2WLJDOMFWWLLTXMF2GG2C7MFRXI2LWNF2HTAVFOZQWY5LFUVUXG43VMWSG4YLNMWVXI2DSMVQWIX3UPFYGLLDTOVRGUZLDORPXI6LQMWWES43TOVSUG33NNVSW45FGORXXA2LDOOJIFJDUPFYGLKTSMVYG643JORXXE6NFOZQWY5LFVEYTANJWHE2TOMBZQKSHI6LQMWSWS43TOVS2K5TBNR2WLKRSGIYTEOJVHA3TGM5HORZGSZ3HMVZKMY3SMVQXIZI
.
You are receiving this email because you were mentioned.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub
.

Ha! A joke on the joke ;).
Let me rephrase myself, I've seen this used in SBoM contexts :). And yep xkcd is great!

I'll just second the previous comments that the "key person risk" phrasing seem an immediately understandable replacement for bus factor, at least to me.
I would also suggest it might be helpful when renaming to also call out that there's some common variations on this idea that are related but different metrics. Elephant factor is one I've heard confused before. There's also the DDS (Distributed Development Score). It is most similar to BUS factor in that it is trying to measure something that correlates to the same negative event that people want to avoid but is calculated slightly differently.
The negative event people are trying to predict a chance of is development suddenly stopping. Mechanisms for that stopping vary a bit. Methods of calculating metrics that approximate mechanisms that lead to the negative event vary even more.
I will also note that in practice, I've sometimes also looked for # of maintainers (or approvers of PRs) in past year. Any bus-factor-ish metric used by itself will say there's no risk of abandonment of a project that's only had PRs approved by a single person in the past 3 years if 80% of the commits were developed equally by 10 people in 2016 who haven't touched the project in 5 years.

I have also been using the Lottery Factor, but I have to say I really like "Core Contributor Factor". The main idea to communicate is that a project with a single point of failure is risky to adopt and so if there are already several projects that depend on said project, the single point of failure must be addressed.
After brainstorming with our AI friends propose SPOC
Single
Point
Of
Critical Failure

+1 for Lottery Factor.
Compared with Bus Facor, Lottery Factor is much easier to understand and no offense to anyone.

In an attempt to summarize this very long discussion, here are the options that seem to be getting the most traction:

Lottery Factor
Disaster Factor
[Core / Key] [Contributor / Person] Count
[Core / Key] [Contributor / Person] Risk
SPOC (Single Point Of Critical Failure)

If this seems reasonable, I would like to create a poll to gauge reactions with the caveat that the CHAOSS project operates by consensus, so this poll is limited to understanding what people think, and the one with the most votes will not necessarily be the "winner".
Notes:

I'm using contributor / person rather than maintainer / developer because this is a decision we've made when defining other metrics to make sure that we don't discount the work of other types of contributors.
I've left out ones that created confusion and required extra explanation (e.g., majority, pony)
Anything in [Brackets] contains similar words that we can decide on later after more research.

OK, we now have a poll based on the above options. Please vote here: https://github.com/chaoss/community/discussions/634

Hey folks, sorry I am late to the party. Just wanted to throw in one more term that I have heard but didn't see mentioned here - succession plan, or succession strategy. I offer only for consideration, not because I think the poll needs to be changed - I like "lottery factor".

succession plan, or succession strategy

@Jefro - this is an excellent point. I don't see it as part of the metric itself, but it's an important part of what you should be doing as an outcome or action as a result of what you learn from measuring this. I've just added a paragraph about succession planning to the a Practitioner Guide for Contributor Sustainability that I've been working on. It's a first draft that's ready for feedback, so if you have time, feel free to have a look and leave comments / suggestions :)

I do not like the term Lottery Factory. It reminds me strongly of problem gambling, which can be diagnosed as a pathological addiction disorder, and which is much more prevalent in poorer communities. I think any gains we have by getting rid of the term bus factor are lost when moving to Lottery factor.
Disaster Factor also ignores the the fact that a contributor may leave a project for good reasons, personally for themselves and for project as a whole (which may have reached a point in its lifecycle where sunsetting is best for everyone).
SPOC makes me think of Star Trek, which is fine, but it'll be confusing when talking to others. 🖖

I was a big fan of Lottery Factor, but with the comment from @RichardLitt, now I'm not so sure.
Another option that @decause-gov proposed on the poll itself is "Nebraska Factor", which I think is something else to consider:

After visiting OSSNA this year, "Nebraska Factor" a la XKCD (https://xkcd.com/2347/) is a name that has been bigtime popularized in the Supply Chain world. Perhaps this could be a decent candidate, if the namespace is not already claimed elsewhere in CHAOSS?

I'll vote against Nebraska Factor, as in inside joke that's likely off-putting to those not in on it

Agree. Nebraska factor seems off-putting. When I used lottery factor it was largely in response to the negativity of bus factor, not because I particularly liked it. I ended up voting for the
[Core / Key] [Contributor / Person] Risk
which I felt did a better job describing what was actually being talked about.

How about: Critical contributor index?

Keep in mind, if we use key/core/critical contributor, we will also need to address this in our ongoing discussions about the boundaries between - core/regular contributors, occasional contributors, conversion rate, and 2nd contributors. What is a key/core/critical contributor? I think Bus Factor addresses the risk associated with 'people' leaving but I don't believe it defines who they are or why they are important.

I'm thinking maybe we keep it simple. We don't need to make the judgement about whether someone is "core", "key", or "critical" in this metric, so maybe just "Contributor Risk"?

I like "The Lottery Bus Factory". 🚌 💰
The Lottery Factor works as well.

Hey All, just wanted to pop in here to let you all know that I came across an 'industry standard' here in Australia wherein Dr. Jennifer Beckett has a measure for the bus factor but she actually calls it the 'moses effect.'
She firmly believes that Bus factor is a MUCH better term, but we are probably going to be using bus factor as a primary measurement for internet toxicity because it specifically acts to measure the Bridging Capital of individual influence from inside of a community, to the outside public. Reversing the metric also allows us to gauge the level of reputation and riding capital that someone will have coming INTO the community.
If you'd like I can have a longer conversation with her about this and it may give us a new insight into the way that Bus Factor impacts the socio-cultural stability of online communities. Worth a look I think!

In a seperate comment on this, I also wonder if we should be basing the name of this off of what is actually happening when you graph the bus factor on a network diagram - not just on contributors to an opensource project, but actually place it within the context of social capital and currency theories.
In reality the Bus factor occurs when a 'node' (member in a community) has garnered a lot of linking capital (they are connected to a lot of people) and Bonding capital (they have close ties and have grown in reputation so their voice is recognized), shows a potential threat or likelihood of leaving a community--and their linked members are only connected to them in the project, so those nodes are at risk of disappearing from the community network diagram.
In other words, that individual has garnered the linking capital and bonding capital to prop up a community BUT if they were to leave the community would be at risk. Within the context of an opensource project that is the likelihood that their leaving would put the project at risk but even for an entertainment community this can be measured in the amount of engagements that a member of import has caused, in comparison to the amount that surrounding nodes have caused.
We also see this example in real life with malls (🤮) American malls were architected such that there was always a food court in the middle for people to connect with as a 3rd space. Then at either end of a mall (usually a line in 2 or 3 directions) there would be an 'anchor store' that people would go to for low-dollar, but high-value items such as grocery, or mig-market stores. The smaller novelty stores and specialty services such as asian-import stores, mini-gold outlets, video game labs, and whatnot relied on the big-box anchors to force people to go between the communal space, and the larger store. Larger stores relied on the people being there for those specific interests to keep them in the mall for long periods of time.
What caused malls to die, and also what causes bigger contributors who commit frequently to leave, is usually that the perceived reward, becomes too much for the work that they have to commit. (I've talked about the burden of contribution in CHAOSS meetings before).
So there could be something involved in the generalized issues for bus factor that we could use to rename it. This might be 'lossed link likelihood' or 'at-risk supporter' or something along those lines?

In the metrics meeting, we discussed renaming this to "Contributor Risk" to keep it simple and descriptive, similar to our other metrics names.

This might be the least worst option 😄

Another idea: kujenga factor. This is the Swahili word meaning "to build", and it is the basis for the popular game Jenga™. As you may not have played it, this game involves taking wooden blocks out of a tower, until the tower eventually falls down, at which point the person who removed the last block loses.
I believe that Jenga is trademarked. Kujenga, however, isn't. It's relatively easy to explain.
Also, it looks like:

Are we thinking about projects or people?

Or ecosystems.

Continuing to iterate on the name:

In the Community call, the concern was that "Contributor Risk" is a bit too broad and “Contributor Abandonment Risk” was proposed as an alternative.
In the Scientific WG, Bill Hoffman suggested that it’s not always abandonment and that “Contributor Departure Risk” might be better. I think I prefer this option.

@RichardLitt and @danielskatz - you can learn more about how we've defined it here: https://chaoss.community/kb/metric-bus-factor/ - it's focused on the question: How high is the risk to a project should the most active people leave? So far, we aren't talking about re-defining it, just renaming what we already have defined.

@alice-sowerby mentioned "Contributor Absence Risk" - CAR factor :) I'm a fan of it, not solely for the irony.

I've recently been learning about "strategic ambiguity," and think "Contributor Risk" is still better than being overly specific :)

Maybe we could define risk as 1/n, where n is the number of key/essential/important contributors, so that 1 would be the highest risk, 0.5 would be better, 0.33 would be better, 0.25 ...

As a reminder, we're trying to avoid redefining the metric, since it's already very widely used. Renaming it is going to be disruptive enough :)
Going back to Gary's point, the suggestion was to use “count” instead of risk, since the word “risk” at the end tends to imply that lower is better and in bus factor is larger is better.  Or maybe we simplify it to not use risk OR count? I think this might be more consistent with how we've historically named our metrics:

Contributor Abandonment
Contributor Departure
Contributor Absence

The plan is to make a final decision in the next Metrics Development meeting on Thursday, June 6. See https://chaoss.community/chaoss-calendar/ for your time zone and meeting logistics.

What about Contributor Factor then? Or Contributor ... Factor?

I appreciate the sentiment that goes into the new suggestions. I'll reflect
on these.
When I read:

Contributor Abandonment
Contributor Departure
Contributor Absence

I expect a metric by these names counts how many contributors have
abandoned, departed, or become absent. It's backwards looking.
The current Bus Factor is defined as the count of contributors that are
currently doing 50% of the work.
Adding "Risk" modifies the meaning to be forward looking but then we have
the unintuitive  discrepancy with interpreting a high number as low risk.
... I am thinking back to other names we discussed. The only one that I
remember without looking into the history:

Key Contributor Count

Maybe the test "what metric name do you remember" also tests for "what name
is intuitive". My answer may not be your answer and what is intuitive to me
may not be intuitive for others.
One of the reasons the "Bus Factor" may have been successful was the name's
ability to create an image in people's minds that stuck.

I worry that we are becoming overly concerned with finding a perfect name, focusing on too much on minor details, and maybe starting to go in circles.
I think we can agree that a perfect name hasn't been proposed and we are unlikely to find it. That said, I believe there are at least 3 or 4 names in the discussion that are acceptable and descriptive of what we are trying to measure.
In regards to using risk in the name. Risk is descriptive of what we are trying to measure and yes, we want risk to be low. I don't think it is too difficult to understand that a high number of something can relate to lower risk.

OK, in the Metrics Development WG Meeting, we decided on ... 🥁
🎉 Contributor Absence Factor 🎉

Thank you so much to everyone for such a lively discussion over the past couple of months!

@geekygirldawn are we good to close this issue since we have a resolution? :pray:

We're still working on implementing this across our various repos / website, but the renaming is done, so let's close this issue 🎉


Session Provider: Connection has been closed by peer [xFFFFFFFF].

další kandidát na retry
(2) [2019-03-20 15:35:00] CRITICAL: PDOException:SQLSTATE[08S01]:
[Microsoft][ODBC Driver 17 for SQL Server]Session Provider:
Connection has been closed by peer [xFFFFFFFF].

#0 /code/vendor/keboola/db-extractor-common/src/Keboola/DbExtractor/Extractor/Extractor.php(289): PDOStatement->fetch(2)
#1 /code/src/Keboola/DbExtractor/Extractor/MSSQL.php(255): Keboola\DbExtractor\Extractor\Extractor->writeToCsv(Object(PDOStatement), Object(Keboola\Csv\CsvFile), true)
#2 /code/vendor/keboola/db-extractor-common/src/Keboola/DbExtractor/Application.php(170): Keboola\DbExtractor\Extractor\MSSQL->export(Array)
#3 /code/vendor/keboola/db-extractor-common/src/Keboola/DbExtractor/Application.php(65): Keboola\DbExtractor\Application->runAction()
#4 /code/src/run.php(55): Keboola\DbExtractor\Application->run()
#5 {main}

duplicate of #49


Using tickers

Hi!
Thanks for the great work with the Degiro API wrapper.
I was just wondering if there is a way to operate with tickers (e.g. 'TSLA' for Testa or 'AAPL' for Apple). Mostly in trading we operate with the tickers and e.g. if I want to fetch history data from Yahoo Finance API or extract a list of potential stocks to trade from Finviz API I have to use tickers. Tickers are also unique (at least on country level) and very practical to operate with. Probably you know all this already :). Anyway, it would be very useful to have a function to extract the stock Degiro id for a stock for a specific ticker.
I don't know if I have missed something but I could not find a simple way to do this.

So something like the current product_lookup. but where you could use ticker instead and perhaps limit to specific Echanges and product types to avoid potential duplicates.

Hello there,
so you want to get the stock detail just by providing the ticker symbol ?
This might be a solution :
# SETUP REQUEST
request = ProductSearch.RequestStocks(
    index_id=None,
    is_in_us_green_list=False,
    stock_country_id=None,
    offset=0,
    limit=1,
    require_total=True,
    search_text="AAPL",  # TICKER SYMBOL
    sort_columns="name",
    sort_types="asc",
)

# FETCH DATA
products = trading_api.product_search(request=request, raw=True)

Thanks a lot, I'll try this.

Closing this issue.
Feel free to open another issue if you have questions.


[SourceKit/CodeFormat] Don't modify multiline string indentation regardless of it being column-aligned or not.

Resolves rdar://problem/61463947

@swift-ci please test

@swift-ci please test Windows Platform

LGTM for the specific change.  One question: are we not indenting in multi-line strings at all? What happens on a blank line after opening a multi-line string?

LGTM for the specific change. One question: are we not indenting in multi-line strings at all?
What happens on a blank line after opening a multi-line string?

We're not. Indentation is left as is, so hitting enter after the opening quotes puts you at column 1 on the next line (same behavior as 5.2).  This change is just so we don't mess up leading indentation where we didn't before. There are a bunch of open indentation issues we still need to look at for multi-line strings and also block comments (which have a bunch of the same issues).