Review of "Picture of the Day" version 0.3 (5)

Details Page Preview

Get a picture of the day as desktop background or wallpaper. Supports the following sources: NASA Astronomy Picture of the Day (APOD), NASA Earth Observatory Image of the Day, Bing, Wikimedia Featured Image, and Simon Stålenhag artworks.

Extension Homepage
https://github.com/swsnr/gnome-shell-extension-picture-of-the-day

No comments.

Diff Against

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

All Versions

Version Status
47.5 (36) Active
47.4 (35) Active
47.3 (34) Active
47.2 (33) Active
47.1 (32) Active
47.0 (31) Active
46.7 (30) Active
46.6 (29) Active
46.5 (28) Active
46.4 (27) Active
46.3 (26) Inactive
45.15 (25) Active
46.2 (24) Active
45.14 (23) Inactive
46.1 (22) Inactive
46.0 (21) Inactive
45.13 (20) Inactive
45.12 (19) Inactive
45.11 (18) Inactive
45.10 (17) Inactive
45.9 (16) Inactive
45.8 (15) Rejected
45.7 (14) Rejected
45.6 (13) Inactive
45.5 (12) Inactive
45.4 (11) Inactive
45.3 (10) Inactive
45.2 (9) Inactive
45.1 (8) Inactive
45.0 (7) Rejected
0.5 (6) Inactive
0.3 (5) Inactive
0.3 (4) Rejected
0.2.1 (3) Inactive
0.2 (2) Rejected
0.1 (1) Rejected

Previous Reviews on this Version

JustPerfection rejected
1. Please use empty lines between functions, methods, classes, ... https://gjs.guide/extensions/review-guidelines/review-guidelines.html#general-guidelines 2. You cannot create instance of objects in the constructor: - line 17-19 lib/vendor/xmlchars/xmlns/1.0/ed3.js - line 20-26 lib/vendor/xmlchars/xml/1.1/ed2.js - line 19-24 lib/vendor/xmlchars/xml/1.0/ed5.js - line 31-41 lib/vendor/xmlchars/xml/1.0/ed4.js https://gjs.guide/extensions/review-guidelines/review-guidelines.html#only-use-initialization-for-static-resources 3. We can approve the vendor folder right now but if you are going to make it larger in the future, use external libraries/apps instead: https://gjs.guide/extensions/review-guidelines/review-guidelines.html#scripts-and-binaries
Sebastian Wiesner posted a review
I'll check out 2), but before I dive into the code I'd like to clarify 1 and 3: 1) The source of of this extension is in typescript, and what you see is the compiler output; I am not sure I can influence that. There doesn't seem to be an option to preserve the source layout, see eg https://github.com/microsoft/TypeScript/issues/843 As such I'm not sure if I can even address this point. 3) I'm not sure I understand this point. I need to parse XML in this extension, to get data out if RSS feeds. There's no XML parser available for GJS (I asked in the matrix channel), so I vendored the smallest one I could fine. How should I use an external application or library here? Do you mean to suggest I should eg write a Python script to parse XML into JSON and call this as a subprocess, instead of vendoring an XML parser?
JustPerfection posted a review
## 1 Some extensions using TypeScript and they send it with empty new line here. For example: https://github.com/marcinjahn/gnome-quicksettings-audio-devices-hider-extension ## 3 If you are asking for the tools (xq or jtm) and use it via spawn command. users can install them as a dependency for this extension.
Sebastian Wiesner posted a review
## 1 Okay, they reformat the generated JS explicitly. That idea didn't occur to me; I think I can do something similar. ##3 I think relying on some external tool which isn't even packaged widely (xq isn't even in Fedora as far as I can see, and I don't even know what jtm is) for something as simple as XML parsing, makes for a terrible user experience, not to mention the additional complexity of checking the dependency, configuring the path, designing a UI to warn about missing dependencies, making sources optional if dependencies are missing, etc. As a compromise, would you accept an Python 3 script as part of the extension which uses Python's standard library modules elementtree and json to convert XML to JSON?
JustPerfection posted a review
No, It's always better to use gjs instead of something like Python when it's possible. btw, as I mentioned before, it's not needed to fix #3 atm. Please send it with #1 and #2 fix and the package will get approved.
Sebastian Wiesner posted a review
Except, right now it's just impossible to parse XML short of vendoring an XML parser. But seems like I misunderstood you; I thought you had objected to the vendored code, so thanks for the clarification. I'll send a new version around which addresses #1 and #2. Thanks for the review.
Sebastian Wiesner posted a review
Concerning 2), I don't really understand what you'd like me to do. Perhaps I'm misunderstand what you're referring to with "instance" and "constructor", but as far as I can see none of these files creates instances of any objects in a constructor? Are you perhaps referring to the top-level calls to the `new Regexp` constructor? If so, are top-level regex literals okay?
JustPerfection posted a review
Extensions cannot create anything with `new` in global scope.
Sebastian Wiesner posted a review
Okay. That's kind of a weird rule when it comes to JS primitives or POJOs in my opinion 🤷, but I'll interpret it favourably as to say that a regex literal is okay 😎
JustPerfection active
Approved since we are allowing `Regexp` on the updated ego review guidelines: https://gjs.guide/extensions/review-guidelines/review-guidelines.html#only-use-initialization-for-static-resources
Sebastian Wiesner posted a review
Thank you so much ♥