<div dir="ltr">Hi Raúl,<div><br></div><div style>My name is Marion.  I am a student applying for the GSoC.  I would like to work on a Python export feature for Turtle Blocks.  Here is a brief description of my project proposal:</div>
<div style><br></div><div style>'Turtle Blocks Python export' lets the user export their programming project from the Turtle Blocks activity to a Python script. The generated Python code can be run outside of Turtle Blocks, for example from the command line or in the Pippy IDE.<br>
This tool is designed for users who are already proficient Turtle Block programmers and want to move on to text-based programming. It helps them transfer their knowledge and skills from block-based to text-based programming, as they can see their own creations in a new programming language. Thus, they can focus on the new language rather than the content of the program.<br>
</div><div style><br></div><div style>You can find a more detailed description on</div><div style><a href="http://wiki.sugarlabs.org/go/Summer_of_Code/2013/Turtle_Blocks_Python_export">http://wiki.sugarlabs.org/go/Summer_of_Code/2013/Turtle_Blocks_Python_export</a><br>
</div><div style><br></div><div style>One of the questions I have to answer for my application is, 'If your project is successfully completed, what will its impact be on the Sugar Labs community?' I am required to include answers from the Sugar Labs community.  Walter has already given me his, and I would like to ask you for your answer to this question.</div>
<div style><br></div><div style>Thank you very much.</div><div style>Marion</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/4/30 Raúl Gutiérrez Segalés <span dir="ltr"><<a href="mailto:rgs@itevenworks.net" target="_blank">rgs@itevenworks.net</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
sorry for the late reply - I am very happy to help with this. Please<br>
ping me on #sugar or mail me at will.<br>
<span class="HOEnZb"><font color="#888888"><br>
-rgs<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On 28 April 2013 20:18, Walter Bender <<a href="mailto:walter.bender@gmail.com">walter.bender@gmail.com</a>> wrote:<br>
> On Sun, Apr 28, 2013 at 7:36 PM, Marion Zepf <<a href="mailto:marion.zepf@gmail.com">marion.zepf@gmail.com</a>> wrote:<br>
>><br>
>> Hi Walter,<br>
>><br>
>> Thank you for your help with the terminology.<br>
>><br>
>> You're right, a side-by-side view of blocks and python code is very<br>
>> demanding, not just in terms of implementing it, but also during run time.<br>
>> We would have to capture every modification to either side and transform the<br>
>> code back and forth a lot.  Probably I should leave that for a future<br>
>> project.<br>
>> But I will keep it in mind and regard the export funtionality as part of a<br>
>> bigger project with this side-by-side view as its goal.  That gives me some<br>
>> guidance for upcoming design decisions.<br>
>><br>
>> As I'm working on my project proposal, I came accross SugarLab's<br>
>> application template:<br>
>> <a href="http://www.google-melange.com/gsoc/org/google/gsoc2013/sugarlabs2013" target="_blank">http://www.google-melange.com/gsoc/org/google/gsoc2013/sugarlabs2013</a><br>
>> Point 1 under "YOU AND THE COMMUNITY" asks for the impact of my project on<br>
>> the SugarLabs community.  It says I should give my own answer plus two from<br>
>> the community.  Would you mind giving me yours?  And how can I get other<br>
>> community members to answer this question for me?  Shall I use this mailing<br>
>> list or another, or IRC?<br>
><br>
><br>
> I'll write something up. Also, I've CC'd Raul, whom may be able to do the<br>
> same.<br>
><br>
>><br>
>><br>
>> I would also like to know whether I need a full development environment of<br>
>> Sugar set up, since I only work on one activity.  The template requires it<br>
>> in point 1 under "Miscellaneous".<br>
><br>
><br>
> I think you should get the whole environment running both to experience TA<br>
> in the Sugar context (I think it is much nicer there) and to get a sense of<br>
> how all of the piece fit together (for example, I could imagine using the TA<br>
> Python output in the Python editor, Pippy, that comes with Sugar).<br>
>><br>
>><br>
>> As a rough outline of my schedule, do you think the following is realistic<br>
>> and in accordance with the requirements/ guidelines?<br>
>> 3 weeks: determine what code needs to be shared by TurtleArt and the<br>
>> exported code, and restructure the modules to isolate this part<br>
>> 3 weeks: get first transformation from a block to python code working<br>
>> (only for one or a few example blocks)<br>
>> midterm evaluation<br>
>> 6 weeks: transformations of all other blocks to python code<br>
><br>
><br>
> Sounds about right.<br>
>><br>
>><br>
>> Regarding the missing documentation, maybe I can fill some gaps while I<br>
>> get familiar with the code before the coding phase starts.  I know that this<br>
>> is harder to do once you are familiar with the code because then you<br>
>> suddenly take lots of things for granted that would need to be explained.<br>
><br>
><br>
> +1<br>
>><br>
>><br>
>> Thank you.<br>
>> Marion<br>
>><br>
>><br>
>> 2013/4/28 Walter Bender <<a href="mailto:walter.bender@gmail.com">walter.bender@gmail.com</a>><br>
>>><br>
>>> On Sat, Apr 27, 2013 at 5:58 PM, Marion Zepf <<a href="mailto:marion.zepf@gmail.com">marion.zepf@gmail.com</a>><br>
>>> wrote:<br>
>>>><br>
>>>> Hi Walter,<br>
>>>><br>
>>>> Sorry I always take so long to answer.  I'm planning to devote more time<br>
>>>> to this project in the coming weeks.<br>
>>><br>
>>><br>
>>> No problem. I've been busy too.<br>
>>><br>
>>>><br>
>>>><br>
>>>>> I think the code should run standalone, but it will require importing<br>
>>>>> some modules from turtlebloicks. The idea would be to refactor turtleblocks<br>
>>>>> to be able to use those same modules.<br>
>>>><br>
>>>> I'm not sure I understand what you mean by "refactor turtleblocks".  Do<br>
>>>> you mean the code that's necessary for running exported python code should<br>
>>>> be put into an extra module for easy importing?  Then it could be shared by<br>
>>>> the TurtleBlocks code and all exported code.<br>
>>><br>
>>><br>
>>> That is exactly what I had in mind. In part, I want to make the code<br>
>>> easier to understand.<br>
>>><br>
>>>><br>
>>>><br>
>>>> Taking this a little farther, what do you expect users to do with the<br>
>>>> exported code?  Of course, it's supposed to help them with the step from<br>
>>>> block-based programming to writing code in a 'real' programming language.<br>
>>>> But how exactly does this export feature achieve that?<br>
>>><br>
>>><br>
>>> Not really sure. This is somewhat of an experiment.<br>
>>><br>
>>>><br>
>>>> My guess would be that the kids would create some code using<br>
>>>> TurtleBlocks, export it to python code, and have a look at it.  Then they<br>
>>>> would go back to TurtleBlocks and modify their code to see how that changes<br>
>>>> the python code.  This way, they would learn the connection between the<br>
>>>> blocks and the python code step-by-step.  Do you think this is a realistic<br>
>>>> learning scenario?  If so, I think a side-by-side view of blocks and python<br>
>>>> code (with instant synchronization between the two) would be more helpful<br>
>>>> than a simple export feature.<br>
>>><br>
>>><br>
>>> You may be correct. I have hesitated to go too far down this path because<br>
>>> it is complex and inherently not very robust. That said, it is something we<br>
>>> should consider.<br>
>>><br>
>>> There are some other "debugging" options we should explore as well, such<br>
>>> as single-stepping through the code, or running the code backwards. (I<br>
>>> recently introduced the idea of break points to make debugging easier.)<br>
>>><br>
>>>><br>
>>>> I'm also slowly starting to understand the structure of the code and to<br>
>>>> find out which parts are relevant to the project I want to do.  I'm a bit<br>
>>>> confused about the terminology, though.  Could you please explain what<br>
>>>> primitives, docks, and connections are?  I have already found out that the<br>
>>>> 'name' attribute of a block specifies which prototype/ template block the<br>
>>>> user picked from the toolbars to create this block.  But then I'm not sure<br>
>>>> what the 'type' attribute stands for.  Do you have a dictionary or other<br>
>>>> documentation of the terminology used in TurtleBlocks somewhere?<br>
>>><br>
>>><br>
>>> Other than the inline comments, I've not done a very good job of<br>
>>> documenting the internal structure. (Something else we should add to the<br>
>>> list.)<br>
>>><br>
>>> primitives are the Python code associated with blocks<br>
>>> docks and connections are the plumbing: where the blocks connect to one<br>
>>> and another to constitute program flow. Connection 0 is always the way into<br>
>>> a block; connection n is always the way out of a block. There may be<br>
>>> additional (lateral) connections as well.<br>
>>> type is used to distinguish between blocks that are part of a program<br>
>>> from blocks that are used as prototypes (on the palettes) to make other<br>
>>> blocks, or blocks in the trash.<br>
>>><br>
>>> Hope that helps.<br>
>>><br>
>>> -walter<br>
>>>><br>
>>>><br>
>>>> Thank you.<br>
>>>> Marion<br>
>>>><br>
>>>><br>
>>>> 2013/4/24 Walter Bender <<a href="mailto:walter.bender@gmail.com">walter.bender@gmail.com</a>><br>
>>>>><br>
>>>>><br>
>>>>><br>
>>>>><br>
>>>>> On Wed, Apr 24, 2013 at 10:43 AM, Marion Zepf <<a href="mailto:marion.zepf@gmail.com">marion.zepf@gmail.com</a>><br>
>>>>> wrote:<br>
>>>>>><br>
>>>>>> Hi Walter,<br>
>>>>>><br>
>>>>>> Thank you for the tips.  I now have a development version of only<br>
>>>>>> TurtleBlocks running in GNOME.<br>
>>>>>><br>
>>>>>> I've also had a brief look at tabasics.py and talogo.py.  tabasics is<br>
>>>>>> very easy to understand, but I'll probably take a little longer for talogo.<br>
>>>>><br>
>>>>><br>
>>>>> talogo is a bit complex.<br>
>>>>><br>
>>>>>><br>
>>>>>>  Can I ask you my beginner's questions while I go through it?<br>
>>>>><br>
>>>>><br>
>>>>> Sure.<br>
>>>>>><br>
>>>>>><br>
>>>>>> As for the purpose of the project, I was wondering where the generated<br>
>>>>>> code is supposed to run.  Is it supposed to be self-contained, so it can be<br>
>>>>>> run on other machines that don't have TurtleBlocks installed, or is it<br>
>>>>>> supposed to run only in connection with TurtleBlocks?  If the latter is the<br>
>>>>>> case, should people include the code via the tamyblock module and the<br>
>>>>>> corresponding block, or do we also need conversion from python code back to<br>
>>>>>> TurtleBlock internal code?<br>
>>>>><br>
>>>>><br>
>>>>> I think the code should run standalone, but it will require importing<br>
>>>>> some modules from turtlebloicks. The idea would be to refactor turtleblocks<br>
>>>>> to be able to use those same modules.<br>
>>>>><br>
>>>>> regards.<br>
>>>>><br>
>>>>> -walter<br>
>>>>><br>
>>>>>><br>
>>>>>><br>
>>>>>> Thank you.<br>
>>>>>> Marion<br>
>>>>>><br>
>>>>>><br>
>>>>>> 2013/4/21 Walter Bender <<a href="mailto:walter.bender@gmail.com">walter.bender@gmail.com</a>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> On Sun, Apr 21, 2013 at 8:07 AM, Marion Zepf <<a href="mailto:marion.zepf@gmail.com">marion.zepf@gmail.com</a>><br>
>>>>>>> wrote:<br>
>>>>>>>><br>
>>>>>>>> Hi,<br>
>>>>>>>><br>
>>>>>>>> My name is Marion Zepf and I am interested in the project 'Python<br>
>>>>>>>> export functionality for Turtle Blocks'.  Python is my favorite programming<br>
>>>>>>>> language and I often teach programming or other computer skills to my<br>
>>>>>>>> friends and family.  I think it is very important to teach programming to<br>
>>>>>>>> children because it is a very important skill in today's world.  Children<br>
>>>>>>>> are also very keen on playing around with the programming language, which is<br>
>>>>>>>> very important for learning new features of it.  This is why I would like to<br>
>>>>>>>> make the step from block-based programming to writing code easier for them.<br>
>>>>>>>><br>
>>>>>>>> My Background<br>
>>>>>>>> I am a student of computational linguistics in my 6th semester.  I<br>
>>>>>>>> taught myself Python programming before I went to university.  So, I have<br>
>>>>>>>> three years of experience in writing Python programs of various kinds - from<br>
>>>>>>>> simple command line utilities to GUI applications (using the pygame and<br>
>>>>>>>> tkinter libraries) and code generators for Java code.  I also have strong<br>
>>>>>>>> competence in the object oriented programming paradigm.  I am new to<br>
>>>>>>>> Berkeley Logo, but I learn quickly, so I expect to acquire good Logo skills<br>
>>>>>>>> in a few days.<br>
>>>>>>>> This will be my first contribution to the open source community.<br>
>>>>>>>> However, I am familiar with commonly used frameworks and tools like version<br>
>>>>>>>> control software (svn, git), Eclipse IDE, and autotools.<br>
>>>>>>>> I have made myself familiar with the TurtleArt Activity in Sugar On<br>
>>>>>>>> A Stick as well as in the Debian package 'turtleart'.<br>
>>>>>>>><br>
>>>>>>>> Before I start writing my project proposal, I have a few questions<br>
>>>>>>>> about this project:<br>
>>>>>>>> (1) Which git repositories/ branches should I clone?  I have found a<br>
>>>>>>>> list of repositories on<br>
>>>>>>>> <a href="http://wiki.sugarlabs.org/go/Development_Team/Source_Code" target="_blank">http://wiki.sugarlabs.org/go/Development_Team/Source_Code</a><br>
>>>>>>>> but I am not sure which ones I need and how to fit them together.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> You can try to get a Sugar environment running [1] or just clone<br>
>>>>>>> Turtle Blocks itself [2] and run it in GNOME.<br>
>>>>>>><br>
>>>>>>>><br>
>>>>>>>> (2) I understand that TurtleArt is written in Python, but the code<br>
>>>>>>>> that users generate by putting together the blocks is in a different,<br>
>>>>>>>> internal language.  Is there documentation available for the syntax and<br>
>>>>>>>> semantics of this language?<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>> Not much to help with there.  There is an OK guide to creating blocks<br>
>>>>>>> in tabasic.py. The internal parser is talogo.py<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>> Thank you.<br>
>>>>>>>> Marion<br>
>>>>>>>><br>
>>>>>>>> _______________________________________________<br>
>>>>>>>> GSoC mailing list<br>
>>>>>>>> <a href="mailto:GSoC@lists.sugarlabs.org">GSoC@lists.sugarlabs.org</a><br>
>>>>>>>> <a href="http://lists.sugarlabs.org/listinfo/gsoc" target="_blank">http://lists.sugarlabs.org/listinfo/gsoc</a><br>
>>>>>>>><br>
>>>>>>><br>
>>>>>>> regards.<br>
>>>>>>><br>
>>>>>>> -walter<br>
>>>>>>><br>
>>>>>>> [1] <a href="http://sugarlabs.org/~buildbot/docs/build.html" target="_blank">http://sugarlabs.org/~buildbot/docs/build.html</a><br>
>>>>>>> [2] <a href="http://git.sugarlabs.org/turtleart" target="_blank">git.sugarlabs.org/turtleart</a><br>
>>>>>>><br>
>>>>>>> --<br>
>>>>>>> Walter Bender<br>
>>>>>>> Sugar Labs<br>
>>>>>>> <a href="http://www.sugarlabs.org" target="_blank">http://www.sugarlabs.org</a><br>
>>>>>><br>
>>>>>><br>
>>>>><br>
>>>>><br>
>>>>><br>
>>>>> --<br>
>>>>> Walter Bender<br>
>>>>> Sugar Labs<br>
>>>>> <a href="http://www.sugarlabs.org" target="_blank">http://www.sugarlabs.org</a><br>
>>>><br>
>>>><br>
>>><br>
>>><br>
>>><br>
>>> --<br>
>>> Walter Bender<br>
>>> Sugar Labs<br>
>>> <a href="http://www.sugarlabs.org" target="_blank">http://www.sugarlabs.org</a><br>
>><br>
>><br>
><br>
><br>
><br>
> --<br>
> Walter Bender<br>
> Sugar Labs<br>
> <a href="http://www.sugarlabs.org" target="_blank">http://www.sugarlabs.org</a><br>
</div></div></blockquote></div><br></div>