Feat: produce stack trace from python code called from JVM

Is your feature request related to a problem? Please describe.
I have a generate_problem function, which  updates certain attributes of the domain objects. It seems, that this is an interaction issue of Python code executed from the JVM.
Traceback (most recent call last):
  File "/home/***/git/optapy-pplan/optapy-test/src/main2.py", line 426, in <module>
    solution = solver.solve(generate_problem(sservice.context._inputfile))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/***/.virtualenvs/timefold/lib/python3.11/site-packages/timefold/solver/_solver.py", line 109, in solve
    java_solution = self._delegate.solve(java_problem)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected string or bytes-like object, got 'ai.timefold.jpyinterpreter.types.PythonString'

In my opinion, such an error could surface at any point during development leaving the developer completely clueless where to look for the error, unless he/she is following an approach of add-line/solve/add-line/solve/.... which I consider the most tedious.
Describe the solution you'd like
Produce an error message which includes a stack trace from python. This should include information that relates to the original code somehow, even if mangled by jpype or jpyinterpreter.
Describe alternatives you've considered

Follow an approach of add-line/solve/add-line/solve/.... which I consider the most tedious.

Perform type checking after generate_problem() (does that help at all with a possibly dynamic issue?)

Additional remarks
I cannot find hints to why this PythonString type is necessary and which components have to use it. There is a translation of jpype between Java strings and Python strings. Why isn't this sufficient? Or, why isn't this PythonString automatically translated to a python string, while executing in CPython or jpy*-translated python code? I do not want to deviate too much from my original feature request, however.

Essentially, the cause of this issue is https://github.com/jpype-project/jpype/issues/1047 ; in short:

Python throws an exception
Java throws an exception with that as the cause
When it get back to Python, the cause is lost

As for how I know it is from Python; ai.timefold.jpyinterpreter.types.PythonString will never show up as a name if it was executed in Java (it would instead show up as its Python name, str, and the stack trace would be preserved; you would see something like this:
Traceback (most recent call last):
  File "DefaultSolver.java", line 200, in ai.timefold.solver.core.impl.solver.DefaultSolver.solve
Exception: Java Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File ".../test/.venv/lib64/python3.12/site-packages/timefold/solver/_solver.py", line 109, in solve
    java_solution = self._delegate.solve(java_problem)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ai.timefold.jpyinterpreter.types.errors.ai.timefold.jpyinterpreter.types.errors.ValueError: ai.timefold.jpyinterpreter.types.errors.ValueError: hi

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".../test/test.py", line 232, in <module>
    solver.solve(problem)
  File ".../test/.venv/lib64/python3.12/site-packages/timefold/solver/_solver.py", line 111, in solve
    raise unwrap_python_like_object(e)
_jpyinterpreter.conversions.unwrap_python_like_object.<locals>.WrappedException: Traceback (most recent call last):
  File "DefaultSolver.java", line 200, in solve
  File "AbstractSolver.java", line 82, in runPhases
  File "DefaultConstructionHeuristicPhase.java", line 62, in solve
  File "ConstructionHeuristicDecider.java", line 107, in decideNextStep
  File "ConstructionHeuristicDecider.java", line 133, in doMove
  File "AbstractScoreDirector.java", line 253, in doAndProcessMove
  File "BavetConstraintStreamScoreDirector.java", line 49, in calculateScore
  File "BavetConstraintSession.java", line 83, in calculateScore
  File "BavetConstraintSession.java", line 92, in calculateScoreInLayer
  File "Propagator.java", line 66, in propagateEverything
  File "StaticPropagationQueue.java", line 123, in propagateInserts
  File "StaticPropagationQueue.java", line 116, in processAndClear
  File "StaticPropagationQueue.java", line 93, in propagate
  File "AbstractConditionalTupleLifecycle.java", line 16, in insert
  File "ConditionalUniTupleLifecycle.java", line 9, in test
  File "ConditionalUniTupleLifecycle.java", line 19, in test
  File ".../test.py", line -1, in a
  File ".../test.py", line 210, in a
    raise ValueError('example')
ValueError: example

).
I tried your domain in your Stack Overflow question with a valid dataset according to your typing and could not reproduce your exception. You would need to provide an actual dataset/constraints so we can reproduce it.
My best guess is your old optapy code copied the Java field into the Python object.

@triceo I made this a feature request instead of a bug for that reason. Feel free to close/postpone as you see fit.
I know that multi-language inter-operation can cause all sorts of hidden trouble, which is often not easily solvable. Under the assumption that there are users with limited programming experience intending to use the python API, it would offer a way better user experience in the face of modelling errors, of course.
As far as I am concerned: this is my first "serious" go at a constraint solver and I am using Python, because dealing with the data is much more flexible and interactive than doing this in Java.
@Christopher-Chianelli Thank you for mentioning that this is in fact a porting issue coming from OptaPy. I think you are right with respect to copying stuff. It is however unclear to me, when Java classes are created, first. I will write another comment on SO to not pollute this issue.

FYI: In my case, the error seems to get triggered from define_constraints(), as I have just now found out. I simply emptied this function, and the error vanishes.
IMHO this supports my request for a little better debug information. The first "timefold.solver" log output is generated when solving starts, but nothing is logged before the error occurs.

It is similar. Maybe also related to #82.
In my case the PythonString error comes from
def teacher_soft(constraint_factory: ConstraintFactory):
    return constraint_factory.for_each(Exam) \
            .filter(
                lambda exam:
                    exam.timeslot and (
                        re.search("Mueller",exam.teacher)!=None and
                            exam.timeslot.start_time.date() in (
                                datetime.date(2024,7,8),
                                )
                        or ...
                     )
                ) \
            .penalize(HardSoftScore.ONE_SOFT)  \
            .as_constraint("Teacher soft issue")

re.search is being passed exam.teacher as PythonString. However: Exam.teacher : str in the domain.py

What Python version are you using? It working for me locally on Python 3.12.
Side notes:

Are you trying to force a exam on a given timeslot to have a particular teacher/room?  Using "Mueller" in exam.teacher instead yields a score calculation speed of 21671/sec, or a 10x improvement.

re is actually a mix of Python + C; it calls the _sre module, which is C, and thus incur the massive overhead of a FFI call (said overhead was large enough to warrant making a bytecode translator).

The intention of this particular constraint is to avoid a particular day for this particular teacher. If it was the other way round, pinning would also be counterproductive, because there are multiple timeslots per day which can be chosen, IMHO.
The dataset is not perfect at all in the current state and we do not have much influence on the main database from which we have to import every couple of months. Sometimes multiple teachers surnames are assigned to an exam and if non-multiple, both forename and surname are included. We could pre-process the data and map to teacher ids, of course.
Using re was a quick solution. We might translate to Java eventually, anyway. As far as I know re.search applies caching in normal CPython, so that at least the regex translation is skipped on multiple evaluations. I have to admit, I have no idea whether this caching works with jpype/jpyinterpreter. From your answer I gather, that state is probably not kept and the cache lost.
What do you mean by "for_each only considers fully assigned entities, so exam.timeslot in the filter is pointless."? The constraint seems to have been effective - whether it was doing that efficiently is another issue. Or am I completely mistaken, here?

@Alex-K37 @Christopher-Chianelli Folks, please - may I ask to continue your conversation, at this point no longer related to this issue, in another space? Perhaps our Github discussions?


Switched to stream-io-api.com for API and Analytics

Fixed https QA.
Included an extra commit to support STREAM_BASE_URL environment variable.

Discussed in person with Tommaso. We're good to merge.


Failed to build collectd

When run benchmark with collectd trace enabled,  the job failed due to failing to build collectd, the error is as below:
WARNING: aclocal' not found!     Please make sure that aclocal' is installed and is in one of the
directories listed in the PATH environment variable.
WARNING: automake' not found!     Please make sure that automake' is installed and is in one of the
directories listed in the PATH environment variable.
From the log, we need to install some dependencies for building collectd. The test image is ubuntu 14.04.

https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/1083

A fix for this issue:　https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/1083

Please see the comment on the pull request.


TabView: Android and iOS have different init behavior

I have implemented TabView on my app, and I noticed these differences:

Android: upon initial TabView load, the selectIndexChanged event is run
iOS: upon initial TabView load, the selectIndexChanged event is not run

I'm not asking for a side-fix, only curious: was this behavior intentional, or is there any drive to have implementation parity between these differences? (this confused me as I expected event behavior to be the same for both)

This question might belong as an issue on NativeScript.
I assume {N} without angular have the same behavior.


#98: Sample ADO pipeline files fail

Signed-off-by: Colin McCullough<EMAIL_ADDRESS>

Looks like its related to this change:
steps.checkout definition | Microsoft Learn

Changes suggested here are now integrated into the code but were pushed through a separate commit.


Can we get rid of qt4?

It uses a deprecated API in CoreFoundation on Darwin in a nontrivial way and I'd rather not jump through a bunch of hoops to support ancient code when QT5 has been out for over half a decade now 😄

... and qt4 has some parallel build bogons.
I have CAD tools that depend on it, so I'd nees to keep it alive on linux.

I think removal makes sense. We can do it in 19.03 and encourage people to use older channels for the couple of cases that need it.

... and qt4 has some parallel build bogons.

What do you mean?

... and qt4 has some parallel build bogons.

What do you mean?

It randomly fails with parallel building enabled.

@jcumming the CAD tools are unmaintained? or why do they need such an old QT?
@matthewbauer 🍾

@jcumming the CAD tools are unmaintained? or why do they need such an old QT?

These are commercial tools, and maintenance is somewhat opaque to me. I don't oppose the removal from upstream nixpkgs, I'll just have to diverge farther from mainline.. :(

@jcumming you could also do something like (import (builtins.fetchurl { url = "https://github.com/nixos/nixpkgs/archive/abcdef123456.tar.gz"; sha256 = "blahblah"; }) {}).qt4 in your expressions

I'd prefer to keep such core libraries as long as they are needed by the users of Nixpkgs and maintainable, and this means limiting Qt 4 platforms to Linux (unless somebody wants to update it for macOS).

It randomly fails with parallel building enabled.

Could you report this with an error message? AFAIK qt48 has no issues with parallel building.

Sure, I'd be okay with removing macOS from its supported platforms too, although the main difference to me is that removing the package entirely forces us to go through its dependents and making sure that they don't actually need it, whereas changing platforms might just silently make packages disappear for macOS 😄

to go through its dependents and making sure that they don't actually need it

This is being done in #33248.

I agree with @orivej, removing qt4 entirely will be quite hard.
I looked into most of the packages in #33248 some months ago and a lot of them are still used and maintained, but don't provide (or actively work on) QT5 support, so I'm not sure if we want to drop it for linux as well.

Migrating individual packages using qt4 is the main point IMHO.  There was discussion about this around https://github.com/NixOS/nixpkgs/issues/33248#issuecomment-406859670
And the other part is removing darwin from qt4.meta.platforms – on the point where it's not really usable on Darwin anymore (I can't see from the description when that happens).

I added patches that made it work on Darwin again, so this is less pressing, but still should be a goal IMO.

Closing in favour of #33248


Editor: Remove formating

Have the ability to remove HTML formatting when editing the template.

Notify this user when ready: https://twitter.com/ina_at/status/684668607834533888

Done in #265


how to set the screenshot path when run locally

I want to customize the screenshots path so that it is easier to organize.But it seems that no api support this

Hi @mrtylerzhou There's an open PR #137 which implements this enhancement.

Duplicate #83


\faIconBox{} removed

It isn't needed anymore \faIconBox{} trick, fontawesome5 has added [fixed] that does exactly the same but natively. I made all the necessary changes.
Dependencies: fontawesome5 version 5.4.1 dated 2018/10/13

[x] New feature (non-breaking change which adds functionality)
[x] This change requires a documentation update

Checklist

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[?] I have checked that the original example is succesfully built on circleci
circleci uses an outdated texlive-fonts-extra where fontawesome5 version 5.4.1 is not included, so PDF built is unsuccessful

I was also working on this change, will have a look to your PR soon.


Cannot install from npm

I try to install sodium 1.2.0 from npm, but encountered the following errors.
><EMAIL_ADDRESS>preinstall /home/naoina/work/src/github.com/tokyootakumode/com/node_modules/sodium
> node install.js --preinstall

Static libsodium was not found at /home/naoina/work/src/github.com/tokyootakumode/com/node_modules/sodium/deps/build/lib/libsodium so compiling libsodium from source.
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
aclocal: warning: couldn't open directory 'm4': No such file or directory
autoreconf: configure.ac: tracing
autoreconf: configure.ac: creating directory build-aux
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: configure.ac: not using Autoheader
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:117: installing 'build-aux/compile'
configure.ac:9: installing 'build-aux/config.guess'
configure.ac:9: installing 'build-aux/config.sub'
configure.ac:10: installing 'build-aux/install-sh'
configure.ac:10: installing 'build-aux/missing'
configure.ac:694: error: required file 'dist-build/Makefile.in' not found
configure.ac:694: error: required file 'test/default/Makefile.in' not found
Makefile.am:12: error: required directory ./dist-build does not exist
src/libsodium/Makefile.am:209: error: HAVE_LD_OUTPUT_DEF does not appear in AM_CONDITIONAL
src/libsodium/Makefile.am: installing 'build-aux/depcomp'
test/Makefile.am:1: error: required directory test/default does not exist
autoreconf: automake failed with exit status: 1
make: *** [Makefile:62: libsodium] エラー 1
/home/naoina/work/src/github.com/tokyootakumode/com/node_modules/sodium/install.js:288
            throw new Error(cmdLine + ' exited with code ' + code);
            ^

Error: make libsodium exited with code 2
    at ChildProcess.<anonymous> (/home/naoina/work/src/github.com/tokyootakumode/com/node_modules/sodium/install.js:288:19)
    at emitTwo (events.js:87:13)
    at ChildProcess.emit (events.js:172:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
npm WARN deprecated<EMAIL_ADDRESS>use [cross-spawn](https://github.com/IndigoUnited/node-cross-spawn) or [cross-spawn-async](https://github.com/IndigoUnited/node-cross-spawn-async) instead.
npm WARN deprecated<EMAIL_ADDRESS>Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm ERR! Linux 4.7.5-1-ARCH
npm ERR! argv "/home/naoina/.homesick/repos/dotfiles/home/.nvm/versions/v4.6.0/bin/node" "/home/naoina/.nvm/versions/v4.6.0/bin/npm" "i"
npm ERR! node v4.6.0
npm ERR! npm  v2.15.9
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>preinstall: `node install.js --preinstall`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>preinstall script 'node install.js --preinstall'.
npm ERR! This is most likely a problem with the sodium package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js --preinstall
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs sodium
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR!     npm owner ls sodium
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/naoina/work/src/github.com/tokyootakumode/com/npm-debug.log

sodium 1.2.0 on npm seems that there are no some directories.

You seem to be using Arch... is it possible you don't have recent versions of packages in base-devel?
pacman -S --needed base-devel

@richchurcher I'm using latest versions of base-devel. Also this issue has occurred on MacOS X v10.11 El Capitan as well. Please see the following log.
><EMAIL_ADDRESS>preinstall /private/tmp/node_modules/sodium
> node install.js --preinstall

Static libsodium was not found at /private/tmp/node_modules/sodium/deps/build/lib/libsodium so compiling libsodium from source.
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
aclocal: warning: couldn't open directory 'm4': No such file or directory
autoreconf: configure.ac: tracing
autoreconf: configure.ac: creating directory build-aux
autoreconf: running: glibtoolize --copy --force
glibtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
glibtoolize: copying file 'build-aux/ltmain.sh'
glibtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
glibtoolize: copying file 'm4/libtool.m4'
glibtoolize: copying file 'm4/ltoptions.m4'
glibtoolize: copying file 'm4/ltsugar.m4'
glibtoolize: copying file 'm4/ltversion.m4'
glibtoolize: copying file 'm4/lt~obsolete.m4'
autoreconf: running: /usr/local/Cellar/autoconf/2.69/bin/autoconf --force
configure.ac:94: error: possibly undefined macro: AC_DEFINE
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:172: error: possibly undefined macro: AC_CHECK_DEFINE
autoreconf: /usr/local/Cellar/autoconf/2.69/bin/autoconf failed with exit status: 1
make: *** [libsodium] Error 1
/private/tmp/node_modules/sodium/install.js:288
            throw new Error(cmdLine + ' exited with code ' + code);
            ^

Error: make libsodium exited with code 2
    at ChildProcess.<anonymous> (/private/tmp/node_modules/sodium/install.js:288:19)
    at emitTwo (events.js:87:13)
    at ChildProcess.emit (events.js:172:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
npm ERR! Darwin 15.6.0
npm ERR! argv "/Users/ms76/.nodebrew/node/v4.6.0/bin/node" "/Users/ms76/.nodebrew/current/bin/npm" "install" "sodium@latest"
npm ERR! node v4.6.0
npm ERR! npm  v2.15.9
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>preinstall: `node install.js --preinstall`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>preinstall script 'node install.js --preinstall'.
npm ERR! This is most likely a problem with the sodium package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js --preinstall
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs sodium
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR!     npm owner ls sodium
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /private/tmp/npm-debug.log

Fixed the .gitignore to include the libsodium m4 directory, can you test it now?
Updated the npmjs module up to 1.2.1.

@paixaop I just tested now, but has not been fixed yet.
><EMAIL_ADDRESS>preinstall /home/naoina/work/src/github.com/tokyootakumode/com/node_modules/sodium
> node install.js --preinstall

Static libsodium was not found at /home/naoina/work/src/github.com/tokyootakumode/com/node_modules/sodium/deps/build/lib/libsodium so compiling libsodium from source.
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: creating directory build-aux
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
autoreconf: running: /usr/bin/autoconf --force
autoreconf: configure.ac: not using Autoheader
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:117: installing 'build-aux/compile'
configure.ac:9: installing 'build-aux/config.guess'
configure.ac:9: installing 'build-aux/config.sub'
configure.ac:10: installing 'build-aux/install-sh'
configure.ac:10: installing 'build-aux/missing'
configure.ac:694: error: required file 'dist-build/Makefile.in' not found
configure.ac:694: error: required file 'test/default/Makefile.in' not found
Makefile.am:12: error: required directory ./dist-build does not exist
src/libsodium/Makefile.am: installing 'build-aux/depcomp'
test/Makefile.am:1: error: required directory test/default does not exist
autoreconf: automake failed with exit status: 1
make: *** [Makefile:62: libsodium] エラー 1
/home/naoina/work/src/github.com/tokyootakumode/com/node_modules/sodium/install.js:288
            throw new Error(cmdLine + ' exited with code ' + code);
            ^

Error: make libsodium exited with code 2
    at ChildProcess.<anonymous> (/home/naoina/work/src/github.com/tokyootakumode/com/node_modules/sodium/install.js:288:19)
    at emitTwo (events.js:87:13)
    at ChildProcess.emit (events.js:172:7)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
npm WARN deprecated<EMAIL_ADDRESS>use [cross-spawn](https://github.com/IndigoUnited/node-cross-spawn) or [cross-spawn-async](https://github.com/IndigoUnited/node-cross-spawn-async) instead.
npm WARN deprecated<EMAIL_ADDRESS>Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm ERR! Linux 4.7.5-1-ARCH
npm ERR! argv "/home/naoina/.homesick/repos/dotfiles/home/.nvm/versions/v4.6.0/bin/node" "/home/naoina/.nvm/versions/v4.6.0/bin/npm" "i"
npm ERR! node v4.6.0
npm ERR! npm  v2.15.9
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>preinstall: `node install.js --preinstall`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>preinstall script 'node install.js --preinstall'.
npm ERR! This is most likely a problem with the sodium package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js --preinstall
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs sodium
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR!     npm owner ls sodium
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/naoina/work/src/github.com/tokyootakumode/com/npm-debug.log

it's working for me now, can you check again. Was too restrictive on the .gitignore

@paixaop It works on my environment now! Thank you!

Great. thanks for the feedback


Graph AdvocatesDAO Grant Presentation Slides

Draft slide: https://pitch.com/public/c22f0b8d-4082-4299-af39-0c5f58aea4e6

So far I have Alex, Slim, and Dillion added to the about us slides; who else to add?

So far I have Alex, Slim, and Dillion added to the about us slides; who else to add?

@reinasun what are you thoughts on instead sharing our collective credentials as a sum package?

1

Update logo to transparent PNG
Sync blue, green, and white to Figma style guide (optional)

Thanks for noting our updates.  I'd like to share my screen tomorrow and go over the slides with team. Also, I do not consider this admin work. It's more like project management, funding management, strategic correspondence. Also, I'm concerned that my level is too low. Where is the spreadsheet where we indicate time spent?

great working session yesterday. I'll share the slides in our meeting today and go over any questions.


support rb_binary with Gemfiles in subdirectory

Temporary workaround to support nested Gemfiles; a bit hacky since this expects a Gemfile in the transitive srcs. Ideally we'd want to provide this information via the rb_bundle repository rather than explicitly passing it in via srcs.

failure is unrelated:
//:rubocop                                                              TIMEOUT in 60.0s


refactor: introduce sort-keys ESLint rule

@programminx-askui The tests for the proxy are failing because the self-signed certificates expired. Are there instructions on how to repair that?


[img2npy.py] Expected all tensors to be on the same device, but found at least two devices.

Hello thank you for ur support of reproducing FC4 on pytorch.
there is some errors I encountered when running img2npy.py in VSCode
My PC configuration includes CPU and GPU.
I used torch==2.4.1 supporting GPU
in utils.py line 52
correction = illuminant.unsqueeze(2).unsqueeze(3) * torch.sqrt(Tensor([3])).to(DEVICE)
showing the error in the title.
I changed this line to
correction = illuminant.unsqueeze(2).unsqueeze(3).to(DEVICE) * torch.sqrt(Tensor([3])).to(DEVICE)
no idea if you upload the version with only cpu.
Best Regards,
Carry

another question is about the number of files in dataset/coordinates
there are totoally 592 .txt files, but I download images following your bio link in README.md. There are only 568 images. The difference in quality will cause error in img2npy.py.
Is there anything I missed by accident?

Hello! Thank you very much for pointing out the issue with the device. I just wanted to let you know that I fixed it accordingly. Unfortunately, I have no clue about the mismatch in the number of coordinates files. My dump came from the same source, but please refer to what has been indicated on the README as that is more reliable. I will try to test this out extensively as soon as possible

Hello
Thank you for your time and attention. Could you mind if I express it more specifically? Was the folder ./dataset/coordinates downloaded by coordiantes in Shi's Re-processing of Gehler's Raw Dataset. Since that link is valid, I have no idea about the exact meaning of *_macbeth.txt. But I think the total number of these *_macbeth.txt files should be equal to the number of images in Canon 1D + Canon 5D(1) + Canon 5D(2) + Canon 5D(3). But I only got 568 .png images. but there are 592 *_macbeth.txt files. Did I miss anything or I misunderstand something.
Another thing I need to ask about parameters. As we all know, bath_size would have a great impact on the final models. If the batch_size is set as 1, much randomness would be intorduced in the training process. So if didn't get you wrong, you set batch_size = 1, but the original is 10. And I tried to tune this parameter, some error would abort the training process. Would you mind if give me some advice.
Best Regards,
Carry

Hi, and thank you for your interest. You got it right. That folder was downloaded like you said. That was some time ago though, so I don't know if anything changed on the Shi's Re-processing of Gehler's Raw Dataset that could justify the mismatch in the number of coordinates. As for the batch size, you are right again. However, I did not implement support for batch size greater than 1. I suspect that would not have much impact on the monitored metrics, but, unfortunately, I do not have time to integrate the functionality. It should be fairly easy to adapt the code accordingly though.

Hi, and thank you for your time and support. I got it.


Status Update

Hello! I would like to ask what is planned for medusa. I am a strong user of Dart, so I was very interested in how this could bring more to the Dart Community.

Hey, Medusa started off as my college project mainly to boost Python execution speeds but now more is planned for it. Given the scope for the large scale deployment of Dart medusa can be used to bridge the gap between experienced developers who might be more familiar with Python to jump over and continue develop in Python and deploy in Dart. Development is kinda slow now but the main hurdle here is porting the huge, rich runtime library that Python provides to Dart/medusa. The base compiler is buggy but kinda ready but since a lot of py modules are native porting them to dart is also an uphill task. Any suggestions?

@rahul080327 Would implementing the transformer in Dart help? I can help port that :)

@kaendfinger That would remove the Python dependency at least. But I'm using the inbuilt ast module that Python provides in its libs to parse the python input and generate code. The ast is a pretty nasty module to implement in dart as its native for one and secondly its highly optimized and specific for Python(see the Python 2.7.x sources). If you are planning to write the transformer in dart I'm kinda skeptical of its performance as the lexers, parsers and AST walkers all have to be written which the ast module provides out of the box and has very high performance. But then again I'm open to better suggestions any time :D

@rahul080327 Ahh true, I'll take a look at the code a bit more and tell you what I think :)

Apologies for the sparse docs and lack of tests... will be on it soon. :)

Just FYI, lots of python lib is hooked with C code and even fortune code. The scientific python community used a lot of C code to boost up the numeric/matrix calculation part, for example numpy and scipy project.
BTW, will this project support python3 in the future?
Thanks.


VAppBar app property deprecated in Vuetify 3

Describe the bug
In trame.ui.vuetify3, there are the predefined Layouts such as SinglePageLayout. For example, in the definition of the VAppBar there is a parameter app=True. However, in vuetify3, this property was removed. See Vuetify3 API. As it stands, this parameter seemingly does nothing, yet it is used throughout the SinglePageLayout class.
https://github.com/Kitware/trame-vuetify/blob/72a960214be0d16ac0e9c7f24a6a447985d0f0c2/trame_vuetify/ui/vuetify.py#L67-L69
https://github.com/Kitware/trame-vuetify/blob/72a960214be0d16ac0e9c7f24a6a447985d0f0c2/trame_vuetify/ui/vuetify.py#L72-L74
https://github.com/Kitware/trame-vuetify/blob/72a960214be0d16ac0e9c7f24a6a447985d0f0c2/trame_vuetify/ui/vuetify3.py#L71-L73
https://github.com/Kitware/trame-vuetify/blob/72a960214be0d16ac0e9c7f24a6a447985d0f0c2/trame_vuetify/ui/vuetify3.py#L79-L81
To Reproduce
N/A
Code
N/A
Expected behavior
N/A
Screenshots
N/A
Platform:
Device:

[x] Desktop
[ ] Mobile

OS:

[ ] Windows
[ ] MacOS
[x] Linux
[ ] Android
[ ] iOS

Browsers Affected:

[x] Chrome
[ ] Firefox
[ ] Microsoft Edge
[ ] Safari
[ ] Opera
[ ] Brave
[ ] IE 11

Thanks for the report. Feel free to provide a PR with a better usage of the vuetify3 API. As you've noticed, it was almost picked up as-is from our vuetify2 one.

I'm not very experienced with the vuetify API, I could make a PR to just remove the app=True, but I'm not sure how the behavior of having app=True would be accomplished in Vuetify3.

Ok don't worry about it then. We will eventually clean that piece of code. What is happening is those args, just get ignored.

fixed in 2.4.0


Add option to use old merge conflict resolution UI

As of the latest update there is a new merge conflict resolution UI with "Theirs" "Yours" and "Result". I cannot understand how to do manual resolutions in this UI - it is difficult to understand - and end up just editing the file manually with a different IDE.
Could you please add an option to use the old conflict resolution interface? I found this very intuitive and it was one of my favourite features of VSCode.

/duplicate of several issues. See https://github.com/microsoft/vscode/issues/157268#issuecomment-1206670413 for settings to reinstate previous behaviour.

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


Error calling npm to fetch template.\

I am receiving the following error when attempting to create a new bot.  Anyone have any idea how to resolve?
Error calling npm to fetch template. Please ensure that node and npm are installed and available on your system. Full error message: Command failed with exit code 1: npm install -g --prefix
Microsoft Edge on Windows 10
Version:  2.1.2
Electron: 8.2.4
Chrome: 80.0.3987.165
NodeJS: 12.13.0
V8: 8.0.426.27-electron.0

Thank you @k5reeves
Can you run the following command in an empty directory from a terminal? This is to ensure that npm is working normally:
npm install @microsoft/generator-bot-empty
Once complete, let me know if it was successful, or share what the error message is. Then you can delete that folder and it's contents.

@.***
Keith Reeves | Experience Design Manager, Knowledge Management | Learning Solutions | UnitedHealthcare
(office)<PHONE_NUMBER>  | (email<EMAIL_ADDRESS>[LS_Expect Differently_email sig_v1]
From: Dana V @.>
Sent: Monday, July 11, 2022 5:02 PM
To: microsoft/BotFramework-Composer @.>
Cc: Reeves, Keith E @.>; Mention @.>
Subject: Re: [microsoft/BotFramework-Composer] Error calling npm to fetch template.\ (Issue #9286)
Thank you @k5reeveshttps://github.com/k5reeves
Can you run the following command in an empty directory from a terminal? This is to ensure that npm is working normally:
npm install @microsoft/generator-bot-empty
Once complete, let me know if it was successful, or share what the error message is. Then you can delete that folder and it's contents.
—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/BotFramework-Composer/issues/9286#issuecomment-1180912979, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEJIFQ4O77X3GMHHKUPGDT3VTSKW7ANCNFSM522JDVQQ.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>This e-mail, including attachments, may include confidential and/or
proprietary information, and may be used only by the person or entity
to which it is addressed. If the reader of this e-mail is not the intended
recipient or intended recipient’s authorized agent, the reader is hereby
notified that any dissemination, distribution or copying of this e-mail is
prohibited. If you have received this e-mail in error, please notify the
sender by replying to this message and delete this e-mail immediately.

Hi @k5reeves
I don't know if something went wrong, but I don't see the results from the terminal. All I see in your response is:
<EMAIL_ADDRESS>

C:\Users\kreeves4>npm install @microsoft/generator-bot-empty
npm notice
npm notice New major version of npm available! 7.13.0 -> 8.14.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.14.0
npm notice Run npm install -g<EMAIL_ADDRESS>to update!
npm notice
up to date, audited 708 packages in 3s
36 packages are looking for funding
run npm fund for details
found 0 vulnerabilities
Keith Reeves | Experience Design Manager, Knowledge Management | Learning Solutions | UnitedHealthcare
(office)<PHONE_NUMBER>  | (email<EMAIL_ADDRESS>[LS_Expect Differently_email sig_v1]
From: Dana V @.>
Sent: Tuesday, July 19, 2022 11:53 AM
To: microsoft/BotFramework-Composer @.>
Cc: Reeves, Keith E @.>; Mention @.>
Subject: Re: [microsoft/BotFramework-Composer] Error calling npm to fetch template.\ (Issue #9286)
Hi @k5reeveshttps://github.com/k5reeves
I don't know if something went wrong, but I don't see the results from the terminal. All I see in your response is:
<EMAIL_ADDRESS>—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/BotFramework-Composer/issues/9286#issuecomment-1189330046, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEJIFQ5GFQQN3IMLKWIELJDVU3MQTANCNFSM522JDVQQ.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>This e-mail, including attachments, may include confidential and/or
proprietary information, and may be used only by the person or entity
to which it is addressed. If the reader of this e-mail is not the intended
recipient or intended recipient’s authorized agent, the reader is hereby
notified that any dissemination, distribution or copying of this e-mail is
prohibited. If you have received this e-mail in error, please notify the
sender by replying to this message and delete this e-mail immediately.

Hi @k5reeves
Apologies for the delay. Can you please run the following, then re-launch Composer and then try again?
npm install -g<EMAIL_ADDRESS>

Closing due to lack of response. If assistance is still needed, please comment with the findings and we will reopen.

I’m not having any luck getting it to work.  I now have the most up to date versions of npm and NodeJS but am still getting the exact error below.
npm install -g –prefix C:\Users\kreeves4\AppData\Roaming\BotFrameworkComposer.yo-repository --loglevel error --no-optional @microsoft/generator-bot-empty@*
Keith Reeves | Experience Design Manager, Knowledge Management | Learning Solutions | UnitedHealthcare
(office)<PHONE_NUMBER>  | (email<EMAIL_ADDRESS>[LS_Expect Differently_email sig_v1]
From: Dana V @.>
Sent: Tuesday, August 2, 2022 12:24 PM
To: microsoft/BotFramework-Composer @.>
Cc: Reeves, Keith E @.>; Mention @.>
Subject: Re: [microsoft/BotFramework-Composer] Error calling npm to fetch template.\ (Issue #9286)
Hi @k5reeveshttps://github.com/k5reeves
Apologies for the delay. Can you please run the following, then re-launch Composer and then try again?
npm install -g<EMAIL_ADDRESS>—
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/BotFramework-Composer/issues/9286#issuecomment-1203012532, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEJIFQ6J5RM2JNUSXMEAHPLVXFKRPANCNFSM522JDVQQ.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>This e-mail, including attachments, may include confidential and/or
proprietary information, and may be used only by the person or entity
to which it is addressed. If the reader of this e-mail is not the intended
recipient or intended recipient’s authorized agent, the reader is hereby
notified that any dissemination, distribution or copying of this e-mail is
prohibited. If you have received this e-mail in error, please notify the
sender by replying to this message and delete this e-mail immediately.


Update npm dependencies

Updated node-redis to v3.1.2
Updated deep-extend to v0.6.0

This will greatly help with Heroku redis 7 now requiring a TLS connection, can this be merged soon please.

Since all tests are passing I'm merging and I'll see today if I can more forward with the 2.2 release.


Android-Kotlin : 09.26 Chronometer in Android (Kotlin)

Description 📜

Give a step-by-step tutorial of Chronometer in Android (Kotlin).
Required Documentation or Video or Audio.

Domain of Contribution 📊

[x] Android Dev (Flutter, Java, Kotlin)

References :

https://www.zoftino.com/android-chronometer-timer-stopwatch-tutorial

Please Read it Carefully Before Contributing

Changes should be made in Android_Development_With_Kotlin/ directory under Android_Development_With_Kotlin branch.
Inside Android_Development_With_Kotlin/ directory creates a directory and names it according to the topic ( for this issue 09. Dynamic User Interface)
Inside 09. Dynamic User Interface/ directory add your task with subtopic number and name and make changes accordingly.
You have to push your PR to the Android_Development_With_Kotlin branch only.
You can take help to the references but don't simply try to copy it. Just explain in your own word.
This issue is for GWOC'21 contributors only.
You need to push in a single commit. If there exists more than one commit then you need to squash your commits into one commit.
Will assign you on a first come first serve basis.
Please try to complete your assigned task within 7 days. If you need some more time then, please inform mentors and supervisors.
If you have two previously assigned issues on Android-Kotlin pending then please first complete them.

Supervisor @rahulsain

Happy Contributing. Best of Luck.💖

/assign

@sitamadex11  I am very new to these things . Can you see my update commit?

@rahulsain is this issue available for documentation?

@rahulsain is this issue available for documentation?

Please assign me if it is...

@rahulsain  I unassigned myself. Please assign to @eshan1925.

Hey @sitamadex11 and @rahulsain < I have created the PR and if there is no issue you can merge it.
Thanks


Autocomplete clear button

Hi,
Is there a way to have a clear button at the right of the autocomplete component, it would be nice to be able to change the input without deleting each time its content.
Or is there a way in css to do that ?
Thanks.

Hello,
To display an icon at the right of any .input-field, you need to add the class .suffix :

  clear
  <input type="text" id="autocomplete-input" class="autocomplete" value="click on the cross to clear the field">
  Autocomplete

Then, to clear the input using this icon, we just need to register a click event.
Since selecting the <input> element is required to initialize the autocomplete component, selecting our icon from the parent element is simple :
var elems = document.querySelectorAll('.autocomplete');
var instances = M.Autocomplete.init(elems, {/* ... */});

// 👇
for (const field of elems) {
  const clearIcon = field.parentElement.querySelector(".suffix");
  if (!clearIcon) continue;
  clearIcon.addEventListener("click", function() {
    field.value="";
  });
}

If browser compatibility does not matter (ff 74+ & chrome 80+), you can simplify the code using a nullsafe operator and an arrow function, and even use the classic elem.onclick = ... instead of registering a query selector.
Notice that only one <input> and one  tags should be inside the
 tag.
I created a codepen demo implementing this fix here : https://codepen.io/shinprog/pen/WNXavXZ
Issue closed since it's pretty simple to implement.
Feel free to reopen if you think it have to be added to the lib.

Thanks a lot for your quick answer.
I have one more question, I already had a prefix for my input and when I add the suffix, it goes above the input, is there a way to fix that ?

Thanks a lot for your quick answer. I have one more question, I already had a prefix for my input and when I add the suffix, it goes above the input, is there a way to fix that ?
Hmm strange, I don't have this problem if I add a prefix icon.

Could you share your code ?

I had a problem with my code sorry, everything works fine now !


rm: rules_perl

This is making RBE confused when the host is macOS. rules_perl is not really doing anything useful for a hermetic toolchain anyways.

weren't you forced to add this for some reason? did that reason change?

I don't think we were ever forced to use it, no.


Hi, I'm Josh, I'll be your co-pilot for at least a bit

Hello,
If you've read #951 or #938 or chatter elsewhere, then you know I (and others) have been trying to revive the active status of this project. We're still working out the finer details, but for at least the next 30 days, @chjj and I have agreed to give me the ability to perform merges and publish to NPM on the main project.
Having said that, you all know the codebase, the history, and have more direct knowledge of what's going on than I do. So, I'm asking for your help in this endeavor.
This goes for anyone using Marked, not just the collaborators.
Current vision:
Marked is a high-speed, lightweight, and low-level JavaScript library for converting markdown to HTML.
(Correct me, if this is off-base in some way.)
Note: This is not the same as a full-featured HTML generator. Instead, it is an HTML generator with a specific and limited scope (the markdown specification).
Current actively supported Markdown specifications

CommonMark
GFM (no extensions)

Current reviving approach

If there are no tests, it won't be merged.
Fixing defects will take precedence over new features.
I don't know enough about the codebase to make truly competent decisions about certain things; therefore, I'm leaning on the community to determine whether marked should even still be a thing.

Current step:
Gaining an understanding of what people can do: I have created a project: https://github.com/chjj/marked/projects/1?
I need to know if you have the ability to see the Project and if you can move cards.
If you can see the project, please let me know.
If you can move cards, please let me know...and,
help triage by placing the PR in the column you believe is most appropriate. I would like to focus on PRs that can simply be closed without merging, please add a comment as to why you believe the PR can be closed. There will be a "dispute" period of at least 48 hours for the community to decide to close PRs.

The perspectives of project collaborators will take precedence as of now.
Silence is consent.

If you cannot move cards, please join the discussion on the PR itself to voice your thoughts.

Added option to preserve list numbering from input

Thanks for taking up the mantle and being so thorough @joshbruce!

Hello,
The position from which this is written:
The principle from which this is written: If I create it, or acquire it, I help maintain it.
I also don't know if the following was the initial intent or desire of @chjj.
The advent of package management and popularity of open source has resulted in a proliferation of packages available to consumers. Further, they have left in their wake many packages that are no longer maintained or participated in by the original authors (Marked), contain security vulnerabilities that go left unfixed (used to be Marked), or have been replaced by the native platforms for which they were written (https://www.npmjs.com/package/left-pad).

It's been more than the 30 days noted in the first message of this issue.
I was given permissions to publish the NPM package after invoking the NPM dispute process. The first 30 days was to see what the community wanted to do with Marked - up to an including letting it fade into the sunset. We did a lot in those first 30, which has now turned into over 60.
Having said that, having the repo here with no sign of it being transferred or being granted administration privileges from @chjj has proven problematic. I have reached out to NPM and @chjj again via email to discuss. Specifically with the request to transfer the repo to either my personal GitHub account or the 8fold organizational account; otherwise, we might change the repo referenced by the package to 8fold/marked. I have also forwarded the same message to GitHub itself through their contact form (I do not believe they have a dispute process as such).
I've never done (or been asked to do) something like this before; so, I don't know what normal looks like - other than stale projects strewn across the Internet. With the first dispute, NPM granted 4 weeks (roughly 30 days) for those in the dispute to come to a resolution - before the Marked package name would have been transferred to the fork I had initially created.
I have been assured that changing the repo pointer will have no negative affect on the package published to NPM.
I wanted to post here to let the community weigh in on this and remain as transparent and professional as possible. The following promises were made to @chjj and the community (I'll be adding a couple more that have come to mind).

The project will remain under the MIT (or other open source) License.
@chjj will remain the "initial developer" (as seen in the Common Development and Distribution License 1.0 license).
Copyright would most likely shift to 8fold Productivity, LLC - which is a collective of independent professionals; therefore, would not be "owned" by a single individual.
We will add CI tools per the requests by the contributors made elsewhere to ensure quality and reduce possibility of regression.
@UziTech, @Feder1co5oave, and @KostyaTretyak would be added as contributors on the package.json file for their contributions over the last 60 days (not sure about the contributors of the past).

I would like to leave this public posting up for at least 30 days to let us discuss before taking any action to shift or stay. Again, I'm not sure if @chjj had intended for us to make this move or not; only that it is possible, and so far I have only heard from NPM on the subject of the latest NPM dispute - started February, 11 2018.
Thoughts? Questions, comments, concerns?

My only issues with using the 8fold fork for the NPM module without @chjj transferring this repo are:

We would loose all issues and pull requests.
NPM is not the only package manager marked is in. The ones I know of are:

Bower
cdnjs
jsDelivr
cdnpkg

@UziTech

Agreed, issues and PRs would be left behind. Maybe @github support could help transfer? It is not uncommon for a GitHub repo to change from personal to organization so they must have some process for that.
jsDelivr and unpkg both read from npm, so this is not an issue if you have npm publish rights. However both Bower and cdnjs are manually published. But Bower recommends Yarn so it doesn't seem to really be a contender anymore.

@joshbruce

The project will remain under the MIT (or other open source) License.
@chjj will remain the "initial developer" (as seen in the Common Development and Distribution License 1.0 license).
Copyright would most likely shift to 8fold Productivity, LLC - which is a collective of independent professionals; therefore, would not be "owned" by a single individual.

With item 1 and 2 I am a little confused why CDDL was mentioned here. If, and that's a strong if, the "fork" move changes to anything CDDL there's an issue with GPL found at https://www.gnu.org/licenses/license-list.en.html#CDDL ... which means that we most likely can't use it our organization.
With item 3 initial Copyright usually has a lengthy term (See https://www.copyright.gov/help/faq/faq-duration.html#duration). Not being an attorney (standard disclaimer) I would assume that the initial Copyright would remain in effect even if it is managed and maintained elsewhere. Some of my other contributor collaborations that I maintain along with the original author even states that I'm just a collaborator/contributor... keeping the original Copyright however has a known basis to myself through prior contract litigation.
We appreciate your fixes as they are important. Thank you very much. :smile:

Just to be clear.
This is not a fork, this is its own repository - completely cut off from the mainline...a separate product, so to speak, inspired by the codebase in this repository, which is inspired by the original Daring Fireball python (Markdown processing) in its execution (regex). The name "marked" is essentially being transferred just like when FedEx bought Kinkos (just dated myself a bit).
@UziTech:
Good points. We have 30 days or more.
Pretending this will happen (as it is the will of the actual maintainers and there is no word from @chjj requesting otherwise), what should I be doing to help facilitate as an owner listed on the package? (There seems to be a difference of thought between yourself and @styfle re the package manager question).
I concur that we would lose the PRs and Issues - as well as the commit history - again, not a fork (or really a copy of the .git) - beginnings of a different product and codebase, just with the same name (trademark, so to speak, compared to IP related to the actual work itself); these concerns were also raised in the letter to @chjj with the request to transfer the repo. I think we do have the ability to reference the consolidated issues across the projects; so, not a lot too move - they all fit on the main page; we also have 30 days to close as many as we can.
We are, unfortunately caught between a rock and a hard place on this regarding what we want to do, what we can do under these constraints, and what "fair" to those of us working to maintain this package...anyway, on a lot of levels.
@styfie:
I have contacted GitHub support with the full list of intentions and request. We have not received a response as of today. Will keep everyone posted.
If you and @UziTech can help us out on all things package managers and what needs doing, that would be wonderful.
Unless we would rather stay here.
Having said that, I'm not sure I could remain here - been wrestling with ethical dilemmas since arriving based on a lot of factors. Honestly, didn't think it would begin reviving and the mission would be to help people transition off of a dead package (contacting 3,000 package maintainers to use something else). But, I will not leave you stranded, I hope.
@Martii:
Fair points. And, we should definitely take it under advisement.

I only mention the CDDL as a point of giving credit where credit is due as in "This newness was inspired by a library created by @chjj, which was inspired by the work of ...." (Markdown has a license as well, which stipulates we can't use that term without written permission - not sure we've got that covered, and it's not 70 years out, but we might want to consider that moving forward: https://daringfireball.net/projects/markdown/license).

The name "marked", I think, would fall under something akin to an unregistered trade or sales mark...not really related to IP of a person typically. (That's why, I believe, NPM has the name dispute process in place. If I had a packaged called "PhotoShop" - Adobe could show up and say something about it - think this instance is odd because it's more us saying, "This repository doesn't have the latest and greatest version of what people know as 'marked' in it.")

The code itself is under the MIT License, which stipulates anyone can do anything so long as the copyright notice is left in tact.

Having said that, I too am not an attorney, but the changes we intend to make would see the library changed so dramatically I'm not sure anyone would recognize the two as having similar origins. Further, using regex would have me betting that there aren't too many unique ways to solve the problems using that methodology based on the specifications; so, I'm not sure what specific areas of the codebase are considered IP or not.

Unlike the Daring Fireball license, the MIT license does not have limitations in scope (for DF it's the Python source, it would seem). So, again, I'm not sure what is actually covered by the copyright and how much of that original work has to be altered in order to be classified as a new work under fair use and common general knowledge of a skilled expert (see also music sampling and https://www.uspto.gov/web/offices/pac/mpep/s2141.html - understanding that patents and copyrights are not the same - and, again, stating that I don't think there's a lot of ways to skin the Markdown cat using regex).

Given the open source nature, longevity of the project, and all the changes that have occurred since the original authorship, the number of hands who have touched it, and so on, I'm actually not sure how valid the single owner copyright is anymore based on the following; see collective works: https://www.copyright.gov/title17/92chap2.html

Having said all that, I'm really hoping attorneys don't end up getting involved here - seems a bit of a stretch and counter to at least some interpretations of the free and open source software movements. However, my knowledge in copyright comes from art and writing, which is a bit different, I believe, than software - it's pretty easy to tell if I wrote a paper or plagiarized it - same with a painting.

@joshbruce
I just wanted to mention the Chain of Title as being legal precedence e.g. it has to include the original Copyright and with OSL the license as well.
And to quote some OSL legal information:

The chain of title becomes important in open source licensing when someone wants to create a collective or derivative work of a previous work that itself consists of contributions by many people. The new authors are subject to the licenses of previous authors who preceded them, and each of those contributions may have different license restrictions on its use. * Lawrence Rosen

I'm really hoping attorneys don't end up getting involved here - seems a bit of a stretch and counter to at least some interpretations of the free and open source software movements.

That's why its best to follow 17 U.S.C. § 103[b] to avoid this. The subtle inference you mentioned is based on written fact (precedence) and actual litigation not an interpretation.

https://daringfireball.net/projects/markdown/license

Is there actual Code anywhere on that site? I've been viewing that page for more than a decade without finding it but I haven't spidered it. If there is no source code then it's probably a Document license only instead of a Code license. The idea/concept of markdown itself is free to develop however known derivatives, of any documented sort, follow what has been previously quoted and endured.

@Martii: Agreed. And it should maintain the Chain of Title, I think (thanks for helping work through clarifying).
Consider the US Web Design System from the US Gov't, which is licensed under the public domain and uses multiple open source projects: https://github.com/uswds/uswds/blob/develop/LICENSE.md
The license that would be in the new repo should, in my opinion, include the original from Gruber, the one from Marked, and our own. @chjj still retains full copyright over the work housed in this repo - unless transfer agreement is reached. Gruber still retains his. And we get ours, which includes the names of those who have helped keep it alive and moving forward.
Again, I do wonder how far this has to go all things considered. How much has to change before it is considered something else?
We are planning some pretty hefty changes. And, if the code in this repo (the work) begins taking "inspiration" from the 8fold/marked, does that mean this one has to reference ours? (Again, with artworks it's a lot easier.)
While I, personally, don't have an attorney in my back pocket, I will do what I can to ensure what is right, fair, and legal is performed and to the betterment of all involved - to the best of my knowledge at the time and leveraging the counsel of others.
Good question on the Markdown code: http://cpansearch.perl.org/src/SEKIMURA/Text-Markdown-Discount-0.11/xt/MarkdownXS.pl - Markdown is both the syntax and the tool for its conversion.

Also, just to make sure, there's a difference between the name and the code. Anyone can make a "Frappuccino" - they just can't call it that: https://en.wikipedia.org/wiki/Frappuccino - we're mainly fighting for the name, the repo, history, and so on may just not come with us.

Oh! And @styfle - yes, in case you weren't aware (I wasn't when I first started using GitHub), transferring projects is a breeze; however, it is not GitHub that does it. Behind the "Settings" tab of any repo is the ability to "transfer ownership". The new owner gets an invite to confirm their acceptance. Done.
However, our roadblock there is that @chjj doesn't really talk to the community anymore. In the first dispute via NPM he mentioned he had tried multiple times to pass maintenance to others, but they always lost interest. Which is fair to a point. I'm not losing interest - my issues are more ethics- and principles-based. So, anyway, getting him to even say "no, I will not transfer the repo" or "yes, I will hit the button now" has not happened. He's got a lot of repos and a lot going on near as I can from the Issues we've triaged and whatnot; so, requests regarding Marked probably aren't high on the radar for him, which is fine...it's high on ours and we have a way to move forward under a new umbrella.
Honestly, I think he's kinda over marked - and so are the other contributors this Issue is assigned to. So, it's up to us to decide what happens next - individually and collectively.

@joshbruce

Again, with artworks it's a lot easier.

I would disagree... Content licensing is another animal altogether. (notice that some of those aren't OSI approved)

begins taking "inspiration" from the 8fold/marked

Inspiration would be from Daring Fireball's document... still have to check out the Perl code link you gave though. There may be times when ideas are developed simultaneously (take electricity and the light bulb for example) but in the Patent arena someone else got the credit in history... whereas your entity has the advantage of already examining the source and also collaborating.

How much has to change before it is considered something else?

Easy... look up "derivative" in a legal dictionary and apply it. Since the code would be derived from this one regardless of a refactor the licensing header would need to stay. MIT is a grey area which is why I usually don't use it... within certain aspects it can be "taken over" but you need legal counsel and appropriate written documentation by a qualified, accredited, attorney created for that (a forum post doesn't usually count for this... I certainly don't expect this project to hire an attorney).

... unless transfer agreement is reached.

This is one case where it could be changed if the license doesn't prohibit it like GPL (GPL is spelled out in detail and one can't add/remove restrictions or it invalidates the protective/permissive nature of it).
Usually with MIT (or BSD) you can add some restrictions (key word here and not contradictory e.g. if it's unenforceable no deal then) to existing licensing if needed (usually one doesn't unless there is an issue of protective rights against litigation for consequential or inconsequential damages e.g. misuse representing of a name including author name sometimes with malware).
Our concern here is to comply as much as possible with Copyleft as mentioned in its current form, evaluate any changes that might come with a transfer, if compatible continue using the module otherwise look into other modules (which I'm already doing since there have been some DDoS issues with this one... we have dynamic forum style content so we have to consider this... but we're also patient... everybody makes mistakes and sometimes there is the unexpected bug... regular expressions aren't the only way to do markdown syntax but it is native to the language in most node projects and usually faster)

difference between the name and code

This is usually where Trademark comes into play.

we're mainly fighting for the name, the repo, history, and so on may just not come with us.

I too would like to see the history saved in a refactor/transfer. I am all for access and distribution control rights with npmjs.com to be handled with care and active projects. As they are a provider they can be exempt from certain aspects in U.S.C (has precedence... pick an ISP for example) and that is why you can submit those requests to them. However Code licensing will always be an issue one way or the other. I would personally prefer to continue using marked as our code base sections are currently developed and extended with marked but we're also open to newer implementations of that idea of markdown.
With @chjj designating you as a Collaborator that is the equivalent of a maintainer management system. So I think this user has done this part to the best of abilities and the system that GH offers. If there is an issue with npmjs.com then @chjj should add you as an authorized person to push to their distribution system (don't know if you have that already... but I did do a dep update so probably :).

Btw before I forget there is also https://www.npmjs.com/docs/orgs/ to handle naming conflicts. We signed up for it months ago but it is idle at the moment.

I apologize to everyone here. I've been head down working on other projects for a while now and I'm just terrible at keeping track of things. I only just saw this through twitter. @joshbruce, thanks for taking over maintainership of this project. It's something I've neglected for a while. I will transfer marked to 8fold (or maybe a specific markedjs org that you are owner of?). Anyway, I'm glad this has finally found a good home. Is there anything else you need done on the npm side?

@joshbruce, I've transferred this repo to markedjs/marked. I've invited you as an owner. Thanks for all you work. I do appreciate it even though I've been so absent. Closing.

@chjj: Thank you so much for starting this project - it's one of the first - and I think it deserves to be recognized as such. Hadn't thought of a MarkedJS org, right on.
Should we make the same on NPM?
Not sure how this will play out with the CI bit - credit cards and whatnot. But, we shall see how it goes.
Thanks for the quick turnaround on setting it up!

@Martii: We've taken care of most of the, if not all of the XSS and REDOS things. If you find something, please let us know as Snyk.io and others are removing Marked from their watch lists.
https://github.com/markedjs/marked/issues/1039

@joshbruce, NPM is totally up to you. I don't think a marked org on NPM is necessary right now, but who knows.
Yeah, I'm not sure about billing either. I just checked and it looks like billing through orgs on github reveals the expiration and last 4 digits of your card to other members (wtf github?). Seems like it should only be visible to the user who entered it, or not visible at all. Not sure if the same is true of the paid CI support...?

@chjj: I know, right!? That's why we were aiming for 8fold. It's already a paid org account, which means 8fold would still ultimately be paying for it (me, specifically, because it would be unfair to the others), but at least there are the tax things.
Keeping it under here, from an entrepreneur-perspective could be weird. So, maybe the MarkedJS org on NPM makes sense from that perspective - package and teams there - code lives on 8fold for now unless or until we pass the torch again.
Gonna start a new issue to continue this conversation - as it has definitely changed. Give me about 10 minutes.

Linking #1051 for others to follow


Button and other widgets for React

Hi Amazon dev team.
Do you have any React library to add button, address book and wallet widgets in declarative React.js style rather then binding them to some exiting element ids?
PayPal has this functionality:)

Something like Stripe has would be awesome https://github.com/stripe/react-stripe-elements#example

We only support binding at this time, but thanks for the suggestion.  I've passed it along to our development team for consideration.

Do we have a SDK for react-native?


Update read-related-data.md

Fixes #21425

@Nutzernam3 thanks again for reporting this. It should be live in /de.de/ in a few days.

@Nutzernam3 we'll be updating the RP version in the next month if you're interested in reviewing that. It has alot of info not yet found in the MVC version. See https://github.com/dotnet/AspNetCore.Docs/pull/21023


[Enhancement] fair share scan memory between scan nodes in a query

Why I'm doing:

Right now connector_scan_node_mem_ratio is to limit a single scan node.  We want to extend this variable to all scan nodes in a single query.
Also we want to limit memory usage of all scan nodes cross queries, to avoid OOM when concurrent queries.

What I'm doing:

To accomplish this:

introduce memory share arbitrator to compute how many scan mem limit for a scan node by looking at the chunk source memory usage of this scan operator.
call artibitrator when we update chunk source memory usage. And artibtrator will recompute mem limit for each scan node
add a connector_scan_mem_tracker to limit connector scan operator mem usage. when we are gonna run a chunk source, we will check if memory is enough. if not, chunk source will quit running. And this mechanism is for avoidance of OOM during concurrent queries.

I test this feature on my local env with total memory limit to 30G. And we can succeed to run tpch/q1 with 10 concurrency

Fixes #issue
What type of PR is this:

[ ] BugFix
[ ] Feature
[x] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[ ] 3.2
[ ] 3.1
[ ] 3.0
[ ] 2.5

if this pr is merged, @wyb can consider to add same logic to lake connector by refering to hive_connector.cpp
the following code do several things:

find the largest file as X
the chunk source memory usage can be computed as max(MIN_VALUE, min(X * 1.5, MAX_VALUE))
and this memory usage will be used to compute max concurrent io tasks

void HiveDataSourceProvider::peek_scan_ranges(const std::vector<TScanRangeParams>& scan_ranges) {
    for (const auto& sc : scan_ranges) {
        const TScanRange& x = sc.scan_range;
        if (!x.__isset.hdfs_scan_range) continue;
        const THdfsScanRange& y = x.hdfs_scan_range;
        _max_file_length = std::max(_max_file_length, y.file_length);
    }
}

void HiveDataSourceProvider::default_data_source_mem_bytes(int64_t* min_value, int64_t* max_value) {
    DataSourceProvider::default_data_source_mem_bytes(min_value, max_value);
    // here we compute as default mem bytes = max(MIN_SIZE, min(max_file_length, MAX_SIZE))
    int64_t size = std::max(*min_value, std::min(_max_file_length * 3 / 2, *max_value));
    *min_value = *max_value = size;
}


rustfmt

This PR runs rustfmt on the whole repository. It's a big one (😨), but most of the changes are pretty mechanical. This work is done in the "rustfmt" commit.
This PR also replaces our build script with integration tests, and makes sure that the whole repository matches rustfmt output in CI, so the formatting shouldn't get this out of date again.
Fixes #639, including bonus :)

@Hoverbear ping
This also fixes the build failures on master.


S3 IPF updates

S3 IPF will be updated in April. CS will take them into account in May.
Next delivery is in December. CS will take them into account in Janualry 2022.

In the Case of S2, is it possible to take into account a new baseline in min 2 weeks ?

I think 3 weeks is more realistic, as we will have to update all documentation and rerun the tests.
I would prefer to redeliver all the current baselines with the last corrections,
before going into the new IPF versions.


Version 0.1.0

Updating RAiDER version per #345.
Post-merging, tag this the repo with a new release.

@dbekaert after approving this can merge and tag a new release.
@jhkennedy after we merge this you should be good to go to start the conda recipe. Thanks!

I added @jhkennedy to the repo as developer.


Four more misspellings of disallow

We're adding typos we accept based on the number of times we encountered a specific typo across unique hosts. My analysis shows this suggestion doesn't meet our criteria and so I'm closing the request.


KOGITO-8062: DSL: Refactor environments

@radtriste What's the status of this PR? Still WIP?

@tiagobento yes it is. This is a nice to have. I just have other priorities for now ;)

@ederign @tiagobento all good to be merged

cc @paulovmr


Migration from old mf v1 builds

I have a root application and 20+ mfe on webpack using mf 1.0. When migrating to vite and using this package, will old builds with webpack be supported or will it be necessary to rebuild all microfronts?
Is there a way to dodge webpack without rebuilding all microfronts?

Hi, it's hard to say without trying. This is a very specific scenario.
But why you use https://github.com/module-federation/vite/blob/3815b436c142c144e5c41bfdd5b6638f783e800d/examples/vite-webpack-rspack/webpack/package.json#L42C5-L42C45 in dev dependency ? Is it required for build ?

This is the latest file.
what package do you mean?

"dependencies": {
"react": "^18.3.1",
"react-dom": "^18.3.1",
"@module-federation/vite": "workspace:*"
}
"@module-federation/vite" not directly used in webpack config, but included in package.json (for webpack remote)

Thanks, nice catch, fixed


[ENHANCEMENT] Legend height increased for tall panels

We got feedback that our legend is too scrunched up when using position: 'Bottom'. This PR increases our time series panel's legend size when panels reach a certain height (breakpoint currently set to 300 but this can be adjusted).
Screenshot

Checklist

[x] Pull request has a descriptive title and context useful to a reviewer.
[x] Pull request title follows the [<catalog_entry>] <commit message> naming convention using one of the following catalog_entry values: FEATURE, ENHANCEMENT, BUGFIX, BREAKINGCHANGE, IGNORE.
[x] All commits have DCO signoffs.
[x] Changes that impact the UI include screenshots and/or screencasts of the relevant changes.

Also another thing we should look into is virtualizing the results for panels with many timeseries to help with performance. #optimization

virtualizing the results

For sure, I definitely see what you mean, just tested out a query that return 1000+ timeseries and it was crazy how bad performance was when the legend was enabled compared to no legend.


  Building dependency tree...
  Reading state information...
  Package libstdc++-5-dev is not available, but is referred to by another package.
  This may mean that the package is missing, has been obsoleted, or
  is only available from another source

  Package libgcc-5-dev is not available, but is referred to by another package.
  This may mean that the package is missing, has been obsoleted, or
  is only available from another source

  E: Package 'libgcc-5-dev' has no installation candidate
  E: Package 'libstdc++-5-dev' has no installation candidate

run log is here,
github action is here

The problem here is that the actions tries to install packages for Ubuntu 18.04 (which is the default for the platform input).
You can work around this by adding platform: ubuntu-20.04 to the action's inputs.
However, I'll try to also solve this internally by checking the system the action is running on if no platform input was provided. I'll open a separate issue to track this.

As a matter of fact I was already able to implement the automatic detection. Since you're on the @v1 release track, the next run of your action should automagically fix this 😉


Framebuffer Effects 1.0

This PR is the LUS/renderer compliment to implementing framebuffer effects for MM.
I've added two new custom GBI commands:
G_COPYFB / gDPCopyFB() is used to copy a source framebuffer to a destination framebuffer. Additionally it can be controlled if the copy should execute on only new/unique game frames instead of interpolated frames. This is achieved with the by passing a pointer to a boolean through the graphics command to be set by the renderer once it performs a copy.
G_IMAGERECT / gDPImageRectangle() which is used to render a previously loaded tile (from G_SETTIMGFB) as a rectangle.
Basic support for these commands is added to the GFX debugger.
I've exposed gfx_create_framebuffers so that the game can register the framebuffers it plans to use. These framebuffers can be marked as upscalable and autoresizable. For the case of MM these are fullscreen framebuffers which are resized when the window is resized.
There were a couple typo-ed ratio calculations that were using RATIO_Y for x/width values.
Support for the copy command is added to each renderer (except for WiiU right now).
OpenGL: Performs a blit from the source to the destination buffer. When using fb 0 as the source, we need to copy from the back buffer to avoid copying ImGui windows and to get the current games triangles.
Metal: Performs a blit operation from source to the destination texture. This requires ending the current render encoder creating/executing a blit encoder, then re-creating the render encoder. Various properties have to be setup again on the render buffer to ensure it roughly has everything the previous encoder had (e.g. shaders, viewport, etc). Additionally, the command queue load/store actions need to be set to retain the previous drawable when recreating the render encoders in the same frame.
DirectX: Performs a resource copy from the source texture to the destination texture. If the sizes are identical, we can perform a direct copy, otherwise we have to perform a sub region copy. When MSAA is enabled on the source buffer, then we have to resolve to a single-sampled texture before we copy.
For all three renderers, we have to handle height mismatches to account for the imgui menu bar being open or not.

Some of these changes were inspired by the framebuffer effects being done in the PD repo.

I approve code wise but can't really speak to the graphics code.

Updated the PR to just remove unused code paths that aren't needed for MM. That resolves pretty much most of your feedback @NEstelami
Note, previously build actions weren't enabled in this fork, but are now. The errors are due to code changes from previous PRs. I've resolved any format issues directly related to my changes.


EVEREST-1542 - Extend upgrade tests

The upgrade test was not finished so in this PR we added/fixed:

PXC cluster is included in the upgrade.
Created shell script (percona-everest-ui.sh --pre-upgrade in everest-qa repo) which prepares local environment for the upgrade so it is easy to run it locally.
Added data before upgrade and do a check after upgrade.
Added upgrade for databases so at the moment we do Everest upgrade, operators upgrade and database upgrade.
Unified the environment so that it is completely identical to normal UI tests for easier debugging.
Added database deletion and Everest uninstall check.
Added util functions getVersionServiceURL, getDbClusterAPI, updateDbClusterAPI, getDbAvailableUpgradeVersionK8S for future use.
Tweaked resources so the whole setup can actually run on the cloud instances which we use.

NOTE:
For the util functions the naming rule will be:

Add suffix API if the function is getting/setting something only through api calls.
Add suffix K8S if the function is getting/setting something only in kubernetes.
If the function doesn't have suffix it means it does some actions through UI or it does something irrelevant like some calculation or data transformation.

@tplavcic I think we need an empty commit to trigger the checks, as there was a CI commit that won't trigger those (we'll need a token to fix this issue)


[2.4.0] Consider splitting JdkObsolete into individual checks

Description of the problem / feature request:
A few false-positives for JdkObsolete.
Bugs: what's the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.

import java.net.NetworkInterface;

Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
	NetworkInterface networkInterface = networkInterfaces.nextElement();
}

This gives a JdkObsolete warning about Enumeration. Well, NetworkInterface.getNetworkInterfaces is JDK code, I can't do anything about it. :) ErrorProne should ignore enumerations that come from code that is not mine.

Date someDate = someMethodReturningADate();
Instant instant = someDate.toInstant();

The second line (that is calling toInstant) is marked with a JdkObsolete warning. Well, I'm literally migrating away from a Date at that point so an error should not be triggered I guess. I would think that only new Date should be marked as JdkObsolete not some random usages of Date which I got from somewhere else.
What version of Error Prone are you using?
2.4.0
Have you found anything relevant by searching the web?
Nope.
P.S.

import javax.mail.internet.MimeMessage;

MimeMessage message = new MimeMessage(session);
message.setSentDate(new Date());

I have to pass a Date here, that's what the API expects.

Relates to #1610. The common theme seems to be that the check should match in fewer places, roughly speaking only when:

the obsolete type is explicitly constructed, except in order to satisfy an API external to the compilation unit; or
the obsolete type is used as a field/parameter type; or
the obsolete type is extended.

That first constraint seems rather fuzzy, and the second constraint might require one to introduce additional conversions. :thinking:

except in order to satisfy an API external to the compilation unit

Arguably there's still some signal in that case, it might be worth checking to see if there's a newer version of the library that doesn't use the discouraged type etc., and then use an explicit @SuppressWarnings if the type is still necessary. I realize the other cases are probably more valuable, though.

com.google.common.collect.TreeBasedTable#rowKeySet returns SortedSet rather than NavigableSet

I encountered the same problem.
A library I maintain contains an API that takes an Iterator argument.  These APIs cannot be removed, because doing so would break backward compatibility.  I get a lot of "JdkObsolete" warnings -- one for every method call within those methods' implementations.  These are weird places to issue a warning, for a method that takes an Iterator as an argument.  If you want Error Prone to reject such code, why not issue a single warning on the formal parameter?
However, I think it would be even better to warn only when code creates an Iterator (that is, a new expression).  That way, Error Prone doesn't penalize code that is interfacing with legacy code that uses Iterator.
This is similar to a suggestion above, but I argue that item 2 on that list is not necessary.

To add additional signal, this flags on some java standard library functionality that has existed for a long time, and isn't worth breaking, for example NetworkInterface.getInetAddresses() returns an Enumeration, but it's burdensome to suppress all callers.

Here are some other JDK classes with methods that return an Enumeration.  Clients cannot do anything about this, and it is burdensome to suppress warnings at every use of the returned Enumeration.

java.util.jar.JarFile
java.util.zip.ZipFile
ClassLoader.getSystemResources

The suggestion to replace Stack by ArrayDeque is not always possible.  For example, Stack contains elementAt() but Deque does not.

Another problem with replacing stacks by deques is different iteration order.  For example, new List<>(myStack) returns a list with elements in different order than new List<>(myDeque), if myStack and myDeque are both treated as stacks, using the translation of methods suggested at https://errorprone.info/bugpattern/JdkObsolete.  In other words, following that advice is a breaking behavioral change.

Were were in the process of eliminating all Error Prone warnings (by fixing them, or suppressing where appropriate) and turning many of them into Errors. JdkObsolete was one of the best, but we just upgraded to 2.4.0 and it suddenly added all those warnings about Date. We had to downgrade it back to a warning, but I think we might be better off turning it off all together, which is a shame!
I don't think warning patterns should be modified over time except to fix bugs. It's not backwards compatible.
I believe the Date warning should have been incorporated as a new pattern, rather than piggy back on JdkObsolete, despite the sort of "generic" name of JdkObsolete.

@eraneverlaw warnings can easily be modified over time because they are backwards compatible. Modifications to errors (on the other hand), are not backwards compatible. It sounds like you chose to upgrade JdkObsolete to an error.
The Date API is really bad. Is there a reason you don't want to fix your usages?

@eraneverlaw warnings can easily be modified over time because they are backwards compatible. Modifications to errors (on the other hand), are not backwards compatible. It sounds like you chose to upgrade JdkObsolete to an error.
The Date API is really bad. Is there a reason you don't want to fix your usages?

Adding potentially unlimited number of new warnings (possibly hundreds in our code base) in a new release, is a recipe for a "warnings overload," in which case they are just ignored, including all other warnings. It causes an unstable development process in that sense, even if it compiles.
Our idea was to eliminate all the existing warnings and then prevent them from being continually introduced in our code, by upgrading the warnings into errors. That is a stable solution to the warnings overload, but it's impossible to achieve if new versions of the compilers consider new things as warnings under existing patterns.
It's a shame since it means we might continue to add usages of LinkedList or Stack when an ArrayDeque is preferable. Or who knows, even more StringBuffers!
We definitely will want to look at our usages of Date but at our own pace and available resources.
Another way to look at it - one of the best things about Error Prone, is its granularity of choice of what to ignore (even temporarily,) what to consider warnings, and what to consider errors, but this choice to overload cases to an existing pattern, breaks decisions that depend on that granularity.

Re. "warnings overload" - you must face this when upgrading your JDK and running into new deprecations, no? How do you manage that?
I suppose we could add some degree of configurability to JdkObsolete (e.g., pass a flag of the class names for which you want to disable warnings), but then you're just hiding the problem (since new usages of Date will not be caught).
I'm not sure what the right solution is, other than creating a separate checker for each of the "obsolete" APIs in the JDK (and deleting JdkObsolete. That's a bit messy, but we theoretically could do that...

I like the idea of separate obsolescence checks for each type, we’ve done similar migrations using error-prone alias functionality to cover existing suppressions.
For my teams usage I don’t have a strong opinion about broadening existing checks, but I’d prefer that suppressions are as specific as possible and don’t allow new unintentional violations to appear in future changes.

FYI, the java.util.Date handling has already been split out of JdkObsolete. See https://github.com/google/error-prone/commit/d450119b23e9c7c68fcfbb3927a3250493ac3ad3#diff-065165cb9efc7cfdb26debe40d8ea8cc

Re. "warnings overload" - you must face this when upgrading your JDK and running into new deprecations, no? How do you manage that?
I suppose we could add some degree of configurability to JdkObsolete (e.g., pass a flag of the class names for which you want to disable warnings), but then you're just hiding the problem (since new usages of Date will not be caught).
I'm not sure what the right solution is, other than creating a separate checker for each of the "obsolete" APIs in the JDK (and deleting JdkObsolete. That's a bit messy, but we theoretically could do that...

The deprecation is indeed a problem I have no solution to.
I like both of those ideas.

FYI, the java.util.Date handling has already been split out of JdkObsolete. See d450119#diff-065165cb9efc7cfdb26debe40d8ea8cc

Thanks! Do you know when it will be released?

BTW, another issue - It seems, amazingly, that Hibernate still doesn't support NavigableSet and NavigableMap, 15 years after they were introduced?
https://forum.hibernate.org/viewtopic.php?f=1&t=1009169&view=previous
I don't blame engineers for declaring the static types of TreeSet instances as SortedSet, if only since that name is much more straight forward than NavigableSet - obviously a pretty steep price paid for keeping SortedSet backwards compatible with existing implementations.

re: if (getSomeSet().isEmpty()) { ... }, that change that added java.util.Date also added (or re-added?) handling to report findings in invocations of depreated types. When I moved the Date stuff to a separate check in d450119b23e9c7c68fcfbb3927a3250493ac3ad3 I also made JdkObsolete only report direct uses of the type, not just invocations of methods on 'obsolete' types.
i.e. we report a diagnostic for new SomeObsoleteType(), but not for someObsoleteType.someMethod(), so you won't get a diagnostic for isEmpty() anymore.

re: if (getSomeSet().isEmpty()) { ... }, that change that added java.util.Date also added (or re-added?) handling to report findings in invocations of depreated types. When I moved the Date stuff to a separate check in d450119b23e9c7c68fcfbb3927a3250493ac3ad3 I also made JdkObsolete only report direct uses of the type, not just invocations of methods on 'obsolete' types.
i.e. we report a diagnostic for new SomeObsoleteType(), but not for someObsoleteType.someMethod(), so you won't get a diagnostic for isEmpty() anymore.

We were getting this on Enumeration usages too, so I thought I'd try to migrate away from it, but it turns out even Enumeration#asIterator() gets flagged as obsolete, and as far as I can tell, that's the right thing to migrate to.


Clarify language in git extension for creating new branch from another branch

When using the git extension, the intent is clear when clicking on "+ Create new branch..." and immediately being prompted "Please provide a branch name".

But, when clicking on "+ Create a new branch from..." the intent is ambiguous, since the statement "Please provide a branch name" could refer to the branch from which you wish to base the new branch or the name of the new branch, the latter being what actually happens. I've gotten confused one too many times, and inadvertently typed "develop" for the first prompt, only to be prompted with "Select a ref to create the 'develop' branch from". Whoops, time to start over.

By specifying "Please provide a new branch name...", the intent is clear: the prompt is asking for the name you wish to call the new branch.

Let's swap the pick order, what do you think?

Oh I see you already have a PR for it 👍


Could not determine java version from '10.0.1'[MAC OSX High Sierra]

Current Behavior
While I was compiling jd-gui, it returned a error messege:
Could not determine java version from '10.0.1'

Here's the stacktrace:
* Exception is:
java.lang.IllegalArgumentException: Could not determine java version from '10.0.1'.
	at org.gradle.api.JavaVersion.toVersion(JavaVersion.java:63)
	at org.gradle.api.JavaVersion.current(JavaVersion.java:72)
	at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:32)
	at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
	at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
	at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
	at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
	at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
	at org.gradle.launcher.Main.doAction(Main.java:33)
	at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
	at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
	at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
	at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127)
	at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:56)

Steps to Reproduce (for bugs)
Everything is done in commend-line
Just follow readme file in jd-gui
./gradlew build
Your Environment
PATH setting:
/opt/gradle/gradle-4.7/bin

Java(-version):
$ java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

Java(--version):
$ java --version
java 10.0.1 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

Gradle: (Tried on 4.7 and 4.8.1)(Manully build)
------------------------------------------------------------
Gradle 4.7
------------------------------------------------------------

Build time:   2018-04-18 09:09:12 UTC
Revision:     b9a962bf70638332300e7f810689cb2febbd4a6c

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          10.0.1 ("Oracle Corporation" 10.0.1+10)
OS:           Mac OS X 10.13.4 x86_64

The screenshot clearly shows you are using the gradle wrapper (which is a good idea), and not the version on PATH. So you are using gradle 2.4. Upgrading your wrapper version should work.

(Btw using sudo doesn't sound like a great idea, are you sure you need this ?)

Please use Gradle >= 4.7 as pointed out by @melix.

Hi, @melix I know it's not a good idea, just give it a try though.
@marcphilipp I've tried both as mentioned.
And after I follow instruction from official docs, still got same error.
It looks like still a open issue to me :p.

You can't upgrade the wrapper version with a version of Gradle that doesn't support JDK 10.1 itself (bootstrapping problem). Either:

edit the gradle/wrapper/gradle-wrapper.properties file to select a different distribution
use a Gradle >= 4.7 version of Gradle to run the wrapper update task

@melix Thanks. It turns out jd-gui use ancient gradle build LOL
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip

Hope I'm in not too late, but I fixed it by uninstalling that "10.0.1" version according to the official documentation (It's basically deleting some files found @ /Libraries)
and installing the one at Oracle

@racterub Thanks! It's work! I replaced
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
by
distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip

@luisAzcuaga This really helps!

Point your env ANDROID_HOME to jdk 8 lib dir if you have one

In this case, Im currently have java 10 installed with brew cask and I just remove java 10 and downgrade into java8 using command below.
Uninstall java 10 that installed by brew cask.
brew cask uninstall java

Install java8 using brew cask.
brew tap caskroom/versions
brew cask install java8

Done.

install JDK 8 its working  , remove higher version

thanks guys , this really helped

I think you can close this issue cause can solved by just install Java 8 sdk.

If you have both java8 and java10 installed and want to keep them both, then you can run gradle like this:
PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/:${PATH} gradle bootRun