Discuss Scratch

bharvey
Scratcher
1000+ posts

Snap! user discussion

As of today:

Users: 202,042
Projects: 1,639,027

PullJosh
Scratcher
1000+ posts

Snap! user discussion

bharvey wrote:

As of today:

Users: 202,042
Projects: 1,639,027
Holy smokes! I had no idea the site was so large. Really excited to see what's out there once the new homepage/social site is released.
CatIsFluffy
Scratcher
100+ posts

Snap! user discussion

bharvey wrote:

CatIsFluffy wrote:

In the matrix watcher, stuff like 2.2222222e-16 looks like 2.22222. Please fix, it's really confusing.
You can resize the watcher (by its bottom right corner) and then resize the columns (by dragging between the column headers).
I know how to resize watchers, but It's nonobvious that you can resize columns. Also, you still shouldn't cut off the exponent.
badatprogrammingibe
Scratcher
500+ posts

Snap! user discussion

Jens wrote:

Can you elaborate some more wrt license issue?
Also, what is your intended use of the Snap! source code? How can we help you make it happen?
I'm sure we'll find a solution!
As snap! is licensed under the AGPL, it violates the freedom to study how the program works, and change it so it does your computing as you wish (freedom 1), forcing one to have to share modifications, even if they are used exclusively for private use.
As snap! is essentially proprietary as a result of this, I can't use it.
This would change if Snap! was licensed under the GPL (essentially the AGPL without the clause restricting freedom 1), or some other free software license (preferably the GPL.)
Jens
Scratcher
100+ posts

Snap! user discussion

Being a trained lawyer and having been a longtime attorney I so don't understand the nerd-wars around open-source licenses. I also don't much care for them. Gosh, this isn't even about gun control! My understanding of the license is: “Here's our code, you're free to do whatever you wish with it, and please share your stuff like we share ours”. What's wrong with that kind of reciprocity? How does that “violate” your “freedom to study how the program works”?

badatprogrammingibe
Scratcher
500+ posts

Snap! user discussion

Jens wrote:

Being a trained lawyer and having been a longtime attorney I so don't understand the nerd-wars around open-source licenses. I also don't much care for them. Gosh, this isn't even about gun control! My understanding of the license is: “Here's our code, you're free to do whatever you wish with it, and please share your stuff like we share ours”. What's wrong with that kind of reciprocity? How does that “violate” your “freedom to study how the program works”?

What you are describing is the GPL, not the AGPL.
The AGPL requires all modifications to be shared, even if they are private. Say I wanted to modify the source code of snap! to be able to send http requests. Even if this would just be intended for myself, and this modification would never be shared with anyone else, I would be required by the AGPL to share the modifications, otherwise I would be breaking the law.

This example gets worse when say, I am incapable of the ability to release the code for my modifications. Say I am working in a place without internet, or restricted internet, and I am unable to release the code. Under the AGPL, I wouldn't be able to modify the program at all.
bharvey
Scratcher
1000+ posts

Snap! user discussion

badatprogrammingibe wrote:

The AGPL requires all modifications to be shared, even if they are private.
I believe you are misrepresenting the license. If you make your own version of Snap! and don't run a public server, you have no obligations under the license. But for web-based software, running a server without distributing source is just like distributing a binary without source in standalone software.

Basically, all else being equal, I trust Stallman's opinion about how to license free software more than the opinion of some random person about whom I know nothing. If you can quote the actual text in the license that you think requires you to share source when you aren't running a public service, I'll re-read it.

bharvey
Scratcher
1000+ posts

Snap! user discussion

PullJosh wrote:

Holy smokes! I had no idea the site was so large.
Still tiny compared to Scratch, but getting there. Our best estimate without careful analysis of each project (based on matching the project name against a regexp) is that about half a million of those are specific assignments in a BJC class. There are other curricula using Snap!, so it'd be hard to find out how many altogether are school assignments. I suppose eventually we can do longitudinal studies of activity by each specific user, and consider users whose projects are all in the same calendar semester to be students in Snap!-based courses.

bharvey
Scratcher
1000+ posts

Snap! user discussion

CatIsFluffy wrote:

I know how to resize watchers, but It's nonobvious that you can resize columns. Also, you still shouldn't cut off the exponent.
Yes, you're right, it'd be better to cut off the mantissa. I'll file a feature request about that. The current behavior is based on trying to make 2D list display blindingly fast, even at the cost of not seeing everything. In particular, in a perfect world we'd examine every value in a column, and make the width of that column such that everything fits, but that would require visiting every row, and we want to be able to handle millions of items at speed. But possibly we could take the default column width and use that to determine the number of significant digits to display.

Jens
Scratcher
100+ posts

Snap! user discussion

badatprogrammingibe wrote:

Say I wanted to modify the source code of snap! to be able to send http requests
just to make sure, you *do* know about Snap's URL block, which is exactly that: send http and https requests. Plus there's a “web services” library that lets you compose more complex requests, including protocols, headers, actions, and specific payloads.

Last edited by Jens (Feb. 19, 2018 07:37:09)

badatprogrammingibe
Scratcher
500+ posts

Snap! user discussion

bharvey wrote:

badatprogrammingibe wrote:

The AGPL requires all modifications to be shared, even if they are private.
I believe you are misrepresenting the license. If you make your own version of Snap! and don't run a public server, you have no obligations under the license. But for web-based software, running a server without distributing source is just like distributing a binary without source in standalone software.

Basically, all else being equal, I trust Stallman's opinion about how to license free software more than the opinion of some random person about whom I know nothing. If you can quote the actual text in the license that you think requires you to share source when you aren't running a public service, I'll re-read it.
I seem to have slightly misinterpreted the AGPL text. However, it doesn't explicitly say “running a public service,” it says the following:

AGPL license text wrote:

13. Remote Network Interaction; Use with the GNU General Public License.

Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.
This means that regardless of whether it happens to be a public service, it means if I interact at all remotely through a computer network (whether that be something as simple as sending a single simple http request, or running an entire SoaS) and I had modified the snap! code, I would have to host the code I have modified.



Jens wrote:

badatprogrammingibe wrote:

Say I wanted to modify the source code of snap! to be able to send http requests
just to make sure, you *do* know about Snap's URL block, which is exactly that: send http and https requests. Plus there's a “web services” library that lets you compose more complex requests, including protocols, headers, actions, and specific payloads.
Sorry, I didn't really notice that when looking through the snap blocks. But anyways, this example can be replaced with a variety of things one might modify snap to do.
frodewin
Scratcher
500+ posts

Snap! user discussion

I would ask for some help in optimizing a converted Scratch project.

The project is rather simple with a couple of sprites showing a frog jumping from one water lily leaves to another.

The Scratch project is here: https://scratch.mit.edu/projects/201881690/
Snap! version: https://snap.berkeley.edu/snapsource/snap.html#present:Username=frodewin&ProjectName=A%20day%20at%20the%20pond

I converted it with Snapin8r2 to Snap, with the following results:
  • when I open the project in my account it displays all sprites properly. When I run it with the link above without being looged in, two sprites have failed to switch on their correct costume, the first water lily has the snap turtle look, while the Jump-O-Meter sprite still has the thumbnail costume. Clicking the green traffic light multiple times solves this, but why do I have this error (there is initialization code for putting on the correct costumes) and why does it work properly when run from the editor?
  • the execution speed is much slower in Snap! although this project is simple. Can I do something about this?




You can also find my best projects here or stop at my profile and say hi!
Jonathan50
Scratcher
1000+ posts

Snap! user discussion

When it says “all users interacting with it remotely through a computer network”, that just refers to people actually using your modified version, not servers that your modified version connects to.

Not yet a Knight of the Mu Calculus.
badatprogrammingibe
Scratcher
500+ posts

Snap! user discussion

Jonathan50 wrote:

When it says “all users interacting with it remotely through a computer network”, that just refers to people actually using your modified version, not servers that your modified version connects to.
It doesn't specify that in the license.
If the license is vague, one must not assume the most liberal interpretation.
Jens
Scratcher
100+ posts

Snap! user discussion

Hi frodewin,

very cool project! Looking into the speed issue right now I did find out that if I remove the (redundant) WARP block from the “control frog” method's definition, and change the frog's “render” broadcast (inside the “start game” to “broadcast” (instead of “broadcast and wait”) the speed of the game increases dramatically.

I remember that I changed how messages are triggered a while ago, to more closely match Scratch's newly changed behavior. This is always a trade-off between making code execution “followable” and bumming out display cycles to the scripts run faster at the cost of visualizing how they run. Your example makes me want to revisit the “broadcast and wait” mechanism to find out whether I can bum out another display cycle there (which is apparently what Scratch is doing nowadays).

Still need to look into the other issues.
frodewin
Scratcher
500+ posts

Snap! user discussion

Jens wrote:

Hi frodewin,

very cool project! Looking into the speed issue right now I did find out that if I remove the (redundant) WARP block from the “control frog” method's definition, and change the frog's “render” broadcast (inside the “start game” to “broadcast” (instead of “broadcast and wait”) the speed of the game increases dramatically.

I remember that I changed how messages are triggered a while ago, to more closely match Scratch's newly changed behavior. This is always a trade-off between making code execution “followable” and bumming out display cycles to the scripts run faster at the cost of visualizing how they run. Your example makes me want to revisit the “broadcast and wait” mechanism to find out whether I can bum out another display cycle there (which is apparently what Scratch is doing nowadays).

Still need to look into the other issues.

Thanks a lot for looking into it. Changing the rog's “render” broadcast and wait to “broadcast” worked well. But after removing the warp in the control frog method, the frog does not sink anymore when missing a leaf, which is very odd, because the “splash and blubb” sound is played and the code for sinking is right below this block.

when I receive [restart v]
stop [other scripts in sprite v]
play sound [splash and blubb v]
repeat until <(y position) < [-148]>
if <(y position) > [-120]> then
change y by (-2)
else
change y by (-1)
change [ghost v] effect by (5)
wait (0.02) secs
end
end

The condition (y position) < -148 is definitely true at this point.

Last edited by frodewin (Feb. 19, 2018 11:34:34)




You can also find my best projects here or stop at my profile and say hi!
_nix
Scratcher
1000+ posts

Snap! user discussion

badatprogrammingibe wrote:

I seem to have slightly misinterpreted the AGPL text. However, it doesn't explicitly say “running a public service,” it says the following:

AGPL license text wrote:

13. Remote Network Interaction; Use with the GNU General Public License.

Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.
This means that regardless of whether it happens to be a public service, it means if I interact at all remotely through a computer network (whether that be something as simple as sending a single simple http request, or running an entire SoaS) and I had modified the snap! code, I would have to host the code I have modified.
I am not a lawyer (unlike Jens ), but it seems to me that, if you are the only user, then you already have access to the source code? After all, you wrote it. You can easily access it; just ssh into your server or whatever. It facilitates copying of the software, because, well, it works for you, and you're the only user.

I might be misinterpreting what you said, but - If you use Snap! as an HTTP server itself, would it be that difficult to make a GitHub (or notabug or suchever) repository and throw the code there?

══ trans autistic lesbian enbydoggirls // 16 17 18 19 20, she/they
sparrows one word to the paragraph // <3 // ~(quasar) nebula
Jens
Scratcher
100+ posts

Snap! user discussion

Hi frodewin,

thanks for the hint to optimizing “broadcast and wait” for atomic subroutines in Snap! that'll be in the next maintenance release. So, I've dived just a little bit more into your project, and tweaked a few minor things, and now your game runs reasonably fast in Snap! for me, even faster than in Scratch, I think:

https://snap.berkeley.edu/snapsource/snap.html#present:Username=jens&ProjectName=A%20day%20at%20the%20pond
badatprogrammingibe
Scratcher
500+ posts

Snap! user discussion

_nix wrote:

badatprogrammingibe wrote:

I seem to have slightly misinterpreted the AGPL text. However, it doesn't explicitly say “running a public service,” it says the following:

AGPL license text wrote:

13. Remote Network Interaction; Use with the GNU General Public License.

Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.
This means that regardless of whether it happens to be a public service, it means if I interact at all remotely through a computer network (whether that be something as simple as sending a single simple http request, or running an entire SoaS) and I had modified the snap! code, I would have to host the code I have modified.
I am not a lawyer (unlike Jens ), but it seems to me that, if you are the only user, then you already have access to the source code? After all, you wrote it. You can easily access it; just ssh into your server or whatever. It facilitates copying of the software, because, well, it works for you, and you're the only user.

I might be misinterpreting what you said, but - If you use Snap! as an HTTP server itself, would it be that difficult to make a GitHub (or notabug or suchever) repository and throw the code there?
Yeah but according to the AGPL, you can't just “throw” the code there.

AGPL wrote:

5. Conveying Modified Source Versions.

You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:

a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.

A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
I have to do all of the above before I can share the code, so I can't just “simply” throw the code up to a code-sharing site.

Last edited by badatprogrammingibe (Feb. 19, 2018 20:23:30)

Jonathan50
Scratcher
1000+ posts

Snap! user discussion

badatprogrammingibe wrote:

Jonathan50 wrote:

When it says “all users interacting with it remotely through a computer network”, that just refers to people actually using your modified version, not servers that your modified version connects to.
It doesn't specify that in the license.
If the license is vague, one must not assume the most liberal interpretation.
Well, that was the intention at least, (the FSF said this about the previous version of the APSL: ‘This version fixes two of the fatal flaws, but one still remains: any modified version “deployed” in an organization must be published. The APSL 1.2 has taken two large steps towards a free software license, but still has one more large step to take before it qualifies’ so I'd be really surprised if they would put that requirement in their own license) and I don't really think anyone will interpret “users interacting with it remotely” as including any servers your modified version connects to.

Last edited by Jonathan50 (Feb. 19, 2018 20:56:17)


Not yet a Knight of the Mu Calculus.

Powered by DjangoBB