<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=IwikiwI</id>
	<title>Sugar Labs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=IwikiwI"/>
	<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/go/Special:Contributions/IwikiwI"/>
	<updated>2026-05-13T00:58:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=50836</id>
		<title>Print Support Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=50836"/>
		<updated>2010-04-04T12:12:56Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Introduction====&lt;br /&gt;
&lt;br /&gt;
:Printing had been one of the &amp;quot;to be taken as granted&amp;quot; features that Sugar lacked. And only after getting a working model done has it been a realisation to me why it had been abandoned. A lot of [re]engineering, brain-storming, design constraints, and factors such as dependencies and inclusion of concepts beyond any direct correlation with Printing, plus fighting with additional languages such as C,C++ and php had been a great overhead on me. So the outcome is definitely a bit clunky ( what I feel), but anyway, I will be sticking with the project and Sugar and will definitely make it more concrete.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) The feature to open any cups supported MIME-type file(including ODT when done right) and display it.&lt;br /&gt;
:&#039;&#039;Dev-interest:&#039;&#039; I have used [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ CUPS-PDF] as the agent of conversion, it comes as a very light-weight package, but requires Ghostscript as a dependency (a major one at that). Also, since every mime-type to postscript conversion happens through filters, enhancing the number of file types supported by adding new filters will be pluggable. I found this quite useful in that regard [http://www.ibm.com/developerworks/library/l-dvi-filter.html IBM guide].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) The feature to store the converted PDF as a Journal entry.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) A way to send the PDF at hand to a Moodle install on the SchoolServer (XS)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4) An interface in Moodle for the admin and teachers to send for printing. (which is a site-wide activity)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;5) The feature to also Print to a local printing device from within sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6) A way to set the page ranges(currently not functional due to a bug) and Select the Printer in case of multiple printers from within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7) The ability to monitor the Print Queues through a Frame item, which is the print device icon.&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies:&#039;&#039;&#039;&lt;br /&gt;
Cups, pycups, gconf, Cups-PDF.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
:1) Install the XO bundle to your activities folder. The dependencies will require you be as root.&lt;br /&gt;
:2) Download the PrintDeviceIcon from here:[http://git.sugarlabs.org/projects/read/repos/print [X]] and place it in your sugar data folder, also note that you must have a copy of printscript.py in it.&lt;br /&gt;
:3) Download the following filter pack:&lt;br /&gt;
:4) untar it using : tar xvfz odftops.tar.gz&lt;br /&gt;
:5) Do mv odftops.convs /etc/cups&lt;br /&gt;
:      mv odftops.types /etc/cups&lt;br /&gt;
:      mv odftops /usr/lib/cups/filter&lt;br /&gt;
:      CHMOD 755 /usr/lib/cups/filter/odftops&lt;br /&gt;
:      Set SELINUX (If you have it) to Permissive or do a restorecon on the filter folder.&lt;br /&gt;
:6) restart cups&lt;br /&gt;
:7) To sugar-100.gtkrc and sugar-72.gtkrc add: gtk-print-backends = &amp;quot;cups&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Some experiments have determined that the default installation of Cups you have might not work and the filter may fail, so you might want to update to a newer Cups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle Print Module Installation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Please follow this: [http://docs.moodle.org/en/Installing_contributed_modules_or_plugins#Module_installation Module installation]&lt;br /&gt;
:There is a video for this as well: [http://www.youtube.com/watch?v=pPUB_ReBPeg youtube link]&lt;br /&gt;
&lt;br /&gt;
====Bugs====&lt;br /&gt;
&lt;br /&gt;
:1) Set ranges wont get printed.&lt;br /&gt;
:2) Despite having jobs in the Print Activity in Moodle, it will show that no assignments have been submitted.&lt;br /&gt;
&lt;br /&gt;
====Expansions and the Future====&lt;br /&gt;
&lt;br /&gt;
:1) Adding A settings page to Moodle&lt;br /&gt;
:2) Integrating Network printing, printer sharing and Redesigning some of the interface.&lt;br /&gt;
&lt;br /&gt;
====Guide====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; So if you&#039;ve been wondering on how to use this, here is the guide:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:After installing both the activities,&lt;br /&gt;
:1) You can Open a file with Print in two ways, either by directly clicking the activity which will prompt you with a journal browser, from which you can select the file.&lt;br /&gt;
:or right click on a file in the journal and open with Print.&lt;br /&gt;
&lt;br /&gt;
:2) In Print, you can either directly hit Print in the default toolbar, or hit send to moodle, ( sorry no notifications here currently)&lt;br /&gt;
&lt;br /&gt;
:Or you can go into the specialized Print Setup toolbar, and select the pageranges and the printer and print to it.&lt;br /&gt;
&lt;br /&gt;
:3) While an USB Printer is plugged, you will notice that the Frame has a Printer Icon in it at the bottom. This is the printer device icon. When there is no job it just shows you the Name of the Printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:And when you have jobs piled up you can see the statuses of those jobs in the icon and can cancel a job which is still in the queue.&lt;br /&gt;
&lt;br /&gt;
:4) In Moodle, you will have Print under site activities(Please add it only to the site activities, some bad magic is known to take place if you add it elsewhere first, to be fixed soon). After adding it and setting the size of Print items, you will have an activity ready.&lt;br /&gt;
&lt;br /&gt;
:5) The print requests from the XO user should present themselves in moodle&#039;s Print&#039;s admin/teacher page.&lt;br /&gt;
&lt;br /&gt;
:6) You will notice an ugly Print button, which will do the job&lt;br /&gt;
&lt;br /&gt;
:7) Also as an alternate, users can up documents to their Print page, and teachers can then do the Printing as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;Soon to come Pics Showing the same&amp;gt;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=50835</id>
		<title>Print Support Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=50835"/>
		<updated>2010-04-04T12:11:38Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Introduction====&lt;br /&gt;
&lt;br /&gt;
:Printing had been one of the &amp;quot;to be taken as granted&amp;quot; features that Sugar lacked. And only after getting a working model done has it been a realisation to me why it had been abandoned. A lot of [re]engineering, brain-storming, design constraints, and factors such as dependencies and inclusion of concepts beyond any direct correlation with Printing, plus fighting with additional languages such as C,C++ and php had been a great overhead on me. So the outcome is definitely a bit clunky ( what I feel), but anyway, I will be sticking with the project and Sugar and will definitely make it more concrete.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) The feature to open any cups supported MIME-type file(including ODT when done right) and display it.&lt;br /&gt;
:&#039;&#039;Dev-interest:&#039;&#039; I have used [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ CUPS-PDF] as the agent of conversion, it comes as a very light-weight package, but requires Ghostscript as a dependency (a major one at that). Also, since every mime-type to postscript conversion happens through filters, enhancing the number of file types supported by adding new filters will be pluggable. I found this quite useful in that regard [http://www.ibm.com/developerworks/library/l-dvi-filter.html IBM guide].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) The feature to store the converted PDF as a Journal entry.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) A way to send the PDF at hand to a Moodle install on the SchoolServer (XS)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4) An interface in Moodle for the admin and teachers to send for printing. (which is a site-wide activity)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;5) The feature to also Print to a local printing device from within sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6) A way to set the page ranges(currently not functional due to a bug) and Select the Printer in case of multiple printers from within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7) The ability to monitor the Print Queues through a Frame item, which is the print device icon.&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies:&#039;&#039;&#039;&lt;br /&gt;
Cups, pycups, gconf, Cups-PDF.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
:1) Install the XO bundle to your activities folder. The dependencies will require you be as root.&lt;br /&gt;
:2) Download the PrintDeviceIcon from here: and place it in your sugar data folder, also note that you must have a copy of printscript.py in it.&lt;br /&gt;
:3) Download the following filter pack:&lt;br /&gt;
:4) untar it using : tar xvfz odftops.tar.gz&lt;br /&gt;
:5) Do mv odftops.convs /etc/cups&lt;br /&gt;
:      mv odftops.types /etc/cups&lt;br /&gt;
:      mv odftops /usr/lib/cups/filter&lt;br /&gt;
:      CHMOD 755 /usr/lib/cups/filter/odftops&lt;br /&gt;
:      Set SELINUX (If you have it) to Permissive or do a restorecon on the filter folder.&lt;br /&gt;
:6) restart cups&lt;br /&gt;
:7) To sugar-100.gtkrc and sugar-72.gtkrc add: gtk-print-backends = &amp;quot;cups&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Some experiments have determined that the default installation of Cups you have might not work and the filter may fail, so you might want to update to a newer Cups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle Print Module Installation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Please follow this: [http://docs.moodle.org/en/Installing_contributed_modules_or_plugins#Module_installation Module installation]&lt;br /&gt;
:There is a video for this as well: [http://www.youtube.com/watch?v=pPUB_ReBPeg youtube link]&lt;br /&gt;
&lt;br /&gt;
====Bugs====&lt;br /&gt;
&lt;br /&gt;
:1) Set ranges wont get printed.&lt;br /&gt;
:2) Despite having jobs in the Print Activity in Moodle, it will show that no assignments have been submitted.&lt;br /&gt;
&lt;br /&gt;
====Expansions and the Future====&lt;br /&gt;
&lt;br /&gt;
:1) Adding A settings page to Moodle&lt;br /&gt;
:2) Integrating Network printing, printer sharing and Redesigning some of the interface.&lt;br /&gt;
&lt;br /&gt;
====Guide====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; So if you&#039;ve been wondering on how to use this, here is the guide:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:After installing both the activities,&lt;br /&gt;
:1) You can Open a file with Print in two ways, either by directly clicking the activity which will prompt you with a journal browser, from which you can select the file.&lt;br /&gt;
:or right click on a file in the journal and open with Print.&lt;br /&gt;
&lt;br /&gt;
:2) In Print, you can either directly hit Print in the default toolbar, or hit send to moodle, ( sorry no notifications here currently)&lt;br /&gt;
&lt;br /&gt;
:Or you can go into the specialized Print Setup toolbar, and select the pageranges and the printer and print to it.&lt;br /&gt;
&lt;br /&gt;
:3) While an USB Printer is plugged, you will notice that the Frame has a Printer Icon in it at the bottom. This is the printer device icon. When there is no job it just shows you the Name of the Printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:And when you have jobs piled up you can see the statuses of those jobs in the icon and can cancel a job which is still in the queue.&lt;br /&gt;
&lt;br /&gt;
:4) In Moodle, you will have Print under site activities(Please add it only to the site activities, some bad magic is known to take place if you add it elsewhere first, to be fixed soon). After adding it and setting the size of Print items, you will have an activity ready.&lt;br /&gt;
&lt;br /&gt;
:5) The print requests from the XO user should present themselves in moodle&#039;s Print&#039;s admin/teacher page.&lt;br /&gt;
&lt;br /&gt;
:6) You will notice an ugly Print button, which will do the job&lt;br /&gt;
&lt;br /&gt;
:7) Also as an alternate, users can up documents to their Print page, and teachers can then do the Printing as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;Soon to come Pics Showing the same&amp;gt;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Interactive_faq_system&amp;diff=39361</id>
		<title>Interactive faq system</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Interactive_faq_system&amp;diff=39361"/>
		<updated>2009-10-20T11:38:37Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Working */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Project Idea====&lt;br /&gt;
:With more and more services becoming interactive, one could wonder why not have an interactive FAQ system.&lt;br /&gt;
:The interactive FAQ system for sugar visions to be a very simplistic Q-A system framework with more and more concepts/features added with time. This system will have a basic bearing to understand variations in the user&#039;s questions, and respond with the most fitting answer(s) in the FAQ Database.&lt;br /&gt;
&lt;br /&gt;
====How the Framework works====&lt;br /&gt;
:The framework for the time being will contain a simple NLP library to do tagging of words in the user&#039;s queries and match them with the natural language FAQ database, with Questions and Answers. After getting the best matches, it will output the best results to the user.&lt;br /&gt;
&lt;br /&gt;
====Working====&lt;br /&gt;
:My idea to utilize this framework is in two ways: A simple faq-ircbot, and as an activity within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;AS AN ACTIVITY&#039;&#039;&#039;:&lt;br /&gt;
:As an activity, it would be a simple IM like interface (though squeak looks nice) which responds to user&#039;s queries. And it would have an interface for user&#039;s to input their own faqs, and community members for community driven faqs (which get higher priority) through the internet.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;AS AN IRC-BOT&#039;&#039;&#039;:&lt;br /&gt;
:As an irc-bot, it would live on a server, and would get only community driven updates. The bot would respond to any question it thinks is a nice match, and would respond with an answer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;ADDING NEW CONTENT&#039;&#039;&#039;: Adding new faq content is done by having the bot remember certain nicks of #sugar users, and have them update the FAQ with a command. The same community driven FAQ is used by the Activity.&lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
:&#039;&#039;&#039;IRC BOT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Step 1: The user starts the irc activity and logs into #sugar&lt;br /&gt;
:Step 2: The user asks a question, and the bot responds with an answer.&lt;br /&gt;
:Step 3: The user is not cleared up, he asks the question again. Then the bot responds with a new answer.&lt;br /&gt;
:Step 4: The user is still not cleared up. The bot repeats step 3.&lt;br /&gt;
:Step 5: The user is still at bay, then the bot replies &amp;quot;please, ask community members&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;ACTIVITY&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Step 1: The user starts the FAQ System.&lt;br /&gt;
:Step 2: The user queries for something not clear.&lt;br /&gt;
:Step 3: The system responds with an answer.&lt;br /&gt;
:Step 4: The user is still not clear, The system responds with all probable answers.&lt;br /&gt;
:Step 5: The user is still not clear, The system directs ways to achieve support.&lt;br /&gt;
&lt;br /&gt;
====Inconsistencies====&lt;br /&gt;
:While for a smaller set of faq, the initial system maybe viable but for a larger set, it won&#039;t be. We will need a definitive classification system. Here steps in the multinomial Naive-Bayes classification, with supervised-learning [http://nlp.stanford.edu/IR-book/html/htmledition/text-classification-and-naive-bayes-1.html]. I am working on a basic classification system which I will later on  expand with this.&lt;br /&gt;
&lt;br /&gt;
====Tools Used====&lt;br /&gt;
:I will be using the NLTK libraries [http://www.nltk.org/] for research and proof, and a custom constructed Python library for the actual NLP processing.&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Interactive_faq_system&amp;diff=39360</id>
		<title>Interactive faq system</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Interactive_faq_system&amp;diff=39360"/>
		<updated>2009-10-20T11:37:41Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Working */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Project Idea====&lt;br /&gt;
:With more and more services becoming interactive, one could wonder why not have an interactive FAQ system.&lt;br /&gt;
:The interactive FAQ system for sugar visions to be a very simplistic Q-A system framework with more and more concepts/features added with time. This system will have a basic bearing to understand variations in the user&#039;s questions, and respond with the most fitting answer(s) in the FAQ Database.&lt;br /&gt;
&lt;br /&gt;
====How the Framework works====&lt;br /&gt;
:The framework for the time being will contain a simple NLP library to do tagging of words in the user&#039;s queries and match them with the natural language FAQ database, with Questions and Answers. After getting the best matches, it will output the best results to the user.&lt;br /&gt;
&lt;br /&gt;
====Working====&lt;br /&gt;
:My idea to utilize this framework is in two ways: A simple faq-ircbot, and as an activity within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;As an activity&#039;&#039;&#039;:&lt;br /&gt;
:As an activity, it would be a simple IM like interface (though squeak looks nice) which responds to user&#039;s queries. And it would have an interface for user&#039;s to input their own faqs, and community members for community driven faqs (which get higher priority) through the internet.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;As an irc-bot&#039;&#039;&#039;:&lt;br /&gt;
:As an irc-bot, it would live on a server, and would get only community driven updates. The bot would respond to any question it thinks is a nice match, and would respond with an answer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adding new content&#039;&#039;&#039;: Adding new faq content is done by having the bot remember certain nicks of #sugar users, and have them update the FAQ with a command. The same community driven FAQ is used by the Activity.&lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
:&#039;&#039;&#039;IRC BOT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Step 1: The user starts the irc activity and logs into #sugar&lt;br /&gt;
:Step 2: The user asks a question, and the bot responds with an answer.&lt;br /&gt;
:Step 3: The user is not cleared up, he asks the question again. Then the bot responds with a new answer.&lt;br /&gt;
:Step 4: The user is still not cleared up. The bot repeats step 3.&lt;br /&gt;
:Step 5: The user is still at bay, then the bot replies &amp;quot;please, ask community members&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;ACTIVITY&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Step 1: The user starts the FAQ System.&lt;br /&gt;
:Step 2: The user queries for something not clear.&lt;br /&gt;
:Step 3: The system responds with an answer.&lt;br /&gt;
:Step 4: The user is still not clear, The system responds with all probable answers.&lt;br /&gt;
:Step 5: The user is still not clear, The system directs ways to achieve support.&lt;br /&gt;
&lt;br /&gt;
====Inconsistencies====&lt;br /&gt;
:While for a smaller set of faq, the initial system maybe viable but for a larger set, it won&#039;t be. We will need a definitive classification system. Here steps in the multinomial Naive-Bayes classification, with supervised-learning [http://nlp.stanford.edu/IR-book/html/htmledition/text-classification-and-naive-bayes-1.html]. I am working on a basic classification system which I will later on  expand with this.&lt;br /&gt;
&lt;br /&gt;
====Tools Used====&lt;br /&gt;
:I will be using the NLTK libraries [http://www.nltk.org/] for research and proof, and a custom constructed Python library for the actual NLP processing.&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Interactive_faq_system&amp;diff=39359</id>
		<title>Interactive faq system</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Interactive_faq_system&amp;diff=39359"/>
		<updated>2009-10-20T11:24:53Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Inconsistencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Project Idea====&lt;br /&gt;
:With more and more services becoming interactive, one could wonder why not have an interactive FAQ system.&lt;br /&gt;
:The interactive FAQ system for sugar visions to be a very simplistic Q-A system framework with more and more concepts/features added with time. This system will have a basic bearing to understand variations in the user&#039;s questions, and respond with the most fitting answer(s) in the FAQ Database.&lt;br /&gt;
&lt;br /&gt;
====How the Framework works====&lt;br /&gt;
:The framework for the time being will contain a simple NLP library to do tagging of words in the user&#039;s queries and match them with the natural language FAQ database, with Questions and Answers. After getting the best matches, it will output the best results to the user.&lt;br /&gt;
&lt;br /&gt;
====Working====&lt;br /&gt;
:My idea to utilize this framework is in two ways: A simple faq-ircbot, and as an activity within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;As an activity&#039;&#039;&#039;:&lt;br /&gt;
:As an activity, it would be a simple IM like interface (though squeak looks nice) which responds to user&#039;s queries. And it would have an interface for user&#039;s to input their own faqs, and community members for community driven faqs (which get higher priority) through the internet.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;As an irc-bot&#039;&#039;&#039;:&lt;br /&gt;
:As an irc-bot, it would live on a server, and would get only community driven updates. The bot would respond to any question it thinks is a nice match, and would respond with an answer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
:&#039;&#039;&#039;IRC BOT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Step 1: The user starts the irc activity and logs into #sugar&lt;br /&gt;
:Step 2: The user asks a question, and the bot responds with an answer.&lt;br /&gt;
:Step 3: The user is not cleared up, he asks the question again. Then the bot responds with a new answer.&lt;br /&gt;
:Step 4: The user is still not cleared up. The bot repeats step 3.&lt;br /&gt;
:Step 5: The user is still at bay, then the bot replies &amp;quot;please, ask community members&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;ACTIVITY&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Step 1: The user starts the FAQ System.&lt;br /&gt;
:Step 2: The user queries for something not clear.&lt;br /&gt;
:Step 3: The system responds with an answer.&lt;br /&gt;
:Step 4: The user is still not clear, The system responds with all probable answers.&lt;br /&gt;
:Step 5: The user is still not clear, The system directs ways to achieve support.&lt;br /&gt;
&lt;br /&gt;
====Inconsistencies====&lt;br /&gt;
:While for a smaller set of faq, the initial system maybe viable but for a larger set, it won&#039;t be. We will need a definitive classification system. Here steps in the multinomial Naive-Bayes classification, with supervised-learning [http://nlp.stanford.edu/IR-book/html/htmledition/text-classification-and-naive-bayes-1.html]. I am working on a basic classification system which I will later on  expand with this.&lt;br /&gt;
&lt;br /&gt;
====Tools Used====&lt;br /&gt;
:I will be using the NLTK libraries [http://www.nltk.org/] for research and proof, and a custom constructed Python library for the actual NLP processing.&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Interactive_faq_system&amp;diff=39358</id>
		<title>Interactive faq system</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Interactive_faq_system&amp;diff=39358"/>
		<updated>2009-10-20T11:23:55Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: An interactive FAQ system&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Project Idea====&lt;br /&gt;
:With more and more services becoming interactive, one could wonder why not have an interactive FAQ system.&lt;br /&gt;
:The interactive FAQ system for sugar visions to be a very simplistic Q-A system framework with more and more concepts/features added with time. This system will have a basic bearing to understand variations in the user&#039;s questions, and respond with the most fitting answer(s) in the FAQ Database.&lt;br /&gt;
&lt;br /&gt;
====How the Framework works====&lt;br /&gt;
:The framework for the time being will contain a simple NLP library to do tagging of words in the user&#039;s queries and match them with the natural language FAQ database, with Questions and Answers. After getting the best matches, it will output the best results to the user.&lt;br /&gt;
&lt;br /&gt;
====Working====&lt;br /&gt;
:My idea to utilize this framework is in two ways: A simple faq-ircbot, and as an activity within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;As an activity&#039;&#039;&#039;:&lt;br /&gt;
:As an activity, it would be a simple IM like interface (though squeak looks nice) which responds to user&#039;s queries. And it would have an interface for user&#039;s to input their own faqs, and community members for community driven faqs (which get higher priority) through the internet.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;As an irc-bot&#039;&#039;&#039;:&lt;br /&gt;
:As an irc-bot, it would live on a server, and would get only community driven updates. The bot would respond to any question it thinks is a nice match, and would respond with an answer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
:&#039;&#039;&#039;IRC BOT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Step 1: The user starts the irc activity and logs into #sugar&lt;br /&gt;
:Step 2: The user asks a question, and the bot responds with an answer.&lt;br /&gt;
:Step 3: The user is not cleared up, he asks the question again. Then the bot responds with a new answer.&lt;br /&gt;
:Step 4: The user is still not cleared up. The bot repeats step 3.&lt;br /&gt;
:Step 5: The user is still at bay, then the bot replies &amp;quot;please, ask community members&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;ACTIVITY&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Step 1: The user starts the FAQ System.&lt;br /&gt;
:Step 2: The user queries for something not clear.&lt;br /&gt;
:Step 3: The system responds with an answer.&lt;br /&gt;
:Step 4: The user is still not clear, The system responds with all probable answers.&lt;br /&gt;
:Step 5: The user is still not clear, The system directs ways to achieve support.&lt;br /&gt;
&lt;br /&gt;
====Inconsistencies====&lt;br /&gt;
:While for a smaller set of faq, the initial system maybe viable but for a larger set, it won&#039;t be. We will need a definitive classification system. Here steps in the multinomial Naive-Bayes classification, with supervised-learning [http://nlp.stanford.edu/IR-book/html/htmledition/text-classification-and-naive-bayes-1.html] . I am working on a basic classification system after which,&lt;br /&gt;
I will expand to this.&lt;br /&gt;
&lt;br /&gt;
====Tools Used====&lt;br /&gt;
:I will be using the NLTK libraries [http://www.nltk.org/] for research and proof, and a custom constructed Python library for the actual NLP processing.&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code&amp;diff=37202</id>
		<title>Summer of Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code&amp;diff=37202"/>
		<updated>2009-09-12T07:40:22Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Printing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TeamHeader|Summer of Code|home=Summer of Code Project Home|xbgColor=ffe792}}&amp;lt;/noinclude&amp;gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
From the 2009 FAQ: &amp;quot;Google Summer of Code (GSoC) is a global program that offers student developers stipends to write code for various open source projects.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sugar Labs Google SoC page: http://socghop.appspot.com/org/show/google/gsoc2009/sugarlabs&lt;br /&gt;
&lt;br /&gt;
This is a project under [[Development Team]]. Jameson Chema Quinn coordinated the 2009 projects and can be contacted with any questions at jameson.quinn -AT- gmail.com.&lt;br /&gt;
&lt;br /&gt;
== 2009 results ==&lt;br /&gt;
&lt;br /&gt;
We had a great year. All 5 of our students were successful, and several of them made really important improvements to Sugar. Here&#039;s the results:&lt;br /&gt;
&lt;br /&gt;
{{:Version_support_for_datastore/Results}}&lt;br /&gt;
&lt;br /&gt;
=== Karma ===&lt;br /&gt;
&lt;br /&gt;
The [[Karma]] GSoC project has been a success. Participant Felipe Lopez Toledo set out to create a high-level library for creating interactive digital learning lessons using only openweb technologies. The result is the [http://git.sugarlabs.org/projects/karma/repos/mainline/blobs/master/js/jquery.karma-0.3.js karma jQuery plugin] that provides high-level functions for manipulating image, audio, and internationalization.&lt;br /&gt;
&lt;br /&gt;
The Karma Project is an initiative to create a platform that enables web developers to create compelling interactive learning materials for the Sugar Learning Environment without having to learn a new set of programming tools.&lt;br /&gt;
&lt;br /&gt;
You can view the first example of lesson [http://karma.sugarlabs.org/karma/examples/adding_up_to_10/index.html &amp;quot;Adding up to 10&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
The student, Felipe Lopez Toledo, wrote:&lt;br /&gt;
&lt;br /&gt;
# Simplified functions for:&lt;br /&gt;
#* Drawing using the new canvas API for html5&lt;br /&gt;
#* Adding images dynamically to the canvas API and manipulating them&lt;br /&gt;
#* Playing audio &lt;br /&gt;
# Methods for loading in localized images and audio&lt;br /&gt;
# Mechanism for loading in translated text from a .po file&lt;br /&gt;
# Documentation of the Karma API (need link)&lt;br /&gt;
&lt;br /&gt;
Thanks to the support of Google and Sugar Labs, Karma can now be used to create interactive activities for the Sugar environment.&lt;br /&gt;
&lt;br /&gt;
=== Groupthink ===&lt;br /&gt;
The [[Summer_of_Code/2009/Groupthink|Groupthink GSoC Project]] successfully achieved its specified goals.  The student, Benjamin Schwartz, wrote&lt;br /&gt;
# a [http://bemasc.net/~bens/groupthink/groupthink.gtk_tools.SharedTextView-class.html gtk SharedTextView widget] that provides live shared editing in a self-contained object&lt;br /&gt;
# a [http://bemasc.net/~bens/groupthink/groupthink.groupthink_base.UnorderedString-class.html network interface] to allow sharing this widget over the network&lt;br /&gt;
# a SharedTextDemo activity (versions [http://lists.sugarlabs.org/archive/sugar-devel/2009-June/014795.html 1], [http://lists.sugarlabs.org/archive/sugar-devel/2009-June/015346.html 2], [http://lists.sugarlabs.org/archive/sugar-devel/2009-June/015713.html 3], [http://lists.sugarlabs.org/archive/sugar-devel/2009-July/016739.html 4], and [http://lists.sugarlabs.org/archive/sugar-devel/2009-July/017004.html 5]) to demonstrate the use of this widget&lt;br /&gt;
# an automated [http://bemasc.net/~bens/groupthink/groupthink.groupthink_base.Group-class.html#dumps serialization system] for saving and loading state [http://bemasc.net/~bens/groupthink/groupthink.sugar_tools.GroupActivity-class.html#read_file with the Journal]&lt;br /&gt;
# [http://bemasc.net/~bens/groupthink/groupthink.sugar_tools.GroupActivity-class.html other] code necessary so that Sugar activities could seamlessly rejoin a shared instance and merge in changes made offline&lt;br /&gt;
# [http://git.sugarlabs.org/projects/pippy/repos/pippy-groupthink/commits/0f30ab2a17670d3f7e7723fe4f4756333030c3e0 patches] to enable live shared editing of Python code, with syntax highlighting and Undo/Redo, in [http://activities.sugarlabs.org/en-US/sugar/addons/versions/4041#version-35 Pippy-35]&lt;br /&gt;
# extensive [http://bemasc.net/~bens/groupthink/ API documentation] for Groupthink.&lt;br /&gt;
&lt;br /&gt;
Thanks to the support from Sugar Labs and Google, Groupthink has grown from a toy project into a library that developers can really use.&lt;br /&gt;
&lt;br /&gt;
=== Printing ===&lt;br /&gt;
[http://wiki.sugarlabs.org/go/Print_Support Printing]  had been one of the key complementing features of any Desktop that Sugar lacked. &lt;br /&gt;
# The following [http://wiki.sugarlabs.org/go/Print_Support_Manual Manual] provides a gist of the project.&lt;br /&gt;
# The Code Repository of [http://git.sugarlabs.org/projects/read/repos/print Print] where you can find the odf-to-ps CUPS filter, as well as Moodle Print.&lt;br /&gt;
&lt;br /&gt;
== Previous Introduction ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this page (was) to coordinate a Sugar Labs Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
=== What (made) a good project ===&lt;br /&gt;
&lt;br /&gt;
Our focus is on &#039;&#039;&#039;collaboration&#039;&#039;&#039; and &#039;&#039;&#039;community&#039;&#039;&#039; for the summer 2009 round of projects, though we&#039;ll also consider thoughtful proposals that lie outside these two areas and can make a strong case for how they would support the Sugar Labs [[Sugar_Labs|mission]]. &lt;br /&gt;
&lt;br /&gt;
==== Collaboration ====&lt;br /&gt;
&lt;br /&gt;
This refers to API or activity work that makes [[olpc:Activity_sharing | collaboration]] &amp;quot;work better.&amp;quot; A good metric for &amp;quot;works better&amp;quot; is to ask the following: &amp;quot;6 months after the summer ends, which projects are likely to have caused the highest increase in children-hours spent collaborating over Sugar Activities?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Community ====&lt;br /&gt;
&lt;br /&gt;
This refers to meta-work that makes it easy for Sugar to reach a broader [[Sugar Labs]]; this includes development tools (and accompanying implementation of processes and training), internationalization/localization, accessibility, infrastructure-building, and porting Sugar to other platforms. &lt;br /&gt;
&lt;br /&gt;
A good metric for &amp;quot;reaches a broader community&amp;quot; is to ask the following: &amp;quot;6 months after the summer ends, which projects are likely to cause the highest increase in SL community members that have participated consistently on a team for a minimum of 3 months?&amp;quot;&lt;br /&gt;
{{:Summer of Code/Getting Involved}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
==Subpages==&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;br /&gt;
[[Category:Project]]&lt;br /&gt;
[[Category:Participate]]&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code&amp;diff=37201</id>
		<title>Summer of Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code&amp;diff=37201"/>
		<updated>2009-09-12T07:39:44Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Printing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TeamHeader|Summer of Code|home=Summer of Code Project Home|xbgColor=ffe792}}&amp;lt;/noinclude&amp;gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
From the 2009 FAQ: &amp;quot;Google Summer of Code (GSoC) is a global program that offers student developers stipends to write code for various open source projects.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sugar Labs Google SoC page: http://socghop.appspot.com/org/show/google/gsoc2009/sugarlabs&lt;br /&gt;
&lt;br /&gt;
This is a project under [[Development Team]]. Jameson Chema Quinn coordinated the 2009 projects and can be contacted with any questions at jameson.quinn -AT- gmail.com.&lt;br /&gt;
&lt;br /&gt;
== 2009 results ==&lt;br /&gt;
&lt;br /&gt;
We had a great year. All 5 of our students were successful, and several of them made really important improvements to Sugar. Here&#039;s the results:&lt;br /&gt;
&lt;br /&gt;
{{:Version_support_for_datastore/Results}}&lt;br /&gt;
&lt;br /&gt;
=== Karma ===&lt;br /&gt;
&lt;br /&gt;
The [[Karma]] GSoC project has been a success. Participant Felipe Lopez Toledo set out to create a high-level library for creating interactive digital learning lessons using only openweb technologies. The result is the [http://git.sugarlabs.org/projects/karma/repos/mainline/blobs/master/js/jquery.karma-0.3.js karma jQuery plugin] that provides high-level functions for manipulating image, audio, and internationalization.&lt;br /&gt;
&lt;br /&gt;
The Karma Project is an initiative to create a platform that enables web developers to create compelling interactive learning materials for the Sugar Learning Environment without having to learn a new set of programming tools.&lt;br /&gt;
&lt;br /&gt;
You can view the first example of lesson [http://karma.sugarlabs.org/karma/examples/adding_up_to_10/index.html &amp;quot;Adding up to 10&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
The student, Felipe Lopez Toledo, wrote:&lt;br /&gt;
&lt;br /&gt;
# Simplified functions for:&lt;br /&gt;
#* Drawing using the new canvas API for html5&lt;br /&gt;
#* Adding images dynamically to the canvas API and manipulating them&lt;br /&gt;
#* Playing audio &lt;br /&gt;
# Methods for loading in localized images and audio&lt;br /&gt;
# Mechanism for loading in translated text from a .po file&lt;br /&gt;
# Documentation of the Karma API (need link)&lt;br /&gt;
&lt;br /&gt;
Thanks to the support of Google and Sugar Labs, Karma can now be used to create interactive activities for the Sugar environment.&lt;br /&gt;
&lt;br /&gt;
=== Groupthink ===&lt;br /&gt;
The [[Summer_of_Code/2009/Groupthink|Groupthink GSoC Project]] successfully achieved its specified goals.  The student, Benjamin Schwartz, wrote&lt;br /&gt;
# a [http://bemasc.net/~bens/groupthink/groupthink.gtk_tools.SharedTextView-class.html gtk SharedTextView widget] that provides live shared editing in a self-contained object&lt;br /&gt;
# a [http://bemasc.net/~bens/groupthink/groupthink.groupthink_base.UnorderedString-class.html network interface] to allow sharing this widget over the network&lt;br /&gt;
# a SharedTextDemo activity (versions [http://lists.sugarlabs.org/archive/sugar-devel/2009-June/014795.html 1], [http://lists.sugarlabs.org/archive/sugar-devel/2009-June/015346.html 2], [http://lists.sugarlabs.org/archive/sugar-devel/2009-June/015713.html 3], [http://lists.sugarlabs.org/archive/sugar-devel/2009-July/016739.html 4], and [http://lists.sugarlabs.org/archive/sugar-devel/2009-July/017004.html 5]) to demonstrate the use of this widget&lt;br /&gt;
# an automated [http://bemasc.net/~bens/groupthink/groupthink.groupthink_base.Group-class.html#dumps serialization system] for saving and loading state [http://bemasc.net/~bens/groupthink/groupthink.sugar_tools.GroupActivity-class.html#read_file with the Journal]&lt;br /&gt;
# [http://bemasc.net/~bens/groupthink/groupthink.sugar_tools.GroupActivity-class.html other] code necessary so that Sugar activities could seamlessly rejoin a shared instance and merge in changes made offline&lt;br /&gt;
# [http://git.sugarlabs.org/projects/pippy/repos/pippy-groupthink/commits/0f30ab2a17670d3f7e7723fe4f4756333030c3e0 patches] to enable live shared editing of Python code, with syntax highlighting and Undo/Redo, in [http://activities.sugarlabs.org/en-US/sugar/addons/versions/4041#version-35 Pippy-35]&lt;br /&gt;
# extensive [http://bemasc.net/~bens/groupthink/ API documentation] for Groupthink.&lt;br /&gt;
&lt;br /&gt;
Thanks to the support from Sugar Labs and Google, Groupthink has grown from a toy project into a library that developers can really use.&lt;br /&gt;
&lt;br /&gt;
=== Printing ===&lt;br /&gt;
[Printing]  had been one of the key complementing features of any Desktop that Sugar lacked. &lt;br /&gt;
# The following [http://wiki.sugarlabs.org/go/Print_Support_Manual Manual] provides a gist of the project.&lt;br /&gt;
# The Code Repository of [http://git.sugarlabs.org/projects/read/repos/print Print] where you can find the odf-to-ps CUPS filter, as well as Moodle Print.&lt;br /&gt;
&lt;br /&gt;
== Previous Introduction ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this page (was) to coordinate a Sugar Labs Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
=== What (made) a good project ===&lt;br /&gt;
&lt;br /&gt;
Our focus is on &#039;&#039;&#039;collaboration&#039;&#039;&#039; and &#039;&#039;&#039;community&#039;&#039;&#039; for the summer 2009 round of projects, though we&#039;ll also consider thoughtful proposals that lie outside these two areas and can make a strong case for how they would support the Sugar Labs [[Sugar_Labs|mission]]. &lt;br /&gt;
&lt;br /&gt;
==== Collaboration ====&lt;br /&gt;
&lt;br /&gt;
This refers to API or activity work that makes [[olpc:Activity_sharing | collaboration]] &amp;quot;work better.&amp;quot; A good metric for &amp;quot;works better&amp;quot; is to ask the following: &amp;quot;6 months after the summer ends, which projects are likely to have caused the highest increase in children-hours spent collaborating over Sugar Activities?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Community ====&lt;br /&gt;
&lt;br /&gt;
This refers to meta-work that makes it easy for Sugar to reach a broader [[Sugar Labs]]; this includes development tools (and accompanying implementation of processes and training), internationalization/localization, accessibility, infrastructure-building, and porting Sugar to other platforms. &lt;br /&gt;
&lt;br /&gt;
A good metric for &amp;quot;reaches a broader community&amp;quot; is to ask the following: &amp;quot;6 months after the summer ends, which projects are likely to cause the highest increase in SL community members that have participated consistently on a team for a minimum of 3 months?&amp;quot;&lt;br /&gt;
{{:Summer of Code/Getting Involved}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
==Subpages==&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;br /&gt;
[[Category:Project]]&lt;br /&gt;
[[Category:Participate]]&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code&amp;diff=37200</id>
		<title>Summer of Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code&amp;diff=37200"/>
		<updated>2009-09-12T07:38:39Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{GoogleTrans-en}}{{TeamHeader|Summer of Code|home=Summer of Code Project Home|xbgColor=ffe792}}&amp;lt;/noinclude&amp;gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
From the 2009 FAQ: &amp;quot;Google Summer of Code (GSoC) is a global program that offers student developers stipends to write code for various open source projects.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sugar Labs Google SoC page: http://socghop.appspot.com/org/show/google/gsoc2009/sugarlabs&lt;br /&gt;
&lt;br /&gt;
This is a project under [[Development Team]]. Jameson Chema Quinn coordinated the 2009 projects and can be contacted with any questions at jameson.quinn -AT- gmail.com.&lt;br /&gt;
&lt;br /&gt;
== 2009 results ==&lt;br /&gt;
&lt;br /&gt;
We had a great year. All 5 of our students were successful, and several of them made really important improvements to Sugar. Here&#039;s the results:&lt;br /&gt;
&lt;br /&gt;
{{:Version_support_for_datastore/Results}}&lt;br /&gt;
&lt;br /&gt;
=== Karma ===&lt;br /&gt;
&lt;br /&gt;
The [[Karma]] GSoC project has been a success. Participant Felipe Lopez Toledo set out to create a high-level library for creating interactive digital learning lessons using only openweb technologies. The result is the [http://git.sugarlabs.org/projects/karma/repos/mainline/blobs/master/js/jquery.karma-0.3.js karma jQuery plugin] that provides high-level functions for manipulating image, audio, and internationalization.&lt;br /&gt;
&lt;br /&gt;
The Karma Project is an initiative to create a platform that enables web developers to create compelling interactive learning materials for the Sugar Learning Environment without having to learn a new set of programming tools.&lt;br /&gt;
&lt;br /&gt;
You can view the first example of lesson [http://karma.sugarlabs.org/karma/examples/adding_up_to_10/index.html &amp;quot;Adding up to 10&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
The student, Felipe Lopez Toledo, wrote:&lt;br /&gt;
&lt;br /&gt;
# Simplified functions for:&lt;br /&gt;
#* Drawing using the new canvas API for html5&lt;br /&gt;
#* Adding images dynamically to the canvas API and manipulating them&lt;br /&gt;
#* Playing audio &lt;br /&gt;
# Methods for loading in localized images and audio&lt;br /&gt;
# Mechanism for loading in translated text from a .po file&lt;br /&gt;
# Documentation of the Karma API (need link)&lt;br /&gt;
&lt;br /&gt;
Thanks to the support of Google and Sugar Labs, Karma can now be used to create interactive activities for the Sugar environment.&lt;br /&gt;
&lt;br /&gt;
=== Groupthink ===&lt;br /&gt;
The [[Summer_of_Code/2009/Groupthink|Groupthink GSoC Project]] successfully achieved its specified goals.  The student, Benjamin Schwartz, wrote&lt;br /&gt;
# a [http://bemasc.net/~bens/groupthink/groupthink.gtk_tools.SharedTextView-class.html gtk SharedTextView widget] that provides live shared editing in a self-contained object&lt;br /&gt;
# a [http://bemasc.net/~bens/groupthink/groupthink.groupthink_base.UnorderedString-class.html network interface] to allow sharing this widget over the network&lt;br /&gt;
# a SharedTextDemo activity (versions [http://lists.sugarlabs.org/archive/sugar-devel/2009-June/014795.html 1], [http://lists.sugarlabs.org/archive/sugar-devel/2009-June/015346.html 2], [http://lists.sugarlabs.org/archive/sugar-devel/2009-June/015713.html 3], [http://lists.sugarlabs.org/archive/sugar-devel/2009-July/016739.html 4], and [http://lists.sugarlabs.org/archive/sugar-devel/2009-July/017004.html 5]) to demonstrate the use of this widget&lt;br /&gt;
# an automated [http://bemasc.net/~bens/groupthink/groupthink.groupthink_base.Group-class.html#dumps serialization system] for saving and loading state [http://bemasc.net/~bens/groupthink/groupthink.sugar_tools.GroupActivity-class.html#read_file with the Journal]&lt;br /&gt;
# [http://bemasc.net/~bens/groupthink/groupthink.sugar_tools.GroupActivity-class.html other] code necessary so that Sugar activities could seamlessly rejoin a shared instance and merge in changes made offline&lt;br /&gt;
# [http://git.sugarlabs.org/projects/pippy/repos/pippy-groupthink/commits/0f30ab2a17670d3f7e7723fe4f4756333030c3e0 patches] to enable live shared editing of Python code, with syntax highlighting and Undo/Redo, in [http://activities.sugarlabs.org/en-US/sugar/addons/versions/4041#version-35 Pippy-35]&lt;br /&gt;
# extensive [http://bemasc.net/~bens/groupthink/ API documentation] for Groupthink.&lt;br /&gt;
&lt;br /&gt;
Thanks to the support from Sugar Labs and Google, Groupthink has grown from a toy project into a library that developers can really use.&lt;br /&gt;
&lt;br /&gt;
=== Printing ===&lt;br /&gt;
[[Printing]] had been one of the key complementing features of any Desktop that Sugar lacked. &lt;br /&gt;
# The following [http://wiki.sugarlabs.org/go/Print_Support_Manual Manual] provides a gist and a manual of the project.&lt;br /&gt;
# The Code Repository of [http://git.sugarlabs.org/projects/read/repos/print Print] where you can find the odf-to-ps CUPS filter, as well as Moodle Print.&lt;br /&gt;
&lt;br /&gt;
== Previous Introduction ==&lt;br /&gt;
&lt;br /&gt;
The purpose of this page (was) to coordinate a Sugar Labs Summer of Code effort.&lt;br /&gt;
&lt;br /&gt;
=== What (made) a good project ===&lt;br /&gt;
&lt;br /&gt;
Our focus is on &#039;&#039;&#039;collaboration&#039;&#039;&#039; and &#039;&#039;&#039;community&#039;&#039;&#039; for the summer 2009 round of projects, though we&#039;ll also consider thoughtful proposals that lie outside these two areas and can make a strong case for how they would support the Sugar Labs [[Sugar_Labs|mission]]. &lt;br /&gt;
&lt;br /&gt;
==== Collaboration ====&lt;br /&gt;
&lt;br /&gt;
This refers to API or activity work that makes [[olpc:Activity_sharing | collaboration]] &amp;quot;work better.&amp;quot; A good metric for &amp;quot;works better&amp;quot; is to ask the following: &amp;quot;6 months after the summer ends, which projects are likely to have caused the highest increase in children-hours spent collaborating over Sugar Activities?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Community ====&lt;br /&gt;
&lt;br /&gt;
This refers to meta-work that makes it easy for Sugar to reach a broader [[Sugar Labs]]; this includes development tools (and accompanying implementation of processes and training), internationalization/localization, accessibility, infrastructure-building, and porting Sugar to other platforms. &lt;br /&gt;
&lt;br /&gt;
A good metric for &amp;quot;reaches a broader community&amp;quot; is to ask the following: &amp;quot;6 months after the summer ends, which projects are likely to cause the highest increase in SL community members that have participated consistently on a team for a minimum of 3 months?&amp;quot;&lt;br /&gt;
{{:Summer of Code/Getting Involved}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
==Subpages==&lt;br /&gt;
{{Special:PrefixIndex/{{PAGENAMEE}}/}}&lt;br /&gt;
[[Category:Project]]&lt;br /&gt;
[[Category:Participate]]&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35499</id>
		<title>Print Support Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35499"/>
		<updated>2009-08-22T14:21:30Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Introduction====&lt;br /&gt;
&lt;br /&gt;
:Printing had been one of the &amp;quot;to be taken as granted&amp;quot; features that Sugar lacked. And only after getting a working model done has it been a realisation to me why it had been abandoned. A lot of [re]engineering, brain-storming, design constraints, and factors such as dependencies and inclusion of concepts beyond any direct correlation with Printing, plus fighting with additional languages such as C,C++ and php had been a great overhead on me. So the outcome is definitely a bit clunky ( what I feel), but anyway, I assure you, I will be sticking with the project and Sugar and will definitely make it more concrete.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) The feature to open any cups supported MIME-type file(including ODT when done right) and display it.&lt;br /&gt;
:&#039;&#039;Dev-interest:&#039;&#039; I have used [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ CUPS-PDF] as the agent of conversion, it comes as a very light-weight package, but requires Ghostscript as a dependency (a major one at that). Also, since every mime-type to postscript conversion happens through filters, enhancing the number of file types supported by adding new filters will be pluggable. I found this quite useful in that regard [http://www.ibm.com/developerworks/library/l-dvi-filter.html IBM guide].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) The feature to store the converted PDF as a Journal entry.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) A way to send the PDF at hand to a Moodle install on the SchoolServer (XS)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4) An interface in Moodle for the admin and teachers to send for printing. (which is a site-wide activity)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;5) The feature to also Print to a local printing device from within sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6) A way to set the page ranges(currently not functional due to a bug) and Select the Printer in case of multiple printers from within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7) The ability to monitor the Print Queues through a Frame item, which is the print device icon.&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies:&#039;&#039;&#039;&lt;br /&gt;
Cups, pycups, gconf, Cups-PDF.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
:1) Install the XO bundle to your activities folder. The dependencies will require you be as root.&lt;br /&gt;
:2) Download the PrintDeviceIcon from here: and place it in your sugar data folder, also note that you must have a copy of printscript.py in it.&lt;br /&gt;
:3) Download the following filter pack:&lt;br /&gt;
:4) untar it using : tar xvfz odftops.tar.gz&lt;br /&gt;
:5) Do mv odftops.convs /etc/cups&lt;br /&gt;
:      mv odftops.types /etc/cups&lt;br /&gt;
:      mv odftops /usr/lib/cups/filter&lt;br /&gt;
:      CHMOD 755 /usr/lib/cups/filter/odftops&lt;br /&gt;
:      Set SELINUX (If you have it) to Permissive or do a restorecon on the filter folder.&lt;br /&gt;
:6) restart cups&lt;br /&gt;
:7) To sugar-100.gtkrc and sugar-72.gtkrc add: gtk-print-backends = &amp;quot;cups&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Some experiments have determined that the default installation of Cups you have might not work and the filter may fail, so you might want to update to a newer Cups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle Print Module Installation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Please follow this: [http://docs.moodle.org/en/Installing_contributed_modules_or_plugins#Module_installation Module installation]&lt;br /&gt;
:There is a video for this as well: [http://www.youtube.com/watch?v=pPUB_ReBPeg youtube link]&lt;br /&gt;
&lt;br /&gt;
====Bugs====&lt;br /&gt;
&lt;br /&gt;
:1) Set ranges wont get printed.&lt;br /&gt;
:2) Despite having jobs in the Print Activity in Moodle, it will show that no assignments have been submitted.&lt;br /&gt;
&lt;br /&gt;
====Expansions and the Future====&lt;br /&gt;
&lt;br /&gt;
:1) Adding A settings page to Moodle&lt;br /&gt;
:2) Integrating Network printing, printer sharing and Redesigning some of the interface.&lt;br /&gt;
&lt;br /&gt;
====Guide====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; So if you&#039;ve been wondering on how to use this, here is the guide:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:After installing both the activities,&lt;br /&gt;
:1) You can Open a file with Print in two ways, either by directly clicking the activity which will prompt you with a journal browser, from which you can select the file.&lt;br /&gt;
:or right click on a file in the journal and open with Print.&lt;br /&gt;
&lt;br /&gt;
:2) In Print, you can either directly hit Print in the default toolbar, or hit send to moodle, ( sorry no notifications here currently)&lt;br /&gt;
&lt;br /&gt;
:Or you can go into the specialized Print Setup toolbar, and select the pageranges and the printer and print to it.&lt;br /&gt;
&lt;br /&gt;
:3) While an USB Printer is plugged, you will notice that the Frame has a Printer Icon in it at the bottom. This is the printer device icon. When there is no job it just shows you the Name of the Printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:And when you have jobs piled up you can see the statuses of those jobs in the icon and can cancel a job which is still in the queue.&lt;br /&gt;
&lt;br /&gt;
:4) In Moodle, you will have Print under site activities(Please add it only to the site activities, some bad magic is known to take place if you add it elsewhere first, to be fixed soon). After adding it and setting the size of Print items, you will have an activity ready.&lt;br /&gt;
&lt;br /&gt;
:5) The print requests from the XO user should present themselves in moodle&#039;s Print&#039;s admin/teacher page.&lt;br /&gt;
&lt;br /&gt;
:6) You will notice an ugly Print button, which will do the job&lt;br /&gt;
&lt;br /&gt;
:7) Also as an alternate, users can up documents to their Print page, and teachers can then do the Printing as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;Soon to come Pics Showing the same&amp;gt;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35492</id>
		<title>Print Support Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35492"/>
		<updated>2009-08-21T23:56:43Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Introduction====&lt;br /&gt;
&lt;br /&gt;
:Printing had been one of the &amp;quot;to be taken as granted&amp;quot; features that Sugar lacked. And only after getting a working model done has it been a realisation to me why it had been abandoned. A lot of [re]engineering, brain-storming, design constraints, and factors such as dependencies and inclusion of concepts beyond any direct correlation with Printing, plus fighting with additional languages such as C,C++ and php had been a great overhead on me. So the outcome is definitely a bit clunky ( what I feel), but anyway, I assure you, I will be sticking with the project and Sugar and will definitely make it more concrete.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) The feature to open any cups supported MIME-type file(including ODT when done right) and display it.&lt;br /&gt;
:&#039;&#039;Dev-interest:&#039;&#039; I have used [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ CUPS-PDF] as the agent of conversion, it comes as a very light-weight package, but requires Ghostscript as a dependency (a major one at that). Also, since every mime-type to postscript conversion happens through filters, enhancing the number of file types supported by adding new filters will be pluggable. I found this quite useful in that regard [http://www.ibm.com/developerworks/library/l-dvi-filter.html IBM guide].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) The feature to store the converted PDF as a Journal entry.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) A way to send the PDF at hand to a Moodle install on the SchoolServer (XS)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4) An interface in Moodle for the admin and teachers to send for printing. (which is a site-wide activity)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;5) The feature to also Print to a local printing device from within sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6) A way to set the page ranges(currently not functional due to a bug) and Select the Printer in case of multiple printers from within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7) The ability to monitor the Print Queues through a Frame item, which is the print device icon.&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies:&#039;&#039;&#039;&lt;br /&gt;
Cups, pycups, gconf, Cups-PDF.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
:1) Install the XO bundle to your activities folder. The dependencies will require you be as root.&lt;br /&gt;
:2) Download the PrintDeviceIcon from here: and place it in your sugar data folder, also note that you must have a copy of printscript.py in it.&lt;br /&gt;
:3) Download the following filter pack:&lt;br /&gt;
:4) untar it using : tar xvfz odftops.tar.gz&lt;br /&gt;
:5) Do mv odftops.convs /etc/cups&lt;br /&gt;
:      mv odftops.types /etc/cups&lt;br /&gt;
:      mv odftops /usr/lib/cups/filter&lt;br /&gt;
:      CHMOD 755 /usr/lib/cups/filter/odftops&lt;br /&gt;
:6) restart cups&lt;br /&gt;
:7) To sugar-100.gtkrc and sugar-72.gtkrc add: gtk-print-backends = &amp;quot;cups&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Some experiments have determined that the default installation of Cups you have might not work and the filter may fail, so you might want to update to a newer Cups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Moodle Print Module Installation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Please follow this: [http://docs.moodle.org/en/Installing_contributed_modules_or_plugins#Module_installation Module installation]&lt;br /&gt;
:There is a video for this as well: [http://www.youtube.com/watch?v=pPUB_ReBPeg youtube link]&lt;br /&gt;
&lt;br /&gt;
====Bugs====&lt;br /&gt;
&lt;br /&gt;
:1) Set ranges wont get printed.&lt;br /&gt;
:2) Despite having jobs in the Print Activity in Moodle, it will show that no assignments have been submitted.&lt;br /&gt;
&lt;br /&gt;
====Expansions and the Future====&lt;br /&gt;
&lt;br /&gt;
:1) Adding A settings page to Moodle&lt;br /&gt;
:2) Integrating Network printing, printer sharing and Redesigning some of the interface.&lt;br /&gt;
&lt;br /&gt;
====Guide====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; So if you&#039;ve been wondering on how to use this, here is the guide:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:After installing both the activities,&lt;br /&gt;
:1) You can Open a file with Print in two ways, either by directly clicking the activity which will prompt you with a journal browser, from which you can select the file.&lt;br /&gt;
:or right click on a file in the journal and open with Print.&lt;br /&gt;
&lt;br /&gt;
:2) In Print, you can either directly hit Print in the default toolbar, or hit send to moodle, ( sorry no notifications here currently)&lt;br /&gt;
&lt;br /&gt;
:Or you can go into the specialized Print Setup toolbar, and select the pageranges and the printer and print to it.&lt;br /&gt;
&lt;br /&gt;
:3) While an USB Printer is plugged, you will notice that the Frame has a Printer Icon in it at the bottom. This is the printer device icon. When there is no job it just shows you the Name of the Printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:And when you have jobs piled up you can see the statuses of those jobs in the icon and can cancel a job which is still in the queue.&lt;br /&gt;
&lt;br /&gt;
:4) In Moodle, you will have Print under site activities(Please add it only to the site activities, some bad magic is known to take place if you add it elsewhere first, to be fixed soon). After adding it and setting the size of Print items, you will have an activity ready.&lt;br /&gt;
&lt;br /&gt;
:5) The print requests from the XO user should present themselves in moodle&#039;s Print&#039;s admin/teacher page.&lt;br /&gt;
&lt;br /&gt;
:6) You will notice an ugly Print button, which will do the job&lt;br /&gt;
&lt;br /&gt;
:7) Also as an alternate, users can up documents to their Print page, and teachers can then do the Printing as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;Soon to come Pics Showing the same&amp;gt;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35491</id>
		<title>Print Support Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35491"/>
		<updated>2009-08-21T23:52:12Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Introduction====&lt;br /&gt;
&lt;br /&gt;
:Printing had been one of the &amp;quot;to be taken as granted&amp;quot; features that Sugar lacked. And only after getting a working model done has it been a realisation to me why it had been abandoned. A lot of [re]engineering, brain-storming, design constraints, and factors such as dependencies and inclusion of concepts beyond any direct correlation with Printing, plus fighting with additional languages such as C,C++ and php had been a great overhead on me. So the outcome is definitely a bit clunky ( what I feel), but anyway, I assure you, I will be sticking with the project and Sugar and will definitely make it more concrete.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) The feature to open any cups supported MIME-type file(including ODT when done right) and display it.&lt;br /&gt;
:&#039;&#039;Dev-interest:&#039;&#039; I have used [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ CUPS-PDF] as the agent of conversion, it comes as a very light-weight package, but requires Ghostscript as a dependency (a major one at that). Also, since every mime-type to postscript conversion happens through filters, enhancing the number of file types supported by adding new filters will be pluggable. I found this quite useful in that regard [http://www.ibm.com/developerworks/library/l-dvi-filter.html IBM guide].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) The feature to store the converted PDF as a Journal entry.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) A way to send the PDF at hand to a Moodle install on the SchoolServer (XS)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4) An interface in Moodle for the admin and teachers to send for printing. (which is a site-wide activity)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;5) The feature to also Print to a local printing device from within sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6) A way to set the page ranges(currently not functional due to a bug) and Select the Printer in case of multiple printers from within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7) The ability to monitor the Print Queues through a Frame item, which is the print device icon.&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies:&#039;&#039;&#039;&lt;br /&gt;
Cups, pycups, gconf, Cups-PDF.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
:1) Install the XO bundle to your activities folder. The dependencies will require you be as root.&lt;br /&gt;
:2) Download the PrintDeviceIcon from here: and place it in your sugar data folder, also note that you must have a copy of printscript.py in it.&lt;br /&gt;
:3) Download the following filter pack:&lt;br /&gt;
:4) untar it using : tar xvfz odftops.tar.gz&lt;br /&gt;
:5) Do mv odftops.convs /etc/cups&lt;br /&gt;
:      mv odftops.types /etc/cups&lt;br /&gt;
:      mv odftops /usr/lib/cups/filter&lt;br /&gt;
:      CHMOD 755 /usr/lib/cups/filter/odftops&lt;br /&gt;
:6) restart cups&lt;br /&gt;
:7) To sugar-100.gtkrc and sugar-72.gtkrc add: gtk-print-backends = &amp;quot;cups&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Some experiments have determined that the default installation of Cups you have might not work and the filter may fail, so you might want to update to a newer Cups.&lt;br /&gt;
&lt;br /&gt;
====Bugs====&lt;br /&gt;
&lt;br /&gt;
:1) Set ranges wont get printed.&lt;br /&gt;
:2) Despite having jobs in the Print Activity in Moodle, it will show that no assignments have been submitted.&lt;br /&gt;
&lt;br /&gt;
====Expansions and the Future====&lt;br /&gt;
&lt;br /&gt;
:1) Adding A settings page to Moodle&lt;br /&gt;
:2) Integrating Network printing, printer sharing and Redesigning some of the interface.&lt;br /&gt;
&lt;br /&gt;
====Guide====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; So if you&#039;ve been wondering on how to use this, here is the guide:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:After installing both the activities,&lt;br /&gt;
:1) You can Open a file with Print in two ways, either by directly clicking the activity which will prompt you with a journal browser, from which you can select the file.&lt;br /&gt;
:or right click on a file in the journal and open with Print.&lt;br /&gt;
&lt;br /&gt;
:2) In Print, you can either directly hit Print in the default toolbar, or hit send to moodle, ( sorry no notifications here currently)&lt;br /&gt;
&lt;br /&gt;
:Or you can go into the specialized Print Setup toolbar, and select the pageranges and the printer and print to it.&lt;br /&gt;
&lt;br /&gt;
:3) While an USB Printer is plugged, you will notice that the Frame has a Printer Icon in it at the bottom. This is the printer device icon. When there is no job it just shows you the Name of the Printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:And when you have jobs piled up you can see the statuses of those jobs in the icon and can cancel a job which is still in the queue.&lt;br /&gt;
&lt;br /&gt;
:4) In Moodle, you will have Print under site activities(Please add it only to the site activities, some bad magic is known to take place if you add it elsewhere first, to be fixed soon). After adding it and setting the size of Print items, you will have an activity ready.&lt;br /&gt;
&lt;br /&gt;
:5) The print requests from the XO user should present themselves in moodle&#039;s Print&#039;s admin/teacher page.&lt;br /&gt;
&lt;br /&gt;
:6) You will notice an ugly Print button, which will do the job&lt;br /&gt;
&lt;br /&gt;
:7) Also as an alternate, users can up documents to their Print page, and teachers can then do the Printing as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;Soon to come Pics Showing the same&amp;gt;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35490</id>
		<title>Print Support Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35490"/>
		<updated>2009-08-21T22:46:34Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Introduction====&lt;br /&gt;
&lt;br /&gt;
:Printing had been one of the &amp;quot;to be taken as granted&amp;quot; features that Sugar lacked. And only after getting a working model done has it been a realisation to me why it had been abandoned. A lot of [re]engineering, brain-storming, design constraints, and factors such as dependencies and inclusion of concepts beyond any direct correlation with Printing, plus fighting with additional languages such as C,C++ and php had been a great overhead on me. So the outcome is definitely a bit clunky ( what I feel), but anyway, I assure you, I will be sticking with the project and Sugar and will definitely make it more concrete.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) The feature to open any cups supported MIME-type file(including ODT when done right) and display it.&lt;br /&gt;
:&#039;&#039;Dev-interest:&#039;&#039; I have used [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ CUPS-PDF] as the agent of conversion, it comes as a very light-weight package, but requires Ghostscript as a dependency (a major one at that). Also, since every mime-type to postscript conversion happens through filters, enhancing the number of file types supported by adding new filters will be pluggable. I found this quite useful in that regard [http://www.ibm.com/developerworks/library/l-dvi-filter.html IBM guide].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) The feature to store the converted PDF as a Journal entry.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) A way to send the PDF at hand to a Moodle install on the SchoolServer (XS)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4) An interface in Moodle for the admin and teachers to send for printing. (which is a site-wide activity)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;5) The feature to also Print to a local printing device from within sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6) A way to set the page ranges(currently not functional due to a bug) and Select the Printer in case of multiple printers from within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7) The ability to monitor the Print Queues through a Frame item, which is the print device icon.&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies:&#039;&#039;&#039;&lt;br /&gt;
Cups, pycups, gconf, Cups-PDF.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
:1) Install the XO bundle to your activities folder. The dependencies will require you be as root.&lt;br /&gt;
:2) Download the PrintDeviceIcon from here: and place it in your sugar data folder.&lt;br /&gt;
:3) Download the following filter pack:&lt;br /&gt;
:4) untar it using : tar xvfz odftops.tar.gz&lt;br /&gt;
:5) Do mv odftops.convs /etc/cups&lt;br /&gt;
:      mv odftops.types /etc/cups&lt;br /&gt;
:      mv odftops /usr/lib/cups/filter&lt;br /&gt;
:      CHMOD 755 /usr/lib/cups/filter/odftops&lt;br /&gt;
:6) restart cups&lt;br /&gt;
:7) To sugar-100.gtkrc and sugar-72.gtkrc add: gtk-print-backends = &amp;quot;cups&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Some experiments have determined that the default installation of Cups you have might not work and the filter may fail, so you might want to update to a newer Cups.&lt;br /&gt;
&lt;br /&gt;
====Bugs====&lt;br /&gt;
&lt;br /&gt;
:1) Set ranges wont get printed.&lt;br /&gt;
:2) Despite having jobs in the Print Activity in Moodle, it will show that no assignments have been submitted.&lt;br /&gt;
&lt;br /&gt;
====Expansions and the Future====&lt;br /&gt;
&lt;br /&gt;
:1) Adding A settings page to Moodle&lt;br /&gt;
:2) Integrating Network printing, printer sharing and Redesigning some of the interface.&lt;br /&gt;
&lt;br /&gt;
====Guide====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; So if you&#039;ve been wondering on how to use this, here is the guide:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:After installing both the activities,&lt;br /&gt;
:1) You can Open a file with Print in two ways, either by directly clicking the activity which will prompt you with a journal browser, from which you can select the file.&lt;br /&gt;
:or right click on a file in the journal and open with Print.&lt;br /&gt;
&lt;br /&gt;
:2) In Print, you can either directly hit Print in the default toolbar, or hit send to moodle, ( sorry no notifications here currently)&lt;br /&gt;
&lt;br /&gt;
:Or you can go into the specialized Print Setup toolbar, and select the pageranges and the printer and print to it.&lt;br /&gt;
&lt;br /&gt;
:3) While an USB Printer is plugged, you will notice that the Frame has a Printer Icon in it at the bottom. This is the printer device icon. When there is no job it just shows you the Name of the Printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:And when you have jobs piled up you can see the statuses of those jobs in the icon and can cancel a job which is still in the queue.&lt;br /&gt;
&lt;br /&gt;
:4) In Moodle, you will have Print under site activities(Please add it only to the site activities, some bad magic is known to take place if you add it elsewhere first, to be fixed soon). After adding it and setting the size of Print items, you will have an activity ready.&lt;br /&gt;
&lt;br /&gt;
:5) The print requests from the XO user should present themselves in moodle&#039;s Print&#039;s admin/teacher page.&lt;br /&gt;
&lt;br /&gt;
:6) You will notice an ugly Print button, which will do the job&lt;br /&gt;
&lt;br /&gt;
:7) Also as an alternate, users can up documents to their Print page, and teachers can then do the Printing as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;Soon to come Pics Showing the same&amp;gt;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35489</id>
		<title>Print Support Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35489"/>
		<updated>2009-08-21T22:38:21Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Introduction====&lt;br /&gt;
&lt;br /&gt;
:Printing had been one of the &amp;quot;to be taken as granted&amp;quot; features that Sugar lacked. And only after getting a working model done has it been a realisation to me why it had been abandoned. A lot of [re]engineering, brain-storming, design constraints, and factors such as dependencies and inclusion of concepts beyond any direct correlation with Printing, plus fighting with additional languages such as C,C++ and php had been a great overhead on me. So the outcome is definitely a bit clunky ( what I feel), but anyway, I assure you, I will be sticking with the project and Sugar and will make definitely make it more concrete.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) The feature to open any cups supported MIME-type file(including ODT when done right) and display it.&lt;br /&gt;
:&#039;&#039;Dev-interest:&#039;&#039; I have used [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ CUPS-PDF] as the agent of conversion, it comes as a very light-weight package, but requires Ghostscript as a dependency (a major one at that). Also, since every mime-type to postscript conversion happens through filters, enhancing the number of file types supported by adding new filters will be pluggable. I found this quite useful in that regard [http://www.ibm.com/developerworks/library/l-dvi-filter.html IBM guide].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) The feature to store the converted PDF as a Journal entry.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) A way to send the PDF at hand to a Moodle install on the SchoolServer (XS)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4) An interface in Moodle for the admin and teachers to send for printing. (which is a site-wide activity)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;5) The feature to also Print to a local printing device from within sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6) A way to set the page ranges(currently not functional due to a bug) and Select the Printer in case of multiple printers from within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7) The ability to monitor the Print Queues through a Frame item, which is the print device icon.&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies:&#039;&#039;&#039;&lt;br /&gt;
Cups, pycups, gconf, Cups-PDF.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
:1) Install the XO bundle to your activities folder. The dependencies will require you be as root.&lt;br /&gt;
:2) Download the PrintDeviceIcon from here: and place it in your sugar data folder.&lt;br /&gt;
:3) Download the following filter pack:&lt;br /&gt;
:4) untar it using : tar xvfz odftops.tar.gz&lt;br /&gt;
:5) Do mv odftops.convs /etc/cups&lt;br /&gt;
:      mv odftops.types /etc/cups&lt;br /&gt;
:      mv odftops /usr/lib/cups/filter&lt;br /&gt;
:      CHMOD 755 /usr/lib/cups/filter/odftops&lt;br /&gt;
:6) restart cups&lt;br /&gt;
:7) To sugar-100.gtkrc and sugar-72.gtkrc add: gtk-print-backends = &amp;quot;cups&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Some experiments have determined that the default installation of Cups you have might not work and the filter may fail, so you might want to update to a newer Cups.&lt;br /&gt;
&lt;br /&gt;
====Bugs====&lt;br /&gt;
&lt;br /&gt;
:1) Set ranges wont get printed.&lt;br /&gt;
:2) Despite having jobs in the Print Activity in Moodle, it will show that no assignments have been submitted.&lt;br /&gt;
&lt;br /&gt;
====Expansions and the Future====&lt;br /&gt;
&lt;br /&gt;
:1) Adding A settings page to Moodle&lt;br /&gt;
:2) Integrating Network printing, printer sharing and Redesigning some of the interface.&lt;br /&gt;
&lt;br /&gt;
====Guide====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; So if you&#039;ve been wondering on how to use this, here is the guide:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:After installing both the activities,&lt;br /&gt;
:1) You can Open a file with Print in two ways, either by directly clicking the activity which will prompt you with a journal browser, from which you can select the file.&lt;br /&gt;
:or right click on a file in the journal and open with Print.&lt;br /&gt;
&lt;br /&gt;
:2) In Print, you can either directly hit Print in the default toolbar, or hit send to moodle, ( sorry no notifications here currently)&lt;br /&gt;
&lt;br /&gt;
:Or you can go into the specialized Print Setup toolbar, and select the pageranges and the printer and print to it.&lt;br /&gt;
&lt;br /&gt;
:3) While an USB Printer is plugged, you will notice that the Frame has a Printer Icon in it at the bottom. This is the printer device icon. When there is no job it just shows you the Name of the Printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:And when you have jobs piled up you can see the statuses of those jobs in the icon and can cancel a job which is still in the queue.&lt;br /&gt;
&lt;br /&gt;
:4) In Moodle, you will have Print under site activities(Please add it only to the site activities, some bad magic is known to take place if you add it elsewhere first, to be fixed soon). After adding it and setting the size of Print items, you will have an activity ready.&lt;br /&gt;
&lt;br /&gt;
:5) The print requests from the XO user should present themselves in moodle&#039;s Print&#039;s admin/teacher page.&lt;br /&gt;
&lt;br /&gt;
:6) You will notice an ugly Print button, which will do the job&lt;br /&gt;
&lt;br /&gt;
:7) Also as an alternate, users can up documents to their Print page, and teachers can then do the Printing as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;Soon to come Pics Showing the same&amp;gt;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35488</id>
		<title>Print Support Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Print_Support_Manual&amp;diff=35488"/>
		<updated>2009-08-21T22:37:30Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: Created page with &amp;#039;====Introduction====  :Printing had been one of the &amp;quot;to be taken as granted&amp;quot; features that Sugar lacked. And only after getting a working model done has it been a realisation to …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====Introduction====&lt;br /&gt;
&lt;br /&gt;
:Printing had been one of the &amp;quot;to be taken as granted&amp;quot; features that Sugar lacked. And only after getting a working model done has it been a realisation to me why it had been abandoned. A lot of [re]engineering, brain-storming, design constraints, and factors such as dependencies and inclusion of concepts beyond any direct correlation with Printing, plus fighting with additional languages such as C,C++ and php had been a great overhead on me. So the outcome is definitely a bit clunky ( what I feel), but anyway, I assure you, I will be sticking with the project and Sugar and will make definitely make it more concrete.&lt;br /&gt;
&lt;br /&gt;
====Features====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) The feature to open any cups supported MIME-type file(including ODT when done right) and display it.&lt;br /&gt;
:&#039;&#039;Dev-interest:&#039;&#039; I have used [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/ CUPS-PDF] as the agent of conversion, it comes as a very light-weight package, but requires Ghostscript as a dependency (a major one at that). Also, since every mime-type to postscript conversion happens through filters, enhancing the number of file types supported by adding new filters will be pluggable. I found this quite useful in that regard [http://www.ibm.com/developerworks/library/l-dvi-filter.html IBM guide].&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) The feature to store the converted PDF as a Journal entry.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) A way to send the PDF at hand to a Moodle install on the SchoolServer (XS)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4) An interface in Moodle for the admin and teachers to send for printing. (which is a site-wide activity)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;5) The feature to also Print to a local printing device from within sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6) A way to set the page ranges(currently not functional due to a bug) and Select the Printer in case of multiple printers from within Sugar.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7) The ability to monitor the Print Queues through a Frame item, which is the print device icon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Installation====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dependencies:&#039;&#039;&#039;&lt;br /&gt;
Cups, pycups, gconf, Cups-PDF.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
:1) Install the XO bundle to your activities folder. The dependencies will require you be as root.&lt;br /&gt;
:2) Download the PrintDeviceIcon from here: and place it in your sugar data folder.&lt;br /&gt;
:3) Download the following filter pack:&lt;br /&gt;
:4) untar it using : tar xvfz odftops.tar.gz&lt;br /&gt;
:5) Do mv odftops.convs /etc/cups&lt;br /&gt;
:      mv odftops.types /etc/cups&lt;br /&gt;
:      mv odftops /usr/lib/cups/filter&lt;br /&gt;
:      CHMOD 755 /usr/lib/cups/filter/odftops&lt;br /&gt;
:6) restart cups&lt;br /&gt;
:7) To sugar-100.gtkrc and sugar-72.gtkrc add: gtk-print-backends = &amp;quot;cups&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Some experiments have determined that the default installation of Cups you have might not work and the filter may fail, so you might want to update to a newer Cups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Bugs====&lt;br /&gt;
&lt;br /&gt;
:1) Set ranges wont get printed.&lt;br /&gt;
:2) Despite having jobs in the Print Activity in Moodle, it will show that no assignments have been submitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Expansions and the Future====&lt;br /&gt;
&lt;br /&gt;
:1) Adding A settings page to Moodle&lt;br /&gt;
:2) Integrating Network printing, printer sharing and Redesigning some of the interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Guide====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; So if you&#039;ve been wondering on how to use this, here is the guide:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:After installing both the activities,&lt;br /&gt;
:1) You can Open a file with Print in two ways, either by directly clicking the activity which will prompt you with a journal browser, from which you can select the file.&lt;br /&gt;
:or right click on a file in the journal and open with Print.&lt;br /&gt;
&lt;br /&gt;
:2) In Print, you can either directly hit Print in the default toolbar, or hit send to moodle, ( sorry no notifications here currently)&lt;br /&gt;
&lt;br /&gt;
:Or you can go into the specialized Print Setup toolbar, and select the pageranges and the printer and print to it.&lt;br /&gt;
&lt;br /&gt;
:3) While an USB Printer is plugged, you will notice that the Frame has a Printer Icon in it at the bottom. This is the printer device icon. When there is no job it just shows you the Name of the Printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:And when you have jobs piled up you can see the statuses of those jobs in the icon and can cancel a job which is still in the queue.&lt;br /&gt;
&lt;br /&gt;
:4) In Moodle, you will have Print under site activities(Please add it only to the site activities, some bad magic is known to take place if you add it elsewhere first, to be fixed soon). After adding it and setting the size of Print items, you will have an activity ready.&lt;br /&gt;
&lt;br /&gt;
:5) The print requests from the XO user should present themselves in moodle&#039;s Print&#039;s admin/teacher page.&lt;br /&gt;
&lt;br /&gt;
:6) You will notice an ugly Print button, which will do the job&lt;br /&gt;
&lt;br /&gt;
:7) Also as an alternate, users can up documents to their Print page, and teachers can then do the Printing as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Soon to come Pics Showing the same&amp;gt;&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=29719</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=29719"/>
		<updated>2009-05-25T10:02:40Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About you */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in India (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039;&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. &amp;quot;print!&amp;quot;. When clicked, the item will be opened with Read and if its not a recognized format, convert it with cups-pdf and open with Read. and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The user can have a preview of his print, save it as a pdf in the journal, and send a PDFed version to moodle.&lt;br /&gt;
:advantage cups-pdf (text will be mapped as text only)&lt;br /&gt;
:Later on we can extend this to have a print button in every activity, so that the default activity which opens the object can print from itself.&lt;br /&gt;
&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:For step-1,We hack into Read and create a new print toolbar, one with direct printing, one with moodle printing, and one with export as pdf. For all things other than direct printing a dummy pdf is created.&lt;br /&gt;
:For Read to send jobs to moodle and get the queue details we use xmlrpclib , and send only as much as the number of free slots .  (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
:We will also provide a way so the user can send only pdf files through the moodle user page, which will be based on the upload many number of files module.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:: Start work on Read and add printing buttons to it (see that they do their jobs), and write minimal journal code.&lt;br /&gt;
             &lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:: hack on browse so it can save html files, and see to it that read can convert and save all files to pdf and send to moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.(Hack the &#039;upload several assignments&#039; code and make a new plugin out of it.)&lt;br /&gt;
:Use xml-rpc to link moodle&#039;s datastore with Read code&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;:&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 4&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Make an extended print dialog activity (use gtkprint dialog), which has options such as select printer and pages for local and pdf printing and moodle added as printer option.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Replicate the features in each activity, so that when opened with default activity in journal, they can print.&lt;br /&gt;
&lt;br /&gt;
:Milestone 4 result : &#039;&#039; Well we have everything set up folks! APART from wifi printing! get feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Then&#039;&#039;&#039;:&lt;br /&gt;
:Fix last minute bugs, check with a sample deployment.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi. This will be .This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 GPA, the SoaS pilot school in Boston MA&lt;br /&gt;
&lt;br /&gt;
GPA has the following network printers&lt;br /&gt;
&lt;br /&gt;
Their network printers are :&lt;br /&gt;
 *  Xerox Phaser 3400&lt;br /&gt;
 *  Xerox Phaser 3500&lt;br /&gt;
 *  Xerox Phaser 6360DN&lt;br /&gt;
 *  HP Laserjet 2100&lt;br /&gt;
 *  Lexmark Optra T520&lt;br /&gt;
 *  Lexmark Optra M410&lt;br /&gt;
 *  Xerox Document Centre 470&lt;br /&gt;
&lt;br /&gt;
Currently they do not let students print, but since students only use a computer for an hour a week this is not a hardship. As they have students compute more they would like them to be able to print.&lt;br /&gt;
&lt;br /&gt;
I asked them which of the following was their current biggest problem:&lt;br /&gt;
&lt;br /&gt;
 #1  The printers are too busy, you have to wait for your documents to print out.&lt;br /&gt;
 #2  There is not enough money to buy toner and paper.&lt;br /&gt;
 #3 The printers are too far away, the teachers have to waste time walking to get their printouts.&lt;br /&gt;
 #4  The printing system is too confusing or broken and people can&#039;t get their stuff to print on the printer they want to use.&lt;br /&gt;
&lt;br /&gt;
#3 is definitely this schools biggest issue.&lt;br /&gt;
&lt;br /&gt;
We will be collecting used computers for the SoaS project.  We could probably easily also get donations of small printers for each classroom and it sounds like they would want that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=28005</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=28005"/>
		<updated>2009-04-24T19:31:10Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039;&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. &amp;quot;print!&amp;quot;. When clicked, the item will be opened with Read and if its not a recognized format, convert it with cups-pdf and open with Read. and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The user can have a preview of his print, save it as a pdf in the journal, and send a PDFed version to moodle.&lt;br /&gt;
:advantage cups-pdf (text will be mapped as text only)&lt;br /&gt;
:Later on we can extend this to have a print button in every activity, so that the default activity which opens the object can print from itself.&lt;br /&gt;
&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:For step-1,We hack into Read and create a new print toolbar, one with direct printing, one with moodle printing, and one with export as pdf. For all things other than direct printing a dummy pdf is created.&lt;br /&gt;
:For Read to send jobs to moodle and get the queue details we use xmlrpclib , and send only as much as the number of free slots .  (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
:We will also provide a way so the user can send only pdf files through the moodle user page, which will be based on the upload many number of files module.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:: Start work on Read and add printing buttons to it (see that they do their jobs), and write minimal journal code.&lt;br /&gt;
             &lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:: hack on browse so it can save html files, and see to it that read can convert and save all files to pdf and send to moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.(Hack the &#039;upload several assignments&#039; code and make a new plugin out of it.)&lt;br /&gt;
:Use xml-rpc to link moodle&#039;s datastore with Read code&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;:&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 4&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Make an extended print dialog activity (use gtkprint dialog), which has options such as select printer and pages for local and pdf printing and moodle added as printer option.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Replicate the features in each activity, so that when opened with default activity in journal, they can print.&lt;br /&gt;
&lt;br /&gt;
:Milestone 4 result : &#039;&#039; Well we have everything set up folks! APART from wifi printing! get feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Then&#039;&#039;&#039;:&lt;br /&gt;
:Fix last minute bugs, check with a sample deployment.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi. This will be .This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 GPA, the SoaS pilot school in Boston MA&lt;br /&gt;
&lt;br /&gt;
GPA has the following network printers&lt;br /&gt;
&lt;br /&gt;
Their network printers are :&lt;br /&gt;
 *  Xerox Phaser 3400&lt;br /&gt;
 *  Xerox Phaser 3500&lt;br /&gt;
 *  Xerox Phaser 6360DN&lt;br /&gt;
 *  HP Laserjet 2100&lt;br /&gt;
 *  Lexmark Optra T520&lt;br /&gt;
 *  Lexmark Optra M410&lt;br /&gt;
 *  Xerox Document Centre 470&lt;br /&gt;
&lt;br /&gt;
Currently they do not let students print, but since students only use a computer for an hour a week this is not a hardship. As they have students compute more they would like them to be able to print.&lt;br /&gt;
&lt;br /&gt;
I asked them which of the following was their current biggest problem:&lt;br /&gt;
&lt;br /&gt;
 #1  The printers are too busy, you have to wait for your documents to print out.&lt;br /&gt;
 #2  There is not enough money to buy toner and paper.&lt;br /&gt;
 #3 The printers are too far away, the teachers have to waste time walking to get their printouts.&lt;br /&gt;
 #4  The printing system is too confusing or broken and people can&#039;t get their stuff to print on the printer they want to use.&lt;br /&gt;
&lt;br /&gt;
#3 is definitely this schools biggest issue.&lt;br /&gt;
&lt;br /&gt;
We will be collecting used computers for the SoaS project.  We could probably easily also get donations of small printers for each classroom and it sounds like they would want that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27871</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27871"/>
		<updated>2009-04-23T13:55:16Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039;&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. &amp;quot;print!&amp;quot;. When clicked, the item will be opened with Read and if its not a recognized format, convert it with cups-pdf and open with Read. and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The user can have a preview of his print, save it as a pdf in the journal, and send a PDFed version to moodle.&lt;br /&gt;
:advantage cups-pdf (text will be mapped as text only)&lt;br /&gt;
:Later on we can extend this to have a print button in every activity, so that the default activity which opens the object can print from itself.&lt;br /&gt;
&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:For step-1,We hack into Read and create a new print toolbar, one with direct printing, one with moodle printing, and one with export as pdf. For all things other than direct printing a dummy pdf is created.&lt;br /&gt;
:For Read to send jobs to moodle and get the queue details we use xmlrpclib , and send only as much as the number of free slots .  (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
:We will also provide a way so the user can send only pdf files through the moodle user page, which will be based on the upload many number of files module.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:: Start work on Read and add printing buttons to it (see that they do their jobs), and write minimal journal code.&lt;br /&gt;
             &lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:: hack on browse so it can save html files, and see to it that read can convert and save all files to pdf and send to moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.(Hack the &#039;upload several assignments&#039; code and make a new plugin out of it.)&lt;br /&gt;
:Use xml-rpc to link moodle&#039;s datastore with Read code&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;:&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 4&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Write an extended print dialog activity, which has options such as select printer and pages for local and pdf printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Replicate the features in each activity, so that when opened with default activity in journal, they can print.&lt;br /&gt;
&lt;br /&gt;
:Milestone 4 result : &#039;&#039; Well we have everything set up folks! APART from wifi printing! get feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Then&#039;&#039;&#039;:&lt;br /&gt;
:Fix last minute bugs, check with a sample deployment.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi. This will be .This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 GPA, the SoaS pilot school in Boston MA&lt;br /&gt;
&lt;br /&gt;
GPA has the following network printers&lt;br /&gt;
&lt;br /&gt;
Their network printers are :&lt;br /&gt;
 *  Xerox Phaser 3400&lt;br /&gt;
 *  Xerox Phaser 3500&lt;br /&gt;
 *  Xerox Phaser 6360DN&lt;br /&gt;
 *  HP Laserjet 2100&lt;br /&gt;
 *  Lexmark Optra T520&lt;br /&gt;
 *  Lexmark Optra M410&lt;br /&gt;
 *  Xerox Document Centre 470&lt;br /&gt;
&lt;br /&gt;
Currently they do not let students print, but since students only use a computer for an hour a week this is not a hardship. As they have students compute more they would like them to be able to print.&lt;br /&gt;
&lt;br /&gt;
I asked them which of the following was their current biggest problem:&lt;br /&gt;
&lt;br /&gt;
 #1  The printers are too busy, you have to wait for your documents to print out.&lt;br /&gt;
 #2  There is not enough money to buy toner and paper.&lt;br /&gt;
 #3 The printers are too far away, the teachers have to waste time walking to get their printouts.&lt;br /&gt;
 #4  The printing system is too confusing or broken and people can&#039;t get their stuff to print on the printer they want to use.&lt;br /&gt;
&lt;br /&gt;
#3 is definitely this schools biggest issue.&lt;br /&gt;
&lt;br /&gt;
We will be collecting used computers for the SoaS project.  We could probably easily also get donations of small printers for each classroom and it sounds like they would want that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27870</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27870"/>
		<updated>2009-04-23T13:53:59Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039;&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. &amp;quot;print!&amp;quot;. When clicked, the item will be opened with Read and if its not a recognized format, convert it with cups-pdf and open with Read. and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The user can have a preview of his print, save it as a pdf in the journal, and send a PDFed version to moodle.&lt;br /&gt;
:advantage cups-pdf (text will be mapped as text only)&lt;br /&gt;
:Later on we can extend this to have a print button in every activity, so that the default activity which opens the object can print from itself.&lt;br /&gt;
&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:For step-1,We hack into Read and create a new print toolbar, one with direct printing, one with moodle printing, and one with export as pdf. For all things other than direct printing a dummy pdf is created.&lt;br /&gt;
:For Read to send jobs to moodle and get the queue details we use xmlrpclib , and send only as much as the number of free slots .  (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
:We will also provide a way so the user can send only pdf files through the moodle user page, which will be based on the upload many number of files module.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:: Start work on Read and add printing buttons to it (see that they do their jobs), and write minimal journal code.&lt;br /&gt;
             &lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:: hack on browse so it can save html files, and see to it that read can convert and save all files to pdf and send to moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.(Hack the &#039;upload several assignments&#039; code and make a new plugin out of it.)&lt;br /&gt;
:Use xml-rpc to link moodle&#039;s datastore with Read code&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;:&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 4&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Write an extended print dialog activity, which has options such as select printer and pages for local and pdf printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Replicate the features in each activity, so that when opened with default activity in journal, they can print.&lt;br /&gt;
&lt;br /&gt;
Milestone 4 result : &#039;&#039; Well we have everything set up folks! APART from wifi printing! get feedback&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Then&#039;&#039;&#039;&lt;br /&gt;
Fix last minute bugs, check with a sample deployment.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi. This will be .This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 GPA, the SoaS pilot school in Boston MA&lt;br /&gt;
&lt;br /&gt;
GPA has the following network printers&lt;br /&gt;
&lt;br /&gt;
Their network printers are :&lt;br /&gt;
 *  Xerox Phaser 3400&lt;br /&gt;
 *  Xerox Phaser 3500&lt;br /&gt;
 *  Xerox Phaser 6360DN&lt;br /&gt;
 *  HP Laserjet 2100&lt;br /&gt;
 *  Lexmark Optra T520&lt;br /&gt;
 *  Lexmark Optra M410&lt;br /&gt;
 *  Xerox Document Centre 470&lt;br /&gt;
&lt;br /&gt;
Currently they do not let students print, but since students only use a computer for an hour a week this is not a hardship. As they have students compute more they would like them to be able to print.&lt;br /&gt;
&lt;br /&gt;
I asked them which of the following was their current biggest problem:&lt;br /&gt;
&lt;br /&gt;
 #1  The printers are too busy, you have to wait for your documents to print out.&lt;br /&gt;
 #2  There is not enough money to buy toner and paper.&lt;br /&gt;
 #3 The printers are too far away, the teachers have to waste time walking to get their printouts.&lt;br /&gt;
 #4  The printing system is too confusing or broken and people can&#039;t get their stuff to print on the printer they want to use.&lt;br /&gt;
&lt;br /&gt;
#3 is definitely this schools biggest issue.&lt;br /&gt;
&lt;br /&gt;
We will be collecting used computers for the SoaS project.  We could probably easily also get donations of small printers for each classroom and it sounds like they would want that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27869</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27869"/>
		<updated>2009-04-23T13:50:48Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039;&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. &amp;quot;print!&amp;quot;. When clicked, the item will be opened with Read and if its not a recognized format, convert it with cups-pdf and open with Read. and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The user can have a preview of his print, save it as a pdf in the journal, and send a PDFed version to moodle.&lt;br /&gt;
:advantage cups-pdf (text will be mapped as text only)&lt;br /&gt;
:Later on we can extend this to have a print button in every activity, so that the default activity which opens the object can print from itself.&lt;br /&gt;
&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:For step-1,We hack into Read and create a new print toolbar, one with direct printing, one with moodle printing, and one with export as pdf. For all things other than direct printing a dummy pdf is created.&lt;br /&gt;
:For Read to send jobs to moodle and get the queue details we use xmlrpclib , and send only as much as the number of free slots .  (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
:We will also provide a way so the user can send only pdf files through the moodle user page, which will be based on the upload many number of files module.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:: Start work on Read and add printing buttons to it (see that they do their jobs), and write minimal journal code.&lt;br /&gt;
             &lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:: hack on browse so it can save html files, and see to it that read can convert and save all files to pdf and send to moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.(Hack the &#039;upload several assignments&#039; code and make a new plugin out of it.)&lt;br /&gt;
:Use xml-rpc to link moodle&#039;s datastore with Read code&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;:&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 4&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Write an extended print dialog activity, which has options such as select printer and pages for local and pdf printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Replicate the features in each activity, so that when opened with default activity in journal, they can print.&lt;br /&gt;
:Fix Bugs!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi. This will be .This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 GPA, the SoaS pilot school in Boston MA&lt;br /&gt;
&lt;br /&gt;
GPA has the following network printers&lt;br /&gt;
&lt;br /&gt;
Their network printers are :&lt;br /&gt;
 *  Xerox Phaser 3400&lt;br /&gt;
 *  Xerox Phaser 3500&lt;br /&gt;
 *  Xerox Phaser 6360DN&lt;br /&gt;
 *  HP Laserjet 2100&lt;br /&gt;
 *  Lexmark Optra T520&lt;br /&gt;
 *  Lexmark Optra M410&lt;br /&gt;
 *  Xerox Document Centre 470&lt;br /&gt;
&lt;br /&gt;
Currently they do not let students print, but since students only use a computer for an hour a week this is not a hardship. As they have students compute more they would like them to be able to print.&lt;br /&gt;
&lt;br /&gt;
I asked them which of the following was their current biggest problem:&lt;br /&gt;
&lt;br /&gt;
 #1  The printers are too busy, you have to wait for your documents to print out.&lt;br /&gt;
 #2  There is not enough money to buy toner and paper.&lt;br /&gt;
 #3 The printers are too far away, the teachers have to waste time walking to get their printouts.&lt;br /&gt;
 #4  The printing system is too confusing or broken and people can&#039;t get their stuff to print on the printer they want to use.&lt;br /&gt;
&lt;br /&gt;
#3 is definitely this schools biggest issue.&lt;br /&gt;
&lt;br /&gt;
We will be collecting used computers for the SoaS project.  We could probably easily also get donations of small printers for each classroom and it sounds like they would want that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27536</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27536"/>
		<updated>2009-04-16T12:42:50Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;deprecated&amp;gt; &#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will result in a PDF file of the same parent in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
:&amp;lt;/deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As tomeu(the sugar maintainer) had pointed a potential disaster with the step-1 (which is the massive overhead if filters that would be needed for conversion with CUPS, and would be very hard to maintain) and after talking to him, I have sketched out this proposal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; Every PDF conversion takes place within the activity and it outputs that file to the datastore, the printing to devices such as usb printer also takes place within the activity itself. There will be a simple activity to choose and configure basic options (the advanced ones will not be messed with for simplicities sake, and in their place a default config will be written)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;deprecated&amp;gt;:For step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API.&amp;lt;/deprecated&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:For step-1, We use the py gtkprint api (a high level wrapper around CUPS), which prints any cairo supported objects,features methods to configure the printers and page layouts, and prints. http://pastebin.be/17860 Here is a hack of edit which I&#039;ve made. This Hack can pretty much print to any printer configured locally, and to pdf.&lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;:: Start work on Read and Write so they can save docs as PDF, and print to usb printer&lt;br /&gt;
            &lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
::Work on sugarizing a small printer config activity which can be written over gtkprint as backend&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi. This will be .This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 GPA, the SoaS pilot school in Boston MA&lt;br /&gt;
&lt;br /&gt;
GPA has the following network printers&lt;br /&gt;
&lt;br /&gt;
Their network printers are :&lt;br /&gt;
 *  Xerox Phaser 3400&lt;br /&gt;
 *  Xerox Phaser 3500&lt;br /&gt;
 *  Xerox Phaser 6360DN&lt;br /&gt;
 *  HP Laserjet 2100&lt;br /&gt;
 *  Lexmark Optra T520&lt;br /&gt;
 *  Lexmark Optra M410&lt;br /&gt;
 *  Xerox Document Centre 470&lt;br /&gt;
&lt;br /&gt;
Currently they do not let students print, but since students only use a computer for an hour a week this is not a hardship. As they have students compute more they would like them to be able to print.&lt;br /&gt;
&lt;br /&gt;
I asked them which of the following was their current biggest problem:&lt;br /&gt;
&lt;br /&gt;
 #1  The printers are too busy, you have to wait for your documents to print out.&lt;br /&gt;
 #2  There is not enough money to buy toner and paper.&lt;br /&gt;
 #3 The printers are too far away, the teachers have to waste time walking to get their printouts.&lt;br /&gt;
 #4  The printing system is too confusing or broken and people can&#039;t get their stuff to print on the printer they want to use.&lt;br /&gt;
&lt;br /&gt;
#3 is definitely this schools biggest issue.&lt;br /&gt;
&lt;br /&gt;
We will be collecting used computers for the SoaS project.  We could probably easily also get donations of small printers for each classroom and it sounds like they would want that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27535</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27535"/>
		<updated>2009-04-16T12:38:37Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;deprecated&amp;gt; &#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will result in a PDF file of the same parent in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
:&amp;lt;/deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As tomeu(the sugar maintainer) had pointed a potential disaster with the step-1 (which is the massive overhead if filters that would be needed for conversion with CUPS, and would be very hard to maintain) and after talking to him, I have sketched out this proposal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; Every PDF conversion takes place within the activity and it outputs that file to the datastore, the printing to devices such as usb printer also takes place within the activity itself. There will be a simple activity to choose and configure basic options (the advanced ones will not be messed with for simplicities sake, and in their place a default config will be written)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;deprecated&amp;gt;:For step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API.&amp;lt;/deprecated&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:For step-1, We use the py gtkprint api (a high level wrapper around CUPS), which prints any cairo supported objects,features methods to configure the printers and page layouts, and prints. http://pastebin.be/17860 Here is a hack of edit which I&#039;ve made. This Hack can pretty much print to any printer configured locally, and to pdf.&lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;:: Start work on Read and Write so they can save docs as PDF, and print to usb printer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
::Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi. This will be .This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 GPA, the SoaS pilot school in Boston MA&lt;br /&gt;
&lt;br /&gt;
GPA has the following network printers&lt;br /&gt;
&lt;br /&gt;
Their network printers are :&lt;br /&gt;
 *  Xerox Phaser 3400&lt;br /&gt;
 *  Xerox Phaser 3500&lt;br /&gt;
 *  Xerox Phaser 6360DN&lt;br /&gt;
 *  HP Laserjet 2100&lt;br /&gt;
 *  Lexmark Optra T520&lt;br /&gt;
 *  Lexmark Optra M410&lt;br /&gt;
 *  Xerox Document Centre 470&lt;br /&gt;
&lt;br /&gt;
Currently they do not let students print, but since students only use a computer for an hour a week this is not a hardship. As they have students compute more they would like them to be able to print.&lt;br /&gt;
&lt;br /&gt;
I asked them which of the following was their current biggest problem:&lt;br /&gt;
&lt;br /&gt;
 #1  The printers are too busy, you have to wait for your documents to print out.&lt;br /&gt;
 #2  There is not enough money to buy toner and paper.&lt;br /&gt;
 #3 The printers are too far away, the teachers have to waste time walking to get their printouts.&lt;br /&gt;
 #4  The printing system is too confusing or broken and people can&#039;t get their stuff to print on the printer they want to use.&lt;br /&gt;
&lt;br /&gt;
#3 is definitely this schools biggest issue.&lt;br /&gt;
&lt;br /&gt;
We will be collecting used computers for the SoaS project.  We could probably easily also get donations of small printers for each classroom and it sounds like they would want that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27534</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27534"/>
		<updated>2009-04-16T12:37:19Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;deprecated&amp;gt; &#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will result in a PDF file of the same parent in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
:&amp;lt;/deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:As tomeu(the sugar maintainer) had pointed a potential disaster with the step-1 (which is the massive overhead if filters that would be needed for conversion with CUPS, and would be very hard to maintain) and after talking to him, I have sketched out this proposal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; Every PDF conversion takes place within the activity and it outputs that file to the datastore, the printing to devices such as usb printer also takes place within the activity itself. There will be a simple activity to configure choose and configure basic options (the advanced ones will be disabled for simplicities sake)&lt;br /&gt;
There will be  &lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;deprecated&amp;gt;:For step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API.&amp;lt;/deprecated&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:For step-1, We use the py gtkprint api (a high level wrapper around CUPS), which prints any cairo supported objects,features methods to configure the printers and page layouts, and prints. http://pastebin.be/17860 Here is a hack of edit which I&#039;ve made. This Hack can pretty much print to any printer configured locally, and to pdf.&lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;:: Start work on Read and Write so they can save docs as PDF, and print to usb printer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
::Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi. This will be .This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 GPA, the SoaS pilot school in Boston MA&lt;br /&gt;
&lt;br /&gt;
GPA has the following network printers&lt;br /&gt;
&lt;br /&gt;
Their network printers are :&lt;br /&gt;
 *  Xerox Phaser 3400&lt;br /&gt;
 *  Xerox Phaser 3500&lt;br /&gt;
 *  Xerox Phaser 6360DN&lt;br /&gt;
 *  HP Laserjet 2100&lt;br /&gt;
 *  Lexmark Optra T520&lt;br /&gt;
 *  Lexmark Optra M410&lt;br /&gt;
 *  Xerox Document Centre 470&lt;br /&gt;
&lt;br /&gt;
Currently they do not let students print, but since students only use a computer for an hour a week this is not a hardship. As they have students compute more they would like them to be able to print.&lt;br /&gt;
&lt;br /&gt;
I asked them which of the following was their current biggest problem:&lt;br /&gt;
&lt;br /&gt;
 #1  The printers are too busy, you have to wait for your documents to print out.&lt;br /&gt;
 #2  There is not enough money to buy toner and paper.&lt;br /&gt;
 #3 The printers are too far away, the teachers have to waste time walking to get their printouts.&lt;br /&gt;
 #4  The printing system is too confusing or broken and people can&#039;t get their stuff to print on the printer they want to use.&lt;br /&gt;
&lt;br /&gt;
#3 is definitely this schools biggest issue.&lt;br /&gt;
&lt;br /&gt;
We will be collecting used computers for the SoaS project.  We could probably easily also get donations of small printers for each classroom and it sounds like they would want that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27532</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=27532"/>
		<updated>2009-04-16T12:36:23Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deprecated&amp;gt; :&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will result in a PDF file of the same parent in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&amp;lt;/deprecated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As tomeu(the sugar maintainer) had pointed a potential disaster with the step-1 (which is the massive overhead if filters that would be needed for conversion with CUPS, and would be very hard to maintain) and after talking to him, I have sketched out this proposal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; Every PDF conversion takes place within the activity and it outputs that file to the datastore, the printing to devices such as usb printer also takes place within the activity itself. There will be a simple activity to configure choose and configure basic options (the advanced ones will be disabled for simplicities sake)&lt;br /&gt;
There will be  &lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;deprecated&amp;gt;:For step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API.&amp;lt;/deprecated&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:For step-1, We use the py gtkprint api (a high level wrapper around CUPS), which prints any cairo supported objects,features methods to configure the printers and page layouts, and prints. http://pastebin.be/17860 Here is a hack of edit which I&#039;ve made. This Hack can pretty much print to any printer configured locally, and to pdf.&lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;:: Start work on Read and Write so they can save docs as PDF, and print to usb printer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
::Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi. This will be .This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
====Use Cases====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 GPA, the SoaS pilot school in Boston MA&lt;br /&gt;
&lt;br /&gt;
GPA has the following network printers&lt;br /&gt;
&lt;br /&gt;
Their network printers are :&lt;br /&gt;
 *  Xerox Phaser 3400&lt;br /&gt;
 *  Xerox Phaser 3500&lt;br /&gt;
 *  Xerox Phaser 6360DN&lt;br /&gt;
 *  HP Laserjet 2100&lt;br /&gt;
 *  Lexmark Optra T520&lt;br /&gt;
 *  Lexmark Optra M410&lt;br /&gt;
 *  Xerox Document Centre 470&lt;br /&gt;
&lt;br /&gt;
Currently they do not let students print, but since students only use a computer for an hour a week this is not a hardship. As they have students compute more they would like them to be able to print.&lt;br /&gt;
&lt;br /&gt;
I asked them which of the following was their current biggest problem:&lt;br /&gt;
&lt;br /&gt;
 #1  The printers are too busy, you have to wait for your documents to print out.&lt;br /&gt;
 #2  There is not enough money to buy toner and paper.&lt;br /&gt;
 #3 The printers are too far away, the teachers have to waste time walking to get their printouts.&lt;br /&gt;
 #4  The printing system is too confusing or broken and people can&#039;t get their stuff to print on the printer they want to use.&lt;br /&gt;
&lt;br /&gt;
#3 is definitely this schools biggest issue.&lt;br /&gt;
&lt;br /&gt;
We will be collecting used computers for the SoaS project.  We could probably easily also get donations of small printers for each classroom and it sounds like they would want that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/Interviews&amp;diff=27365</id>
		<title>Summer of Code/Interviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/Interviews&amp;diff=27365"/>
		<updated>2009-04-13T18:53:38Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Wed Apr 15 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We would like to interview the candidates for Google Summer of Code under Sugar Labs. Please sign up for a time below. If you have been told the name of your provisional prospective mentor, and your mentor has put his/her preferred times below, please try to find a time which works for your mentor. (Note that mentor assignments are still in flux; if your provisional prospective mentor changes, we will try to accommodate your chosen time or reschedule at a convenient time for you.)&lt;br /&gt;
&lt;br /&gt;
Interviews will be conducted over IRC; even hours on #sugar-interview0 and half-hours on #sugar-interview1 . Please treat these like real rooms, ie, do not lurk unless you are a mentor. If you have some quick pre-interview questions, we will be in #sugar too.&lt;br /&gt;
&lt;br /&gt;
If you have specifically been told to sign up to interview, please sign up here. Even if your provisional prospective mentor has not indicated availability, put your available times, and your mentor will renegotiate with you later if necessary. We have invited the 9-10 proposals which are currently ranked highest, for the 4-6 slots we will probably get. However, we &#039;&#039;do&#039;&#039; want to interview you even if you have not specifically been invited; although your proposal is a long shot in that case, you may impress us, and in any case we&#039;d like to talk to you about participating in Sugar outside of GSoC.&lt;br /&gt;
&lt;br /&gt;
Like many other organizations participating in GSoC, we have received more good applications than we will have funding from Google for. Almost all of our applications would be things that we&#039;d really love to have you working on, even if we don&#039;t have space for you in GSoC. If you are interested in finishing your project and would like a mentor assigned even though we can&#039;t give you a slot, you can also contact us on the sugar-devel or gsoc mailing list and we&#039;ll work something out.&lt;br /&gt;
&lt;br /&gt;
== Sunday Apr 1 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Guido van Rossum, Linus Torvalds, Bill Gates ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=1&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=14&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1400 UTC]: [[User:example|example]] 18:11, 13 April 2009 (UTC) (Spanish interview preferred) (just an example - I used &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; to add a signature, and added any special requests after.)&lt;br /&gt;
&lt;br /&gt;
== Wed Apr 15 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, [[User:BryanWB|BryanWB]], Luis G. Lira ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=15&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=14&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1400 UTC]: Vamsi Krishna Davuluri (iwikiwi)&lt;br /&gt;
&lt;br /&gt;
* 1430 UTC: &lt;br /&gt;
&lt;br /&gt;
* 1500 UTC: Lucian Branescu (lucian1900)&lt;br /&gt;
&lt;br /&gt;
* 1530 UTC:&lt;br /&gt;
&lt;br /&gt;
== Thurs Apr 16 (Wed 15 in the western hemisphere) ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, Andrés Ambrois, [[User:BryanWB|BryanWB]], [[User:Nrp|Nirav Patel]] ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=16&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=0&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 0000 UTC]:&lt;br /&gt;
&lt;br /&gt;
* 0030 UTC:&lt;br /&gt;
&lt;br /&gt;
* 0100 UTC:&lt;br /&gt;
&lt;br /&gt;
* 0130 UTC:&lt;br /&gt;
&lt;br /&gt;
== Thurs Apr 16 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, Sayamindu Dasgupta ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=16&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=18&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1800 UTC]:&lt;br /&gt;
&lt;br /&gt;
* 1830 UTC:&lt;br /&gt;
&lt;br /&gt;
* 1900 UTC:&lt;br /&gt;
&lt;br /&gt;
* 1930 UTC:&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24703</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24703"/>
		<updated>2009-04-01T15:04:07Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will result in a PDF file of the same parent in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:For step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:For step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:For step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24702</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24702"/>
		<updated>2009-04-01T15:03:07Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will result in a PDF file of the same parent in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, which wont exceed 16mb. We will be including print directly (usb) as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part, but will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a user queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24663</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24663"/>
		<updated>2009-04-01T06:04:15Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About you */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI/iwikiwi ( Sometimes vkd, Vamsi, Vamsi_)&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will result in a PDF file of the same parent in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part,and will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24633</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24633"/>
		<updated>2009-03-31T18:50:46Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will result in a PDF file of the same parent in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   &lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too. This will have the same code as print to pdf for the most part,and will have added code to select a new default printer.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24632</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24632"/>
		<updated>2009-03-31T18:43:48Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too. This will essentially have the same code as print to pdf, but with code to select a new default printer added.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Milestone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Milestone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24631</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24631"/>
		<updated>2009-03-31T18:41:46Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About you */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team nor do I have a very profound understanding of the OS development paradigm - so far, but seeing how I could never afford software which was sold at high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too. This will essentially have the same code as print to pdf, but with code to select a new default printer added.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24622</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24622"/>
		<updated>2009-03-31T18:10:44Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* You and the community */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too. This will essentially have the same code as print to pdf, but with code to select a new default printer added.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums. And the irc channels of each component I am handling.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24621</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24621"/>
		<updated>2009-03-31T17:27:11Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
:The usecase would be, distinction of saving a pdf and sending it to printing. And the conversion is mandatory so as to prevent a scenario where the sugar file type might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval(which is a maximum of 3). And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the moodle print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpclib to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick). This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries. Even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too. This will essentially have the same code as print to pdf, but with code to select a new default printer added.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24615</id>
		<title>Talk:Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24615"/>
		<updated>2009-03-31T16:44:05Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Why the distinction? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looks pretty good. A couple of quick questions, while it is still unfinished:&lt;br /&gt;
&lt;br /&gt;
* Why do you do the PDF conversion on the server? Shouldn&#039;t the student be able to see a WYSIWYG version, margins and all?&lt;br /&gt;
&lt;br /&gt;
* Is there a way for a student to cancel a request?&lt;br /&gt;
&lt;br /&gt;
* At the moment, Sugar opens files by mime type, and each activity handles its own mime type(s). If you save a pdf to journal to be opened by the &amp;quot;send to server&amp;quot; activity, it would actually be opened by Read. Would you plan to modify sugar to have an &amp;quot;open with&amp;quot; metadata to cue it to open with your print activity? Or would you find some other workaround?&lt;br /&gt;
&lt;br /&gt;
[[User:Homunq|Homunq]] 03:01, 24 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
  &lt;br /&gt;
  Thing is we don&#039;t technically do a pdf conversion, CUPS comes with an emulator of the print engine, and prints to the PDF (cups-pdf &lt;br /&gt;
  modules to be specific to create a virtual printer). And we do this &lt;br /&gt;
  because we would like for the teacher to review it. &lt;br /&gt;
  The pdf is stored in a web folder on the server, and through moodle the teacher goes through them (we provide a webpage), and &lt;br /&gt;
  approves the ones he thinks appropriate for printing.&lt;br /&gt;
  I explained it my   explanation&lt;br /&gt;
  The outcome of my second draft (beta) was that students should be provided as minimal functionality as possible. &lt;br /&gt;
  They shouldn&#039;t be given too much flexibility or options. And... you get  &lt;br /&gt;
  WYSIWYG only as we  send the files directly from the journal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   Yep, student can cancel his request, I forgot adding it. With The function cupsCancelJob() the student can cancel the job before his &lt;br /&gt;
   request goes to server (or before it can be printed to pdf).&lt;br /&gt;
   But after actually entering the web folder, It would become a bit complex. I would have to do this:&lt;br /&gt;
   1) we would send in a query with the name of the file and a .pdf extension&lt;br /&gt;
   2) if that file exists on web folder delete, otherwise do nothing&lt;br /&gt;
   3) send suitable message back&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   No, no. There is ABSOLUTELY no need to interact with sugar activities, in the cups folder we have a file with the list of mime types &lt;br /&gt;
   accepted. We would also append the server supported CUPS Mimes to &lt;br /&gt;
   the clients CUPS.&lt;br /&gt;
   IF the mime type exists in cups mime.type , we are all good to do printing from journal. (that is why we require step 1)&lt;br /&gt;
   There is no reason to read the file, the server handles the necessary post script conversions!&lt;br /&gt;
[[User:IwikiwI|IwikiwI]]&lt;br /&gt;
&lt;br /&gt;
== Why the distinction? ==&lt;br /&gt;
&lt;br /&gt;
To me, &amp;quot;mark for printing&amp;quot; and &amp;quot;save as PDF&amp;quot; should be one single option, as both should result in a PDF in the journal. &amp;quot;unmark for printing&amp;quot; would be something you did on that pdf, not on the original file. [[User:Homunq|Homunq]] 00:25, 31 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer&#039;&#039;&#039;&lt;br /&gt;
I edited my proposal a lot so its more understandable now.&lt;br /&gt;
But my idea is use the same code, and when mark as printing is done, the pdf generated will not be shown to the user. It will be hidden and after sending it to the moodle queue, it will be deleted.And till that happenes only he can unmark for printing, Which will destroy the job before it reaches moodle&#039;s datastore.&lt;br /&gt;
After this he&#039;s free to again mark for printing. :D&lt;br /&gt;
&lt;br /&gt;
And since only Write (abiword) can generate pdfs atm, we wont be able to generate pdfs for .py, or image types from other applications.&lt;br /&gt;
A global pdf generation button would be awesome. And Unique!&lt;br /&gt;
&lt;br /&gt;
And the reason I do conversion for case one is, a scenario where sugar recognized format might not be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
[[User:IwikiwI|IwikiwI]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24614</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24614"/>
		<updated>2009-03-31T16:43:25Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpc to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries, even $_GET $_POST methods, are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too. This will essentially have the same code as print to pdf, but with code to select a new default printer added.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. And I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24613</id>
		<title>Talk:Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24613"/>
		<updated>2009-03-31T16:25:54Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Why the distinction? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looks pretty good. A couple of quick questions, while it is still unfinished:&lt;br /&gt;
&lt;br /&gt;
* Why do you do the PDF conversion on the server? Shouldn&#039;t the student be able to see a WYSIWYG version, margins and all?&lt;br /&gt;
&lt;br /&gt;
* Is there a way for a student to cancel a request?&lt;br /&gt;
&lt;br /&gt;
* At the moment, Sugar opens files by mime type, and each activity handles its own mime type(s). If you save a pdf to journal to be opened by the &amp;quot;send to server&amp;quot; activity, it would actually be opened by Read. Would you plan to modify sugar to have an &amp;quot;open with&amp;quot; metadata to cue it to open with your print activity? Or would you find some other workaround?&lt;br /&gt;
&lt;br /&gt;
[[User:Homunq|Homunq]] 03:01, 24 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
  &lt;br /&gt;
  Thing is we don&#039;t technically do a pdf conversion, CUPS comes with an emulator of the print engine, and prints to the PDF (cups-pdf &lt;br /&gt;
  modules to be specific to create a virtual printer). And we do this &lt;br /&gt;
  because we would like for the teacher to review it. &lt;br /&gt;
  The pdf is stored in a web folder on the server, and through moodle the teacher goes through them (we provide a webpage), and &lt;br /&gt;
  approves the ones he thinks appropriate for printing.&lt;br /&gt;
  I explained it my   explanation&lt;br /&gt;
  The outcome of my second draft (beta) was that students should be provided as minimal functionality as possible. &lt;br /&gt;
  They shouldn&#039;t be given too much flexibility or options. And... you get  &lt;br /&gt;
  WYSIWYG only as we  send the files directly from the journal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   Yep, student can cancel his request, I forgot adding it. With The function cupsCancelJob() the student can cancel the job before his &lt;br /&gt;
   request goes to server (or before it can be printed to pdf).&lt;br /&gt;
   But after actually entering the web folder, It would become a bit complex. I would have to do this:&lt;br /&gt;
   1) we would send in a query with the name of the file and a .pdf extension&lt;br /&gt;
   2) if that file exists on web folder delete, otherwise do nothing&lt;br /&gt;
   3) send suitable message back&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   No, no. There is ABSOLUTELY no need to interact with sugar activities, in the cups folder we have a file with the list of mime types &lt;br /&gt;
   accepted. We would also append the server supported CUPS Mimes to &lt;br /&gt;
   the clients CUPS.&lt;br /&gt;
   IF the mime type exists in cups mime.type , we are all good to do printing from journal. (that is why we require step 1)&lt;br /&gt;
   There is no reason to read the file, the server handles the necessary post script conversions!&lt;br /&gt;
[[User:IwikiwI|IwikiwI]]&lt;br /&gt;
&lt;br /&gt;
== Why the distinction? ==&lt;br /&gt;
&lt;br /&gt;
To me, &amp;quot;mark for printing&amp;quot; and &amp;quot;save as PDF&amp;quot; should be one single option, as both should result in a PDF in the journal. &amp;quot;unmark for printing&amp;quot; would be something you did on that pdf, not on the original file. [[User:Homunq|Homunq]] 00:25, 31 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer&#039;&#039;&#039;&lt;br /&gt;
I edited my proposal a lot so its more understandable now.&lt;br /&gt;
But my idea is use the same code, and when mark as printing is done, the pdf generated will not be shown to the user. It will be hidden and after sending it to the moodle queue, it will be deleted.And till that happenes only he can unmark for printing, Which will destroy the job before it reaches moodle&#039;s datastore.&lt;br /&gt;
After this he&#039;s free to again mark for printing. :D&lt;br /&gt;
&lt;br /&gt;
And since only Write (abiword) can generate pdfs atm, we wont be able to generate pdfs for .py, or image types from other applications.&lt;br /&gt;
A global pdf generation button would be awesome. And Unique!&lt;br /&gt;
&lt;br /&gt;
And the reason I do conversion for case one is, a scenario where sugar recognized format might be recognized by the teacher&#039;s machine.&lt;br /&gt;
&lt;br /&gt;
[[User:IwikiwI|IwikiwI]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24612</id>
		<title>Talk:Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24612"/>
		<updated>2009-03-31T16:23:41Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Why the distinction? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looks pretty good. A couple of quick questions, while it is still unfinished:&lt;br /&gt;
&lt;br /&gt;
* Why do you do the PDF conversion on the server? Shouldn&#039;t the student be able to see a WYSIWYG version, margins and all?&lt;br /&gt;
&lt;br /&gt;
* Is there a way for a student to cancel a request?&lt;br /&gt;
&lt;br /&gt;
* At the moment, Sugar opens files by mime type, and each activity handles its own mime type(s). If you save a pdf to journal to be opened by the &amp;quot;send to server&amp;quot; activity, it would actually be opened by Read. Would you plan to modify sugar to have an &amp;quot;open with&amp;quot; metadata to cue it to open with your print activity? Or would you find some other workaround?&lt;br /&gt;
&lt;br /&gt;
[[User:Homunq|Homunq]] 03:01, 24 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
  &lt;br /&gt;
  Thing is we don&#039;t technically do a pdf conversion, CUPS comes with an emulator of the print engine, and prints to the PDF (cups-pdf &lt;br /&gt;
  modules to be specific to create a virtual printer). And we do this &lt;br /&gt;
  because we would like for the teacher to review it. &lt;br /&gt;
  The pdf is stored in a web folder on the server, and through moodle the teacher goes through them (we provide a webpage), and &lt;br /&gt;
  approves the ones he thinks appropriate for printing.&lt;br /&gt;
  I explained it my   explanation&lt;br /&gt;
  The outcome of my second draft (beta) was that students should be provided as minimal functionality as possible. &lt;br /&gt;
  They shouldn&#039;t be given too much flexibility or options. And... you get  &lt;br /&gt;
  WYSIWYG only as we  send the files directly from the journal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   Yep, student can cancel his request, I forgot adding it. With The function cupsCancelJob() the student can cancel the job before his &lt;br /&gt;
   request goes to server (or before it can be printed to pdf).&lt;br /&gt;
   But after actually entering the web folder, It would become a bit complex. I would have to do this:&lt;br /&gt;
   1) we would send in a query with the name of the file and a .pdf extension&lt;br /&gt;
   2) if that file exists on web folder delete, otherwise do nothing&lt;br /&gt;
   3) send suitable message back&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   No, no. There is ABSOLUTELY no need to interact with sugar activities, in the cups folder we have a file with the list of mime types &lt;br /&gt;
   accepted. We would also append the server supported CUPS Mimes to &lt;br /&gt;
   the clients CUPS.&lt;br /&gt;
   IF the mime type exists in cups mime.type , we are all good to do printing from journal. (that is why we require step 1)&lt;br /&gt;
   There is no reason to read the file, the server handles the necessary post script conversions!&lt;br /&gt;
[[User:IwikiwI|IwikiwI]]&lt;br /&gt;
&lt;br /&gt;
== Why the distinction? ==&lt;br /&gt;
&lt;br /&gt;
To me, &amp;quot;mark for printing&amp;quot; and &amp;quot;save as PDF&amp;quot; should be one single option, as both should result in a PDF in the journal. &amp;quot;unmark for printing&amp;quot; would be something you did on that pdf, not on the original file. [[User:Homunq|Homunq]] 00:25, 31 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer&#039;&#039;&#039;&lt;br /&gt;
I edited my proposal a lot so its more understandable now.&lt;br /&gt;
But my idea is use the same code, and when mark as printing is done, the pdf generated will not be shown to the user. It will be hidden and after sending it to the moodle queue, it will be deleted.And till that happenes only he can unmark for printing, Which will destroy the job before it reaches moodle&#039;s datastore.&lt;br /&gt;
After this he&#039;s free to again mark for printing. :D&lt;br /&gt;
&lt;br /&gt;
And since only Write (abiword) can generate pdfs atm, we wont be able to generate pdfs for .py, or image types from other applications.&lt;br /&gt;
A global pdf generation button would be awesome. And Unique!&lt;br /&gt;
&lt;br /&gt;
[[User:IwikiwI|IwikiwI]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24608</id>
		<title>Talk:Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24608"/>
		<updated>2009-03-31T16:00:53Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Why the distinction? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looks pretty good. A couple of quick questions, while it is still unfinished:&lt;br /&gt;
&lt;br /&gt;
* Why do you do the PDF conversion on the server? Shouldn&#039;t the student be able to see a WYSIWYG version, margins and all?&lt;br /&gt;
&lt;br /&gt;
* Is there a way for a student to cancel a request?&lt;br /&gt;
&lt;br /&gt;
* At the moment, Sugar opens files by mime type, and each activity handles its own mime type(s). If you save a pdf to journal to be opened by the &amp;quot;send to server&amp;quot; activity, it would actually be opened by Read. Would you plan to modify sugar to have an &amp;quot;open with&amp;quot; metadata to cue it to open with your print activity? Or would you find some other workaround?&lt;br /&gt;
&lt;br /&gt;
[[User:Homunq|Homunq]] 03:01, 24 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
  &lt;br /&gt;
  Thing is we don&#039;t technically do a pdf conversion, CUPS comes with an emulator of the print engine, and prints to the PDF (cups-pdf &lt;br /&gt;
  modules to be specific to create a virtual printer). And we do this &lt;br /&gt;
  because we would like for the teacher to review it. &lt;br /&gt;
  The pdf is stored in a web folder on the server, and through moodle the teacher goes through them (we provide a webpage), and &lt;br /&gt;
  approves the ones he thinks appropriate for printing.&lt;br /&gt;
  I explained it my   explanation&lt;br /&gt;
  The outcome of my second draft (beta) was that students should be provided as minimal functionality as possible. &lt;br /&gt;
  They shouldn&#039;t be given too much flexibility or options. And... you get  &lt;br /&gt;
  WYSIWYG only as we  send the files directly from the journal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   Yep, student can cancel his request, I forgot adding it. With The function cupsCancelJob() the student can cancel the job before his &lt;br /&gt;
   request goes to server (or before it can be printed to pdf).&lt;br /&gt;
   But after actually entering the web folder, It would become a bit complex. I would have to do this:&lt;br /&gt;
   1) we would send in a query with the name of the file and a .pdf extension&lt;br /&gt;
   2) if that file exists on web folder delete, otherwise do nothing&lt;br /&gt;
   3) send suitable message back&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   No, no. There is ABSOLUTELY no need to interact with sugar activities, in the cups folder we have a file with the list of mime types &lt;br /&gt;
   accepted. We would also append the server supported CUPS Mimes to &lt;br /&gt;
   the clients CUPS.&lt;br /&gt;
   IF the mime type exists in cups mime.type , we are all good to do printing from journal. (that is why we require step 1)&lt;br /&gt;
   There is no reason to read the file, the server handles the necessary post script conversions!&lt;br /&gt;
[[User:IwikiwI|IwikiwI]]&lt;br /&gt;
&lt;br /&gt;
== Why the distinction? ==&lt;br /&gt;
&lt;br /&gt;
To me, &amp;quot;mark for printing&amp;quot; and &amp;quot;save as PDF&amp;quot; should be one single option, as both should result in a PDF in the journal. &amp;quot;unmark for printing&amp;quot; would be something you did on that pdf, not on the original file. [[User:Homunq|Homunq]] 00:25, 31 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer&#039;&#039;&#039;&lt;br /&gt;
I edited my proposal a lot so its more understandable now.&lt;br /&gt;
But my idea is use the same code, and when mark as printing is done, the pdf generated will not be shown to the user. It will be hidden and after sending it to the moodle queue, it will be deleted.&lt;br /&gt;
And until that happenes only he can unmark for printing, Which destroys the job before it reaches moodle&#039;s datastore.&lt;br /&gt;
after which he&#039;s free to again mark for printing. :D&lt;br /&gt;
&lt;br /&gt;
And since only abiword can generate pdfs atm, we wont be able to generate pdfs for .py, or image types from other applications.&lt;br /&gt;
A global pdf generation button would be awesome. And Unique!&lt;br /&gt;
&lt;br /&gt;
[[User:IwikiwI|IwikiwI]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24607</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24607"/>
		<updated>2009-03-31T16:00:03Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible. (plus text will be mapped as text only)&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpc to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries, even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too. This will essentially have the same code as print to pdf, but with code to select a new default printer added.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. And I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24604</id>
		<title>Talk:Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Talk:Summer_of_Code/2009/Print_Support&amp;diff=24604"/>
		<updated>2009-03-31T15:57:22Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* Why the distinction? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Looks pretty good. A couple of quick questions, while it is still unfinished:&lt;br /&gt;
&lt;br /&gt;
* Why do you do the PDF conversion on the server? Shouldn&#039;t the student be able to see a WYSIWYG version, margins and all?&lt;br /&gt;
&lt;br /&gt;
* Is there a way for a student to cancel a request?&lt;br /&gt;
&lt;br /&gt;
* At the moment, Sugar opens files by mime type, and each activity handles its own mime type(s). If you save a pdf to journal to be opened by the &amp;quot;send to server&amp;quot; activity, it would actually be opened by Read. Would you plan to modify sugar to have an &amp;quot;open with&amp;quot; metadata to cue it to open with your print activity? Or would you find some other workaround?&lt;br /&gt;
&lt;br /&gt;
[[User:Homunq|Homunq]] 03:01, 24 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
  &lt;br /&gt;
  Thing is we don&#039;t technically do a pdf conversion, CUPS comes with an emulator of the print engine, and prints to the PDF (cups-pdf &lt;br /&gt;
  modules to be specific to create a virtual printer). And we do this &lt;br /&gt;
  because we would like for the teacher to review it. &lt;br /&gt;
  The pdf is stored in a web folder on the server, and through moodle the teacher goes through them (we provide a webpage), and &lt;br /&gt;
  approves the ones he thinks appropriate for printing.&lt;br /&gt;
  I explained it my   explanation&lt;br /&gt;
  The outcome of my second draft (beta) was that students should be provided as minimal functionality as possible. &lt;br /&gt;
  They shouldn&#039;t be given too much flexibility or options. And... you get  &lt;br /&gt;
  WYSIWYG only as we  send the files directly from the journal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   Yep, student can cancel his request, I forgot adding it. With The function cupsCancelJob() the student can cancel the job before his &lt;br /&gt;
   request goes to server (or before it can be printed to pdf).&lt;br /&gt;
   But after actually entering the web folder, It would become a bit complex. I would have to do this:&lt;br /&gt;
   1) we would send in a query with the name of the file and a .pdf extension&lt;br /&gt;
   2) if that file exists on web folder delete, otherwise do nothing&lt;br /&gt;
   3) send suitable message back&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
   No, no. There is ABSOLUTELY no need to interact with sugar activities, in the cups folder we have a file with the list of mime types &lt;br /&gt;
   accepted. We would also append the server supported CUPS Mimes to &lt;br /&gt;
   the clients CUPS.&lt;br /&gt;
   IF the mime type exists in cups mime.type , we are all good to do printing from journal. (that is why we require step 1)&lt;br /&gt;
   There is no reason to read the file, the server handles the necessary post script conversions!&lt;br /&gt;
[[User:IwikiwI|IwikiwI]]&lt;br /&gt;
&lt;br /&gt;
== Why the distinction? ==&lt;br /&gt;
&lt;br /&gt;
To me, &amp;quot;mark for printing&amp;quot; and &amp;quot;save as PDF&amp;quot; should be one single option, as both should result in a PDF in the journal. &amp;quot;unmark for printing&amp;quot; would be something you did on that pdf, not on the original file. [[User:Homunq|Homunq]] 00:25, 31 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Answer&#039;&#039;&#039;&lt;br /&gt;
I edited my proposal a lot so its more understandable now.&lt;br /&gt;
But my idea is use the same code, and when mark as printing is done, the pdf generated will not be shown to the user. It will be hidden and after sending it to the moodle queue, it will be deleted.&lt;br /&gt;
And until that happenes only he can unmark for printing, Which destroys the job before it reaches moodle&#039;s datastore.&lt;br /&gt;
after which he&#039;s free to again mark for printing. :D&lt;br /&gt;
&lt;br /&gt;
And since only abiword can generate pdfs atm, we wont be able to generate pdfs for .py, or image types from other applications.&lt;br /&gt;
A global pdf generation button would be awesome. And Unique!&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24599</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24599"/>
		<updated>2009-03-31T15:48:59Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this PDF plus metadata wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing too.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible. (that is text will be mapped as text only)&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The number of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to-print PDFs. And then these objects will be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).And print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or sending to moodle.(in the latter we just dont display it, in the former we do) &lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
&lt;br /&gt;
:For the second part of it when ever the print page url is accessed, we make browse communicate with the moodle print queue through xmlrpc to get the queue details, and upload that many slots (as the number of slots will also be dependent on the print queue through a php trick) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or a simpler way will be to bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests for his group.The approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print. &lt;br /&gt;
&lt;br /&gt;
:The moodle part can be achieved through hacking the already existing plugin [http://docs.moodle.org/en/Upload_a_single_file_assignment] and looking into the moodle API and plugin documentation. From my research so far, moodle has most of all the low level details already existing within the moodle libraries, even $_GET $_POST methods are abstracted into simpler functions.&lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too. This will essentially have the same code as print to pdf, but with code to select a new default printer added.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. And I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher and that we have thousands of happy XO user&#039;s faces&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24596</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24596"/>
		<updated>2009-03-31T15:33:29Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. We will also be including a fallback strategy that is usb printing.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The no of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to print PDFs. And then these objects can be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher :moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).( Since we know the name is CUPS-PDF, we can check it) and print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or send for network printing.&lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
:For the second part of it when ever the print page url is found, we make browse communicate with the moodle print queue through xmlrpc get the details, and upload to that many slots (as the number of slots will also be dependent on the print queue) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or we bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. &lt;br /&gt;
:And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests, and the approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print.  case a, we would just make &lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. And I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24586</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24586"/>
		<updated>2009-03-31T15:04:41Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. Later on as we are going with a CUPS architecture, we can include USB    &lt;br /&gt;
:printing on demand!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The no of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to print PDFs. And then these objects can be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher :moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).( Since we know the name is CUPS-PDF, we can check it) and print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or send for network printing.&lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
:For the second part of it when ever the print page url is found, we make browse communicate with the moodle print queue through xmlrpc get the details, and upload to that many slots (as the number of slots will also be dependent on the print queue) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or we bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. &lt;br /&gt;
:And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests, and the approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print.  case a, we would just make &lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done. And I am introduced to server side programming through django on which I had worked to develop a weblog ( I dont have the code for it, and the weblog isn&#039;t operational), all I can say is I had *fun* with the template language they had, which was mostly regexp parsing.&lt;br /&gt;
:And I have learnt php these last few days enough to hack on moodle.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:My job will be not only writing working code, but regularly getting it deployed to check if the user&#039;s find it good and working to their needs or not.&lt;br /&gt;
:So when I say community feedback, I will be using it interchangeably between actual deployment and the irc community depending on context&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to the print page&#039;s forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. get community feedback&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24585</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24585"/>
		<updated>2009-03-31T14:47:27Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. Later on as we are going with a CUPS architecture, we can include USB    &lt;br /&gt;
:printing on demand!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The no of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to print PDFs. And then these objects can be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher :moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).( Since we know the name is CUPS-PDF, we can check it) and print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or send for network printing.&lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
:For the second part of it when ever the print page url is found, we make browse communicate with the moodle print queue through xmlrpc get the details, and upload to that many slots (as the number of slots will also be dependent on the print queue) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or we bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. &lt;br /&gt;
:And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests, and the approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print.  case a, we would just make &lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to a specific pages forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. get community feedback&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
:It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24584</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24584"/>
		<updated>2009-03-31T14:46:51Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. Later on as we are going with a CUPS architecture, we can include USB    &lt;br /&gt;
:printing on demand!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The no of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to print PDFs. And then these objects can be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher :moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).( Since we know the name is CUPS-PDF, we can check it) and print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or send for network printing.&lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
:For the second part of it when ever the print page url is found, we make browse communicate with the moodle print queue through xmlrpc get the details, and upload to that many slots (as the number of slots will also be dependent on the print queue) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or we bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. &lt;br /&gt;
:And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests, and the approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print.  case a, we would just make &lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to a specific pages forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. get community feedback&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
:&#039;&#039;primary focus&#039;&#039;:&lt;br /&gt;
:*Add a direct network printing mechanism ( avahi if not the CUPS provided Bonjour for DNS-SD/mDNS) and print directly to the print server through wi-fi.This will be in the form of a new button in the journal item&#039;s menu.This will be disabled when ever an XS is connected.&lt;br /&gt;
:I have written a sample program http://pastebin.be/17562 &lt;br /&gt;
:What this does is, it gets the list of printers from the print server, and prints to the default configured one.&lt;br /&gt;
It can be extended to select the print server automatically, traverse through the printers, select appropriate one. And also implement a local queue, cancel option. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Secondary focus:&#039;&#039;&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24570</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24570"/>
		<updated>2009-03-31T13:20:36Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. Later on as we are going with a CUPS architecture, we can include USB    &lt;br /&gt;
:printing on demand!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The no of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to print PDFs. And then these objects can be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher :moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).( Since we know the name is CUPS-PDF, we can check it) and print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or send for network printing.&lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
:For the second part of it when ever the print page url is found, we make browse communicate with the moodle print queue through xmlrpc get the details, and upload to that many slots (as the number of slots will also be dependent on the print queue) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or we bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. &lt;br /&gt;
:And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests, and the approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print.  case a, we would just make &lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on browse hack to parse file paths to a specific pages forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. get community feedback&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24492</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24492"/>
		<updated>2009-03-30T15:52:12Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. Later on as we are going with a CUPS architecture, we can include USB    &lt;br /&gt;
:printing on demand!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;A step by step abstraction:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The no of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to print PDFs. And then these objects can be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher :moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).( Since we know the name is CUPS-PDF, we can check it) and print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or send for network printing.&lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
:For the second part of it when ever the print page url is found, we make browse communicate with the moodle print queue through xmlrpc get the details, and upload to that many slots (as the number of slots will also be dependent on the print queue) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or we bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. &lt;br /&gt;
:And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests, and the approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print.  case a, we would just make &lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on code browse hack to parse file paths to a specific pages forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. get community feedback&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24491</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24491"/>
		<updated>2009-03-30T15:51:25Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. Later on as we are going with a CUPS architecture, we can include USB    &lt;br /&gt;
:printing on demand!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:A step by step abstraction:&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network printing. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details (this wont be visible to the user).The object is then said to be marked for printing and can be unmarked for printing.(That is by again right clicking on the parent journal item and clicking cancel for network printing).&lt;br /&gt;
:Also a similar button will be provided for saving to PDF. Which will have a PDF file of the same in journal;the pdf will be tangible.&lt;br /&gt;
&lt;br /&gt;
:We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The no of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to print PDFs. And then these objects can be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher :moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).( Since we know the name is CUPS-PDF, we can check it) and print our file as a PDF in the datastore. Which is pretty much the same for saving as PDF, or send for network printing.&lt;br /&gt;
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
:For the second part of it when ever the print page url is found, we make browse communicate with the moodle print queue through xmlrpc get the details, and upload to that many slots (as the number of slots will also be dependent on the print queue) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or we bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. &lt;br /&gt;
:And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests, and the approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print.  case a, we would just make &lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on code browse hack to parse file paths to a specific pages forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. get community feedback&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24489</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24489"/>
		<updated>2009-03-30T15:39:42Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. Later on as we are going with a CUPS architecture, we can include USB    &lt;br /&gt;
:printing on demand!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:A step by step abstraction:&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. send for network print. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details.The PDF can be marked for printing or unmarked for printing.(That is by again right clicking on the parent journal item and clicking cancel) We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The no of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to print PDFs. And then these objects can be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).( Since we know the name is CUPS-PDF, we can check it) and print our file as a PDF in the journal. For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
:For the second part of it when ever the print page url is found, we make browse communicate with the moodle print queue through xmlrpc get the details, and upload to that many slots (as the number of slots will also be dependent on the print queue) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or we bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. &lt;br /&gt;
:And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests, and the approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print.  case a, we would just make &lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on code browse hack to parse file paths to a specific pages forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. get community feedback&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24413</id>
		<title>Summer of Code/2009/Print Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Print_Support&amp;diff=24413"/>
		<updated>2009-03-29T13:20:34Z</updated>

		<summary type="html">&lt;p&gt;IwikiwI: /* About your project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====About you====&lt;br /&gt;
:&#039;&#039;&#039;1 What is your name? &#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
:Vamsi Krishna Davuluri&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 What is your email address? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:vamsi&amp;lt;dot&amp;gt;davuluri&amp;lt;at&amp;gt;gmail&amp;lt;dot&amp;gt;com &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What is your Sugar Labs wiki username? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is your IRC nickname? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:IwikiwI&lt;br /&gt;
 &lt;br /&gt;
:&#039;&#039;&#039;5 What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:English, Hindi, Telugu. I prefer English!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;6 Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I am located in india (5:30+ GMT), I usually work in the night, from my 7 pm to 2:30 am&lt;br /&gt;
:So any mentor should be ideal.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;7 Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in :open-:source. If not, why do you want to work on an open-source project this summer? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have not been part of an open source development team. Nor do I have a very profound understanding of the OS development paradigm yet. But seeing how I could never afford software which was sold at :high price even though that software was the bare essential software for me to get my computer working. And as my experiences are true for almost two thirds of other students, I would like to see them :not to have to put up with the buy-what-you-want software, in-fact I would love for them to grow up using free software that I make and hope that they will produce free software themselves, a few of them :at least.&lt;br /&gt;
&lt;br /&gt;
:Although not really a group developmental project, I have coded two networks projects and a prototype game for windows. (the source is in downloads)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1) &#039;&#039;&#039;Simulation of mobile units and their movement over a network (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2) &#039;&#039;&#039;A client/server model for file transfer, md5 check sum, IP translations, and file size requests (unix network programming, and unix programming)&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-clientserver/&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3) &#039;&#039;&#039;A prototype Bounce game in OpenGL for windows&lt;br /&gt;
&lt;br /&gt;
: http://code.google.com/p/iwikiwi-bounce/&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is the name of your project? &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Print Support for the XO laptops &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe your project in 10-20 sentences&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
:As the self explanatory name suggests, the project is to add print support to the laptops.For the time being, the print requests will be sent to the school server through a moodle print page &lt;br /&gt;
:then the teacher can view the files through his login in the same application, and approve them for printing to a print server. Later on as we are going with a CUPS architecture, we can include USB    &lt;br /&gt;
:printing on demand!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Why should my idea be considered:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My refined version of the print support idea is actually a better way of ensuring that paper abuse will be curbed, as the kids wouldn&#039;t really take into account :all the predicaments associated with :printing. And needless to say printing does take place with the teacher&#039;s intervention. And everything takes place in a moodle environment, plus there is the added benefit of printing in the No XO case.&lt;br /&gt;
&lt;br /&gt;
:A step by step abstraction:&lt;br /&gt;
 &lt;br /&gt;
:(The first step would essentially mean a Save as PDF hack and put the jobs for processing on moodle )  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; (this is no way related to abiword&#039;s print to pdf ability)&lt;br /&gt;
:The right click menu of an item in the journal will have a new option, i.e. create PDF. When clicked, the item will be sent to a local virtual CUPS-PDF printer for PDF conversion, and the pdf will have metadata attached stating its details.The PDF can be marked for printing or unmarked for printing.(That is by again right clicking on the parent journal item and clicking cancel) We will be using moodle as our interface for sending print requests on the network. The interface will have a user page and a teacher page. The page will have a report of his print jobs and a status report of his live jobs. And the ability to put 3 live jobs on queue. The no of upload slots will be dynamically updated according to his live jobs pending for teacher&#039;s approval. And the number of free slots will automatically be filled up by the browser with the to print PDFs. And then these objects can be sent to the moodle web folder.&lt;br /&gt;
&lt;br /&gt;
:(The 2nd would be implementing queuing and teacher review, reject approve facilities        &lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; Through moodle the teacher will have a page displaying the contents of the print datastore along with user names attached, and he/she will be able to download them to his remote system, and  check them and approve them for printing if he/she wishes. After his/her approval or disapproval (that is a delete along with an option why) the information is held in the datastore, and the user can view it in the form of history transactions pertaining to his id, and teacher can view a finite list of previous transactions pertaining to all.   :&lt;br /&gt;
&lt;br /&gt;
:( The 3rd usb printing on demand!)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; The no School Server case. The simple solution to this case is to print directly through usb. And this won&#039;t be counter productive to the idea of teacher moderated printing, as the printer won&#039;t be available for just anyone; this is only a quick alternative to the &#039;save to portable drive and do the printing&#039; method.    &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;In-Depth analysis:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:for step-1, We use CUPS. The API has a nice array of functions, one of which is to get the printer&#039;s name (the cups-pdf virtual printer).( Since we know the name is CUPS-PDF, we can check it) and print our file as a PDF in the journal. For the sake of our python convenience we will be using a python wrapper to cups, pycups. The print objects will have metadata attached to them through the sugar datastore API. &lt;br /&gt;
:For the second part of it when ever the print page url is found, we make browse communicate with the moodle print queue through xmlrpc get the details, and upload to that many slots (as the number of slots will also be dependent on the print queue) This would essentially mean a rainbow hack so that browse can communicate with journal without a dialog (Or we bypass the dialog automatically). The execution part of this will take place dynamically as soon as the user requests the print page. &lt;br /&gt;
:And also, once the pdf is read, it is destroyed.&lt;br /&gt;
&lt;br /&gt;
:for step-2, We will be using the interface already created, but for the teacher we will issue global access privileges enabling him/her to access all the sent requests, and the approve button will initiate shell commands to send the particular file to a network printer through CUPS installed on the server.This can again be achieved through hacking into moodle and understanding how notifications are sent to the students from teacher. The notifications would be relating to whether the teacher has approved or disapproved the print.  case a, we would just make &lt;br /&gt;
&lt;br /&gt;
:for step-3, no new code is required; a few more dependencies are required, Which wont exceed 17mb. We will be including print directly (usb), as an option under the item&#039;s right click menu too.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Is there a disadvantage in relying upon moodle for network printing?&#039;&#039;&lt;br /&gt;
:Since the whole concept relies upon network printing, it will be feasible for moodle to coexist with the system on the school server. We will just be adding moodle as a requirement for network printing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Key features:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:* Will be able to print to any USB printer&lt;br /&gt;
:* Will be able to output a print as a PDF&lt;br /&gt;
:* Includes a local queue and a teacher queue&lt;br /&gt;
:* automatically parses print requests to the print page&lt;br /&gt;
:* Uses moodle as interface for teacher moderated printing&lt;br /&gt;
:* A 3 live/pending jobs at a time queue.&lt;br /&gt;
:* Teacher can approve/ disapprove printing from the queue.&lt;br /&gt;
:* Student will have status updates in his page.&lt;br /&gt;
:* Has a no school server case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, :credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I have a fairly good understanding of communication models, and my skill with networks is quite satisfactory. And as most of the implementation is already available in form of python bindings, all that :remains is placing them together with a sound design, which I have already discussed with several community members. And I can provide as much time as is required for the work to get done.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;My credentials include: &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1)&#039;&#039;&#039; The ability to finish projects on his own, with self motivation, as the 3 projects I have attached have been made as a self interest.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2)&#039;&#039;&#039; An internship at Kenexa which had been to develop an assembly which logged database transactions, written in c#, so I have an exposure to infrastructure.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3)&#039;&#039;&#039; winner of a coding event, Mind-Hunters, at a national level technical festival.&lt;br /&gt;
&lt;br /&gt;
:I have already added a fix to Write so that it can export to pdf files, and I have provided a temporary fix for a screen bug, for which I will provide a complete fix.&lt;br /&gt;
&lt;br /&gt;
:And I have checked the feasibility of my approach by going through the source files/apis, and writing sample programs like&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  cups_dest_t *dests, *dest;&lt;br /&gt;
  int num_dests = cupsGetDests(&amp;amp;dests);&lt;br /&gt;
  int job_id = cupsPrintFile(dests-&amp;gt;name,&lt;br /&gt;
                             argv[1],&lt;br /&gt;
                             &amp;quot;Test&amp;quot;,&lt;br /&gt;
                              0, NULL);&lt;br /&gt;
  if (job_id == 0)&lt;br /&gt;
  printf(&amp;quot;error printing file, unsupported format&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
:for printing&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;April 20th to May 26th:&#039;&#039;&#039;&lt;br /&gt;
:* Research the sugar API extensively &lt;br /&gt;
:* Write sample D-BUS communication programs and xmlrpc programs&lt;br /&gt;
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such)&lt;br /&gt;
:* Talk with the design team and produce prototype interface designs&lt;br /&gt;
:* Look into moodle APIs&lt;br /&gt;
:* Focus on the bare essential dependencies required to get the job done&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 1 : &#039;&#039;&#039;&lt;br /&gt;
:Write code which prints to any selected printer. (CUPS-pdf will be the primary case till gsoc), and add the print buttons to the item right click menu of journal. &lt;br /&gt;
:Start working on code browse hack to parse file paths to a specific pages forum input box.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 2 : &#039;&#039;&#039;&lt;br /&gt;
:Finish with browse. &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Mile stone 1 result : Sugar side of our code will be done. get community feedback&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 3 : &#039;&#039;&#039;&lt;br /&gt;
:Start working on moodle&#039;s userpage.&lt;br /&gt;
:Hack the &#039;upload an assignment&#039; code and make a new plugin out of it.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 4 &#039;&#039;&#039;&lt;br /&gt;
:start working on moodles teacher page, and see that he/she can review only his group&#039;s assignments&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
:And start working on a php script for shell commands to directly print to the network printer.Get mentor and community feedback.   &lt;br /&gt;
&lt;br /&gt;
:Mile stone 2 result :&#039;&#039; The teacher review feature and student upload features are working &lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Milestone 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
:Start working on creating a nice html layout for the page, get feedback and make corrections accordingly.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;week 7&#039;&#039;&#039;&lt;br /&gt;
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out.  &lt;br /&gt;
&lt;br /&gt;
:Milestone 3 result: &#039;&#039; It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Beyond GSoC:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:*Make the printing feature an integral part of the API so that printing can be done directly without the journal UI&#039;s intervention&lt;br /&gt;
:*Make a CP activity to select the default printer.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From myself:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;The XO users and teachers will greatly benefit from printing, as converting something digital(which may be art, a presentation or a photo) into a physical representation is something very basic, and :something very strong. Not only will there be a good deal of happy faces, but it will also kill the effort required to copy content to a portable drive, and go to a terminal and print.&lt;br /&gt;
:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Benjamin M. Schwartz:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;In order for Sugar to be adopted in schools with existing IT infrastructure, it must give users an easy way to print their documents.If that printing could be routed through a teacher-controlled visual :print queue, then in this regard Sugar would be the most preferred solution for primary education and schools with limited IT resources.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;From Martin Langhoff&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;So children can print their own renditions of Robocop on a Unicorn.&lt;br /&gt;
&lt;br /&gt;
:The goal of your project is to have a simple, effective and portable&lt;br /&gt;
:way to print documents from the Sugar environment. The most immediate&lt;br /&gt;
:outcome will be very straightforward printing through a School Server.&lt;br /&gt;
: Printing is a very popular request in our DIY community so it is also&lt;br /&gt;
:important to ensure that printing is workable even in the absence of a&lt;br /&gt;
:School Server.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
:I think it would be wonderful to begin with my school, I come from a government funded school, not one of those fancy private schools. The kids there would definitely love the different teaching :environment. I will have a talk with the principal, and after that I will further this.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I will of course go through the net. developer mailing lists, and forums.&lt;br /&gt;
:But more over, the community has been very helpful without having a mentor as of yet. I will look forward to the community then!&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;4 How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:I intend to provide weekly updates on the wiki itself. And I will also be providing daily updates on the channel.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Here is the pic with my hack [http://i41.tinypic.com/x6lq9.png]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;1 What is your t-shirt size? (Yes, we know Google asks for this already; humor us.) &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Large! (do I get a sugar tshirt?)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;2 Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Being alone and not interacting with others is a hard bargain. It might seem appropriate during the experience (as one can brush it off as,&amp;quot; who will interact with the lessers&amp;quot;), but its only after you :reach an age you realise the tragedy one has brought on himself. I can never change my past, but I am a different person now and will be in the future.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;3 Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:My motto: There is no such thing as not able to achieve something, the only variable really is effort which differs from achievement to achievement with person to person. &lt;br /&gt;
:what someone else can do, So can I. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009_GSoC_applications]]&lt;/div&gt;</summary>
		<author><name>IwikiwI</name></author>
	</entry>
</feed>