The best way is to collect logs & crash reports locally, and if the app crashes you offer an option to send the report directly to you.
That's what I do in my apps. And it turns out, that actually increased the quality of the bug reports I got, because users were more invested and willing to cooperate.
Some server stuff is hit too! I learned about this pattern through the BGP daemon 'frr'. No idea how many server packages are/may be captured by Snap, but it's worth being aware of. Imagine my surprise. Remove it and bam, no networking.
Doing a quick test on 24.04: on a system without snapd installed, `apt install frr` installs packages and not any Snap stuff. Will have to see about 26.04 when I get a moment.
Thanks for digging in, as I mentioned earlier in this thread/another [lost track], I haven't messed with this in at least two LTS releases. Good to see it's aware at install time; this wasn't always the case.
How about the inverse, purging? At one point, removing Snap would lose BGP announcements [through the loss of the 'frr' software/service it was managing].
Anyway, I'm willing to believe most of my install/dependency-resolution pain was inspired by [and limited to] 18.04 or whatever was immediately after. We had a fleet of systems inadvertently moved to Snap, only learned through a loss of announcements on removal.
edit: Tested on a 24.04 box I had laying around; removing Snap does indeed still rip out things one might want:
Likely fine in your case, where if memory serves, you're removing Snap in the image/provisioning stage. Cooks in busy kitchens may still be surprised, however. The real problem appears solved: 'you' get the software 'you' asked for.
I've rewritten a python tool in go, 1:1. And that turned something that was so slow that it was basically a toy, into something so fast that it became not just usable, but an essential asset.
Later on I also changed some of the algorithms to faster ones, but their impact was much lower than the language change.
I don’t know if people think this way anymore, but Python gained traction to some degree as a prototyping language. Verify the logic and structures, then implement the costly bits or performance sensitive bits in a more expense-to-produce more performant language.
Which is only to say: that rewrite away from python story can also work to show python doing its job. Risk reduction, scaffolding, MVP validation.
> Decompiling and re-engineering proprietary code has never been easier. You almost don't even need the source code anymore. The object code can be examined by your LLM, and binary patches applied.
We've always been able to do that, but that's not the point. There's a reason free software licenses require the "the preferred form of the work for making modifications to it" to be opened.
One of the core tenets is that any user should have the exact same access as the original developers.
Do you check in binaries into your git history? If so, you should mark a commit as generated, and the commit message (plus repository state) should be enough to recreate it 1:1.
Similarly, if I use e.g. jextract or uniffi to generate Java interfaces from C code and check that in, I'll create tooling to automatically run those, and the commit will be attributed to that tooling.
If I copy a clean solution from stackoverflow, I put it into a separate file with the appropriate license header. IMO that's the absolute minimum degree of separation that any imported code, whether from StackOverflow or AI, should have.
Even if I then edit it to adapt and modify it, I'll just add my copyright header, but I can't replace/remove the original one.
Jaywalking is only illegal if there's a crossing less than 50m away. (And even then it's only a misdemeanor, not a crime).
That also means that city planners have to balance between people jaywalking, putting crossings everywhere, and how crossings slow down traffic.
And every time a car makes a turn, pedestrians automatically have priority. Which creates an implicit zebra crossing.
The only roads exempt from this are autobahn/motorways. These are by law prohibited from having direct access to anything.
That's IMO also a way for the US to get out of its current situation. Set up a rule like that, with a large distance at the beginning, and slowly reduce it over the next few years, forcing local planners to introduce additional crossings, which also reduces through traffic. The separation of streets vs autobahn also mostly prevents stroads.
> And every time a car makes a turn, pedestrians automatically have priority. Which creates an implicit zebra crossing.
Only for turning traffic, though, i.e. as a pedestrian you still need to yield to traffic coming from the side street. There was some talk of having pedestrians participate more fully in right-of-way-rules, too, i.e. if the side street has a yield/stop sign, traffic would have to yield to crossing pedestrians, too, but so far that idea didn't get anywhere.
I believe most jurisdictions in the US have largely the same framework. At least everywhere I've lived all street corners were implicit pedestrian crossings with a legal requirement (often blatantly ignored) that vehicles yield. Similarly jaywalking is a misdemeanor and only applies within a certain distance of a crossing.
The only situations where it's enforced (from what I've seen so obviously biased) is major highways, city streets with dense traffic and a marked crossing within half a block, and when they want to search someone for contraband. In the latter case it's just an excuse to stop and harass you in the hopes they will manage to generate sufficient articulable suspicion to justify a search.
Google already knows whether an app is being installed from an app store, such as fdroid, or not.
Just like they allow installing apps from the Play Store without the 24h verification, they should allow installing apps from F-Droid or the Epic Games Store without verification.
That's what I do in my apps. And it turns out, that actually increased the quality of the bug reports I got, because users were more invested and willing to cooperate.
reply