<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Corbel;
        panose-1:2 11 5 3 2 2 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> squeak-dev-bounces@lists.squeakfoundation.org [mailto:squeak-dev-bounces@lists.squeakfoundation.org] <b>On Behalf Of </b>Azka Niazi<br><b>Sent:</b> Thursday, June 20, 2013 11:59 AM<br><b>To:</b> Squeak Developer Mailing List<br><b>Subject:</b> [squeak-dev] No subject<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>Treat me like a beginner. I have two targets:<o:p></o:p></span></p><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>1. I want to document the source code of Scratch.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>2. I want to modify Scratch.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>Below the #'s is what I have already been told through this mailing list.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>Now, the source code provided for Scratch [1] has two files with code inside them; a .SOURCES file and a .CHANGES file. I have two simple questions:<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>What is the purpose of the two files?<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>If I want to change the code in one of these file and see it how does it come out, (how) can that be done?&nbsp;<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hello Azka,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The .sources and .changes files are not changed by hand they are files that act as storage space for the code you write in Smalltalk.&nbsp; The changes file tracks all changes that are made to the system.&nbsp; .sources is a file that holds the code for the image.&nbsp; You can think of a sources file as a starting point and changes adds to it.&nbsp; <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>You change code using browsers in Smalltalk itself.&nbsp; It&#8217;s not a good idea to try to change code in the files.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>I have been able to understand the format of the source code provided. I would like to ask is there is any code which is responsible for creating the OO world of Scratch. The system categories for Scratch objects hold a lot of classes in them. Those classes, along with a lot of other new and old classes have been used to construct Scratch. These classes didn't preexist. Can a file of code not be used to create new classes and system categories?<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>You create new classes using a Smalltalk browser.&nbsp; While you could use a file and file in the file it&#8217;s not a good idea to change code in files.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>Squeak by Example [8] talks about a 'hierarchy browser' which is easy to find with the files provided with it. Is there a similar kind of thing to explore Scratch objects? If yes, how to get to it. If no, how do can I trace the hierarchy of inheritance objects used to make Scratch.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>For scratch you will need to use a development image, or break into the development environment to access the development tools.&nbsp; Haven&#8217;t tried it but maybe that is where you are having difficulty.&nbsp; I would start here: <a href="http://download.scratch.mit.edu/source-code/ScratchSource1.4.zip">http://download.scratch.mit.edu/source-code/ScratchSource1.4.zip</a> &nbsp;&nbsp;<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>A sealed image can lock out the dev tools, it may even strip out the development tools completely.&nbsp; Also a sealed image does not normally require a changes file since it is not used for the purpose of changing code.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p></div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>All the best,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:14.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><b><span style='font-size:14.0pt;font-family:"Corbel","sans-serif";color:#4F81BD'>Ron Teitelbaum<o:p></o:p></span></b></p><p class=MsoNormal><i><span style='font-size:9.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Head Of Engineering<o:p></o:p></span></i></p><p class=MsoNormal><b><span style='font-size:9.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>3d Immersive Collaboration Consulting<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><a href="mailto:ron@3dicc.com"><span style='color:blue'>ron@3dicc.com</span></a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Follow Me On Twitter: <a href="https://twitter.com/RonTeitelbaum"><span style='color:blue'>@RonTeitelbaum</span></a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><a href="http://www.3dicc.com/"><span style='color:blue'>www.3dicc.com</span></a> <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:8.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><a href="https://plus.google.com/u/0/b/108936249366287171125/108936249366287171125/posts"><span style='color:blue'>3d ICC on G+</span></a><o:p></o:p></span></p></div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'>Thanks,<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#444444'>Azka</span><span style='font-family:"Calibri","sans-serif"'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#444444'>##################################</span><span style='font-family:"Calibri","sans-serif"'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#444444'>Scratch uses the Morphic UI on a Squeak image with a virtual machine underneath. The Squeak version is, I think, 2.8 (as opposed to 4.4 which is about to come out) and came out in 2005. The important difference is that the virtual machine has changed. Modern vms are closure complete and have a JIT.&nbsp;<br><br>To see Squeak 2.8 when it was released. [7]<br>For some videos on Scratch from a Squeak perspective [3-6].<br>An introductory book on Squeak. [8]<br>Source code on the virtual machines. [2].<br>The Scratch image that will not work on a modern Squeak virtual machine. [1]<br>But will work on a virtual machine from a Squeakland Etoys release. [10]<br>As you first expressed interest with how Scratch interfaces with the hardware you may need to join the VM-Beginners list [9].<br></span><span style='font-family:"Calibri","sans-serif"'><br><span style='color:#444444'>[1]&nbsp;</span><a href="http://info.scratch.mit.edu/Scratch_Source_Code_Licensed_Code" target="_blank"><span style='color:#0068CF'>http://info.scratch.mit.edu/Scratch_Source_Code_Licensed_Code</span></a><span style='color:#444444'><br>[2]&nbsp;</span><a href="http://squeakvm.org/index.html" target="_blank"><span style='color:#0068CF'>http://squeakvm.org/index.html</span></a><span style='color:#444444'><br>[3]&nbsp;</span><a href="http://www.youtube.com/watch?v=wqV3nGD9N7U" target="_blank"><span style='color:#0068CF'>http://www.youtube.com/watch?v=wqV3nGD9N7U</span></a><span style='color:#444444'><br>[4]&nbsp;</span><a href="http://www.youtube.com/watch?v=XwmQ1DoEjsA" target="_blank"><span style='color:#0068CF'>http://www.youtube.com/watch?v=XwmQ1DoEjsA</span></a><span style='color:#444444'><br>[5]&nbsp;</span><a href="http://www.youtube.com/watch?v=uGyfzw_gePo" target="_blank"><span style='color:#0068CF'>http://www.youtube.com/watch?v=uGyfzw_gePo</span></a><span style='color:#444444'><br>[6]&nbsp;</span><a href="http://www.youtube.com/watch?v=YmTk9t71jZ4" target="_blank"><span style='color:#0068CF'>http://www.youtube.com/watch?v=YmTk9t71jZ4</span></a><span style='color:#444444'><br>[7]&nbsp;</span><a href="http://ftp.squeak.org/2.8/" target="_blank"><span style='color:#0068CF'>http://ftp.squeak.org/2.8/</span></a><span style='color:#444444'><br>[8]&nbsp;</span><a href="http://squeakbyexample.org/" target="_blank"><span style='color:#0068CF'>http://squeakbyexample.org/</span></a><span style='color:#444444'><br>[9]&nbsp;</span><a href="http://lists.squeakfoundation.org/pipermail/vm-beginners" target="_blank"><span style='color:#0068CF'>http://lists.squeakfoundation.org/pipermail/vm-beginners</span></a><span style='color:#444444'><br>[10]&nbsp;</span><a href="http://www.squeakland.org/" target="_blank"><span style='color:#0068CF'>http://www.squeakland.org/</span></a><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif";color:#444444'>Courtesy of Chris&nbsp;Cunnington; when I said I need to understand Scratch (get about its source code) and how does it interface with the hardware.</span><span style='font-family:"Calibri","sans-serif"'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='font-family:"Calibri","sans-serif"'><o:p>&nbsp;</o:p></span></p></div></div></div></body></html>