<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.1" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Moodle WebServices</title>
	<link>http://blogs.dfwikilabs.org/moodle_ws</link>
	<description>Development Blog about the Moodle Webservices API and interoperability Issues</description>
	<pubDate>Thu, 10 Jul 2008 08:43:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<item>
		<title>I want it all: kinds of webservices in moodle.</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/07/10/i-want-it-all-kinds-of-webservices-in-moodle/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/07/10/i-want-it-all-kinds-of-webservices-in-moodle/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 08:42:33 +0000</pubDate>
		<dc:creator>ludo</dc:creator>
		
		<category><![CDATA[API]]></category>

		<category><![CDATA[English]]></category>

		<category><![CDATA[Interoperability]]></category>

		<category><![CDATA[Moodle]]></category>

		<category><![CDATA[Webservices]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/07/10/i-want-it-all-kinds-of-webservices-in-moodle/</guid>
		<description><![CDATA[The interoperability for Moodle is a matter of strategic importance. OKTech is doing great things, and in the campus project we did some good job too. But the  goo thing of the proposed architecture that David and Ferran came up with is that allows the posibility of writting connectors implementing many diferent protocols and semantics. [...]]]></description>
			<content:encoded><![CDATA[<p>The interoperability for Moodle is a matter of strategic importance. OKTech is doing great things, and in the campus project we did some good job too. But the  goo thing of the<a href="http://blogs.dfwikilabs.org/moodle_ws/2008/04/14/a-proposal-of-interoperability-architecture-for-moodle/"> proposed architecture</a> that David and Ferran came up with is that allows the posibility of writting connectors implementing many diferent protocols and semantics. So in a near future we will have REST, XML-RPC, SOAP (puaj), <a href="http://www.osoa.org/display/PHP/SCA+with+PHP">OSOA</a>, OKTech, and OKI interfaces for all kinds of happy consumers.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/07/10/i-want-it-all-kinds-of-webservices-in-moodle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>El significado de la Interoperabilidad</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/05/14/el-significado-de-la-interoperabilidad/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/05/14/el-significado-de-la-interoperabilidad/#comments</comments>
		<pubDate>Wed, 14 May 2008 08:49:56 +0000</pubDate>
		<dc:creator>David Castro García</dc:creator>
		
		<category><![CDATA[Castellano]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Interoperability]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/05/14/el-significado-de-la-interoperabilidad/</guid>
		<description><![CDATA[ 	 	 	 	 	 	 	 	
Para quizás entender mejor cual es el objetivo de este blog y en definitiva, cual es el sentido de la creación de esta capa de Interoperabilidad para Moodle, deberíamos entender que representa para nosotros la interoperabilidad dentro de Moodle. No sólo por la vertiente de innovación para [...]]]></description>
			<content:encoded><![CDATA[<p> 	 	 	 	 	 	 	 	<!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } 	--></p>
<p align="justify">Para quizás entender mejor cual es el objetivo de este blog y en definitiva, cual es el sentido de la creación de esta capa de Interoperabilidad para Moodle, deberíamos entender que representa para nosotros la interoperabilidad dentro de Moodle. No sólo por la vertiente de innovación para la plataforma, sino también para el sinfín de puertas que podemos abrir.</p>
<p align="justify">La interoperabilidad para las plataforma e-Learning pone de manifiesto la necesidad de intercambiar información, actividades, documentos y en mayor medida, la posibilidad de hacerlo con cursos y usuarios.</p>
<p align="justify">La interoperabilidad supone en lo que respecta al software, la capacidad de los diferentes programas tengan un intercambio de datos a través de un conjunto común de formatos preestablecidos para el  intercambio, leyendo y escribiendo los mismos formatos de archivo, y utilizando los mismos protocolos.</p>
<p align="justify">Esto supone para las aplicaciones informáticas, las aplicaciones web y los sistemas de información sea un requisito principal y esencial para que el flujo de información sea continuo. La información nutre nuestro sistema y evoluciona como producto y por tanto otorga valor añadido a nuestra plataforma e-Learning. De ahí,  la necesidad que el traspaso de información sea lo más transparente posible y lo más versátil. Proveyendo a la plataforma de un nuevo nivel de negocio, donde ya no sólo la usabilidad y la facilidad de aprendizaje sean primordiales, sino  que los contenidos sean adecuados y fácilmente ampliables, contrastables y portables.</p>
<p align="justify">Ya que las ventajas de tener un sistema de enseñanza y aprendizaje integrado y basado en estándares interoperables son muchas puesto que pueden permitir, tener repositorios de bibliotecas externos para mantener el material de la formación académica en un sólo deposito, la facilidad de uso para la construcción de herramientas pedagógicas, poder combinar los contenidos, de tal forma que sean reusables y permitan ser personalizados en un nuevo contexto, etc.</p>
<p align="justify">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/05/14/el-significado-de-la-interoperabilidad/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Problemas con nuSOAP y PHP5</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/05/07/problemas-con-nusoap-y-php5/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/05/07/problemas-con-nusoap-y-php5/#comments</comments>
		<pubDate>Wed, 07 May 2008 14:11:48 +0000</pubDate>
		<dc:creator>Ferran Recio Calderó</dc:creator>
		
		<category><![CDATA[Castellano]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Interoperability]]></category>

		<category><![CDATA[Bug]]></category>

		<category><![CDATA[NuSOAP]]></category>

		<category><![CDATA[SOAP]]></category>

		<category><![CDATA[Technic]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/05/07/problemas-con-nusoap-y-php5/</guid>
		<description><![CDATA[NuSOAP es un proyecto Open Source que permite conexiones SOAP mediante PHP de forma fácil. Desde las últimas versiones, Moodle incorpora ésta librería para la Moodle Network y es una parte imprescindible de los Webservices.
Durante el proceso programación de los conectores nos hemos encontrado con que el NuSOAP que viene dentro de Moodle no funciona [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dietrich.ganx4.com/nusoap/">NuSOAP</a> es un proyecto Open Source que permite conexiones <a href="http://es.wikipedia.org/wiki/SOAP">SOAP</a> mediante PHP de forma fácil. Desde las últimas versiones, Moodle incorpora ésta librería para la Moodle Network y es una parte imprescindible de los Webservices.</p>
<p>Durante el proceso programación de los conectores nos hemos encontrado con que el <a href="http://dietrich.ganx4.com/nusoap/">NuSOAP</a> que viene dentro de Moodle no funciona correctamente con PHP5 en algunos niveles de debugación. <a href="http://blogs.dfwikilabs.org/moodle_ws/2008/05/07/problemas-con-nusoap-y-php5/#more-25" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/05/07/problemas-con-nusoap-y-php5/feed/</wfw:commentRss>
		</item>
		<item>
		<title>API, servicios y paquetes</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/05/02/api-servicios-y-paquetes/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/05/02/api-servicios-y-paquetes/#comments</comments>
		<pubDate>Fri, 02 May 2008 16:57:10 +0000</pubDate>
		<dc:creator>Ferran Recio Calderó</dc:creator>
		
		<category><![CDATA[API]]></category>

		<category><![CDATA[Castellano]]></category>

		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Technic]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/05/02/api-servicios-y-paquetes/</guid>
		<description><![CDATA[Como ya se comentó en el porqué de los webservices en Moodle, los webservices permiten que un cliente se conecte a Moodle y pueda acceder a un conjunto de funciones públicas de la API.
La arquitectura en tres capas garantiza que las funciones que conforman la API puedan ampliarse independientemente de los conectores. De hecho, pese [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya se comentó en <a href="http://blogs.dfwikilabs.org/moodle_ws/2008/04/12/why-webservices-in-moodle/">el porqué de los webservices en Moodle</a>, los webservices permiten que un cliente se conecte a Moodle y pueda acceder a un conjunto de funciones públicas de la <em>API</em>.</p>
<p>La arquitectura en tres capas garantiza que las funciones que conforman la <em>API </em>puedan ampliarse independientemente de los <em>conectores</em>. De hecho, pese a que en un inicio hemos empezado por la implementación de las funciones de gestión académica que requiere la comunidad de Moodle (el paquete básico), está previsto que se amplíe con los servicios de los módulos (fòrum, wiki, recursos), bloques, desarrollos a medida&#8230;</p>
<p>Así, con el tiempo la <em>API </em>se completará con un número variable de funciones que, en muchos casos, cubrirán necesidades alternativas a la gestión académica (interfaces adaptadas, acceso desde móvil, monitorización remota&#8230;). Por éste motivo, a medida que la <em>API </em>crece, las funciones se agrupan en <em>servicios</em>, para que el cliente elija cuales necesita. <a href="http://blogs.dfwikilabs.org/moodle_ws/2008/05/02/api-servicios-y-paquetes/#more-24" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/05/02/api-servicios-y-paquetes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Requerimientos y limitaciones en las funciones de la API</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/04/22/requerimientos-y-limitaciones-en-las-funciones-de-la-api/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/04/22/requerimientos-y-limitaciones-en-las-funciones-de-la-api/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 11:13:36 +0000</pubDate>
		<dc:creator>Ferran Recio Calderó</dc:creator>
		
		<category><![CDATA[API]]></category>

		<category><![CDATA[Castellano]]></category>

		<category><![CDATA[Interoperability]]></category>

		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Technic]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/04/22/requerimientos-y-limitaciones-en-las-funciones-de-la-api/</guid>
		<description><![CDATA[Cuando se empieza una API de estas características es muy importante definir bien las líneas generales antes de empezar. En nuestro caso pretendemos crear una capa que nos permita acceder a Moodle de forma centralizada. Normalmente, ésto se realizaría usando directamente la funciones de Moodle, sin embargo existen algunos requerimientos adicionales para las funciones que [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando se empieza una API de estas características es muy importante definir bien las líneas generales antes de empezar. En nuestro caso pretendemos crear una capa que nos permita acceder a Moodle de forma centralizada. Normalmente, ésto se realizaría usando directamente la funciones de Moodle, sin embargo existen algunos requerimientos adicionales para las funciones que se deben tener en cuenta: <a href="http://blogs.dfwikilabs.org/moodle_ws/2008/04/22/requerimientos-y-limitaciones-en-las-funciones-de-la-api/#more-9" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/04/22/requerimientos-y-limitaciones-en-las-funciones-de-la-api/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jordi Piguillem gets a Google SOC to implement IMS TI on Moodle</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/04/22/jordi-piguillem-gets-a-google-soc-to-implement-ims-ti-on-moodle/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/04/22/jordi-piguillem-gets-a-google-soc-to-implement-ims-ti-on-moodle/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 06:56:20 +0000</pubDate>
		<dc:creator>ludo</dc:creator>
		
		<category><![CDATA[English]]></category>

		<category><![CDATA[IMS TI 2.0]]></category>

		<category><![CDATA[DFWikiteam]]></category>

		<category><![CDATA[Pigui]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/04/22/jordi-piguillem-gets-a-google-soc-to-implement-ims-ti-on-moodle/</guid>
		<description><![CDATA[
Our Local Hero Jordi Piguillem has got a Google Summer of Code scollarship.   Chuck Severance will mentor him, and I will do my best. The proposed task for Pigui&#8217;s  SOC  will be to implement IMS TI 2.0 in Moodle. In the UPC we did something similar for the Campus project, inspired by Chuck&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://appserv.lsi.upc.es/palangana/moodle/file.php/15/pigui_ag_ru.JPG"><img src="http://appserv.lsi.upc.es/palangana/moodle/file.php/15/pigui_ag_ru.JPG" border="0" /></a></p>
<p>Our Local Hero Jordi Piguillem has got a Google Summer of Code scollarship.   <a href="http://dr-chuck.com/">Chuck Severance</a> will mentor him, and I will do my best. The proposed task for Pigui&#8217;s  SOC  will be to implement IMS TI 2.0 in Moodle. In the UPC we did something similar for the Campus project, inspired by Chuck&#8217;s explanations about IMS TI 1.0 and the requirements for the OKI - Gateway. This project and the DFWebservices are very related.</p>
<p>Congratulations Pigui.  Read more in Pigui&#8217;s Blog:  <a href="http://blogs.dfwikilabs.org/pigui">Moodle Happens</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/04/22/jordi-piguillem-gets-a-google-soc-to-implement-ims-ti-on-moodle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A proposal of interoperability architecture for Moodle</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/04/14/a-proposal-of-interoperability-architecture-for-moodle/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/04/14/a-proposal-of-interoperability-architecture-for-moodle/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 16:21:05 +0000</pubDate>
		<dc:creator>ludo</dc:creator>
		
		<category><![CDATA[API]]></category>

		<category><![CDATA[English]]></category>

		<category><![CDATA[Interoperability]]></category>

		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Moodle]]></category>

		<category><![CDATA[Webservices]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/04/14/a-proposal-of-interoperability-architecture-for-moodle/</guid>
		<description><![CDATA[Designing a Webservices Architecture for Moodle: Moodle-DFWs.

The purpose of this entry is to analyze the interoperability needs of Moode, and to make a proposal of architecture (that is already partially implemented). We call this Moodle-DFWs, because it needs a name. All this work is being done in the Universitat Politecnica de Catalunya by the group [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Designing a Webservices Architecture for Moodle: Moodle-DFWs.<br />
</strong><br />
The purpose of this entry is to analyze the interoperability needs of Moode, and to make a proposal of architecture (that is already partially implemented). We call this Moodle-DFWs, because it needs a name. All this work is being done in the <a href="http://www.upc.edu">Universitat Politecnica de Catalunya</a> by the group known as <strong>DFWikiteam</strong>.</p>
<p><strong>Antecedents.</strong></p>
<p>Martin Dougiamas assigned to us the task of developing a API to access the services of the Moodle core (Let’s call it THE API from now on). This task is d<a href="http://tracker.moodle.org/browse/MDL-12886">escribed in the Moodle tracker </a> and in<a href="http://docs.moodle.org/en/Development:Web_services"> Moodle Docs</a>. It consists on a set of PHP functions that encapsulate most of the services that an external ( and even internal ) application shall need from a <strong>Moodle </strong>server. For example a backoffice application to manage inscriptions and billing.  This API consists in a number of functions already proposed by <strong>Martin</strong> and other guys at Moodle.org  and this development will help to redesign some of the very Moodle core functions in the future.</p>
<p>This will be useful for all developers who want to develop applications for <strong>Moodle</strong>, because this development can lead to a documented and stable <strong>API</strong> to hack into <strong>Moodle</strong> that should overcome new versions of <strong>Moodle</strong>. With funding we could even backport the API&#8230; anyone interested }-)</p>
<p>OK, e are doing this. But we are not going to stop there. Our intentions are more mean. We intend to provide an interoperability architecture to be built over this API.  Some of the functions of <strong>THE API</strong> <a href="http://cvs.moodle.org/contrib/patches/dfws/">are already in the CVS</a>  and we are gaining speed writing them. <img src='http://blogs.dfwikilabs.org/moodle_ws/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Requirements  </strong></p>
<p><strong>Moodle-DFWs</strong> needs to be accessible using any transport protocol present or future. So it cannot depend on a concrete Webservices protocol, name it XML-RCP, SOAP, REST or two empty yogurt vases tied by a wire.<br />
<strong>Moodle-DFWs</strong> will need to be implemented in the present version of Moodle (Moodle 1.9) and in the future versions as well. We take for granted that in the future more services will come up, but - come on guys - we need the semantics of the first release to remain stable. We don’t want it to be like a regular Java with lots of deprecated features&#8230;. we remember: “<em>Java is evil and eats kids</em>”&#8230; said the master.<br />
<strong>Moodle-DFWs </strong>needs to be extendable, so contrib amb custom applications can have a standard way to extend <strong>Moodle</strong> out of its bounds. To ensure security and simplify administration: Moodle-DFWs has to obey the Moodle Capabilities system.</p>
<p><strong>A first glimpse at Moodle-DFWs</strong></p>
<p>Lets look at fig.1. In this figure we have Moodle (in an orange box, off course), just below Moodle we have blue boxes that represent Moodle extensions such activity modules, courses or blocks. The purple lines plug all these software artifacts with a green box labeled API. This is THE API that MD wants us to develop. At least the part that talks with the orange Moodle box.</p>
<p>We want to propose a way to extend THE API so MOD, BLOCK, and COURSE extensions can provide their own service through THE API. These extensions would be dynamically included in the API if the Moodle Admin allows it. So here’s the first thing to debate. There are scalability and security issues at stake&#8230; so we want to hear from Martin Langhoff and Petr Skodak soon (we hope he will like these more than the wiki <img src='http://blogs.dfwikilabs.org/moodle_ws/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ).</p>
<p><a href="http://www.flickr.com/photos/davfer/2403140336/" title="Moodle Webservice architecture diagram by ferran.david, on Flickr"></p>
<p><img src="http://farm4.static.flickr.com/3271/2403140336_0839b85078.jpg" alt="Moodle Webservice architecture diagram" height="434" width="500" /></p>
<p></a></p>
<p align="center"><em>Fig. 1 A firs glimpse on the Moodle-DFWs architecture.</em></p>
<p>There’s also a CON green box, just over THE API. We took this box out of THE API because is something you will only need when using a connection from another application. If you access THE API directly from a inside Moodle PHP application, an activity module for example, you just don’t need it. The CON box contains the methods to authenticate authorize the remote application. These remote applications will talk with the blue boxes inside the big green box on the left (still on fig 1). We call these boxes <strong>Connectors</strong>, and those are who implement a way of connection, giving us independence of the webservices protocol.</p>
<p>We have already released to the tracker one connector for PHP and another for SOAP. To test the SOAP connector Ferran Wrote a Python client, also in the CVS.</p>
<p>This architecture allows that the services implemented in the connectors can be independent of the methods of THE API they use. Security enhancements and scalability considerations can be applied in the design of custom connectors. In fact a connector does not need to implement a full access to the Moodle Services, juts what the organization needs. In this case the Moodle partners could meet a new field of business making custom, secure and high performance connectors. (I just have the feeling that MNET could be re-implemented as a connector some day (comments from my friend Martin Lanhoff are required!))</p>
<p>The current design of the connectors requires them to implement two basic components.</p>
<ul>
<li><strong>Connect:</strong> initiates the first connection with Moodle. Login and logout will be handled here, and will negotiate the services from THE API that will be accessed. To manage remote connections  “connect” will be the address for the http/s session.</li>
<li><strong>InOut:</strong> is the one who offers the client application the services implemented in the connector according to the rights of the authenticated user.</li>
</ul>
<p><strong>A three layered architecture.<br />
</strong><br />
So, we get this tree layers (See Fig. 2):</p>
<ul>
<li><strong>Connect Layer:</strong> Contains the connectors that implement services to local(PHP) or remote (Webservices) applications. Each component manifests the services implemented using the “info” function, and implement the Connect and InOut components.</li>
<li><strong>Integration layer:</strong>  This layer consists on THE API (being implemented) that provides a one point access to the Moodle + contrib functionalities.</li>
<li><strong>Services Layer:</strong> Is where real things happen. THE API knows ho to deal with the Moodle core, and in future posts we will deal on how the activity modules, course formats and plugins can offer their services to the clients.</li>
</ul>
<p><a href="http://www.flickr.com/photos/davfer/2403150142/" title="layers by ferran.david, on Flickr"></p>
<p><img src="http://farm3.static.flickr.com/2164/2403150142_05d80d3f1c.jpg" alt="layers" height="347" width="500" /></p>
<p>Fig 2: 3 Layers are cool</p>
<p>&nbsp;</p>
<p></a><br />
That&#8217;s It&#8230; comments and serrano ham are most wellcome!<br />
DFWikiteam</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/04/14/a-proposal-of-interoperability-architecture-for-moodle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why Webservices in Moodle?</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/04/12/why-webservices-in-moodle/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/04/12/why-webservices-in-moodle/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 18:59:48 +0000</pubDate>
		<dc:creator>ludo</dc:creator>
		
		<category><![CDATA[English]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[Interoperability]]></category>

		<category><![CDATA[Moodle]]></category>

		<category><![CDATA[Webservices]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/04/12/why-webservices-in-moodle/</guid>
		<description><![CDATA[The number of organizations that use Moodle as their LMS (Learning Management System) is greater every day. From k-12 schools to universities and companies the adoption of Moodle as e-learning platform is growing at a crazy pace. This is great both for the Moodle software and for the community. But as more users and institutions [...]]]></description>
			<content:encoded><![CDATA[<p>The number of organizations that use Moodle as their LMS (Learning Management System) is greater every day. From k-12 schools to universities and companies the adoption of Moodle as e-learning platform is growing at a crazy pace. This is great both for the Moodle software and for the community. But as more users and institutions come into the MoodleVerse, more new ways of  looking at education and requirements for an LMS are set on the table. And Martin Dougiamas and the Moodle Community can keep only one <a href="http://docs.moodle.org/en/Roadmap">roadmap</a> .</p>
<p>Lets remember that Moodle, build on <a href="http://docs.moodle.org/en/Philosophy">philosophical principles on pedagogy (Social Constructionism</a>), typically comes into the  educational spaes by the hand of the teachers with the will to innovate. When the nw LMS is proposed from ABOVE, usually goes towards things like Sakai, if we are lucky and  go FLOSS, or things in the propietary market that we will not name, period.     Right now the Moodle policy is to build on stability, reliability and integration with the needs of the institution. And this is a good thing, cause is the way that the ideas bred in the Moodle communty can spread to as many educational environments as possible.</p>
<p>But still there are plenty of Moodle adopters who have crazy ideas that we&#8217;d love to see out there. Moodle&#8217;s M stands for Modular ( Martin recognizes that on a first stage it meant Martin&#8217;s <img src='http://blogs.dfwikilabs.org/moodle_ws/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) so Moodle can be extended through activity modules, blocks, course formats, hacks, plug-ins, etc. The Moodle contrib is full of that (more than 330 actually). But we do now from on experience that is hard to develop a Moodle extension, open source it, give support to the users, maintain it and, specially, to keep up with the evolution of Moodle ( that in last 3 years has been crazy: look at the Moodle core in Moodle 1.4 and what&#8217;s rigth now in Moodle 1.9&#8230; ) Still one of the keys of  the success of Moodle is the possibility that gives of being extended, cause every big organization wants its information system to adapt (not to adapt the organization itself, like when one implements things like SAP). But organizations need to keep upgrading their customizations to the Moodle version&#8230; and lots of these developments never are published, and lots of members of the community are reinventing the same wheel over and over again. <img src='http://blogs.dfwikilabs.org/moodle_ws/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>And every day appear new connected devices (mobile devices, micro-laptops such as the OLPC, consoles like the Wii, cook gadgets like th iPhone and even virtual artefacts like Virtual worlds like Second Life (to give a not so good example)). All of these artifacts can be possible points of access to the Moodle courses, and even can become scenarios to new learning experiences&#8230; more exciting and innovative than the very Moodle itself.</p>
<p>And we want all of these to talk with Moodle and with the Moodle activities&#8230;</p>
<p>Moodle needs a stable core API that alows the developers to write activities and extensions that survive the Moodle evolution, so they can be ported from one Moodle version to the next&#8230; giving the organizations a garantee of their investment in time, brainpower and off course money. And needs easy ways so external appilcations and devices can talk with it in an easy to develop and secure way&#8230;</p>
<p>Our challenge is to create a kick ass webservices echosystem that Martin Dougiamas will love to put into Moodle core rigth away. That&#8217;s (one of ) our errand.</p>
<p>DFWikiteam out</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/04/12/why-webservices-in-moodle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Arquitectura de los webservices de Moodle</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/04/10/arquitectura-de-los-webservices-de-moodle/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/04/10/arquitectura-de-los-webservices-de-moodle/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 10:25:18 +0000</pubDate>
		<dc:creator>Ferran Recio Calderó</dc:creator>
		
		<category><![CDATA[API]]></category>

		<category><![CDATA[Castellano]]></category>

		<category><![CDATA[Architecture]]></category>

		<category><![CDATA[Technic]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/04/10/arquitectura-de-los-webservices-de-moodle/</guid>
		<description><![CDATA[Para garantizar el éxito de la capa de interoperabilidad es necesario tener en cuenta algunos requisitos:

La capa debe ser accesible desde cualquier sistema de conexión, tanto actual como futuro.
La estructura de la api debe ser versátil para que se adapte a futuras versiones de Moodle.
Las funciones que conforman la api deben ser ampliables para que [...]]]></description>
			<content:encoded><![CDATA[<p>Para garantizar el éxito de la capa de interoperabilidad es necesario tener en cuenta algunos requisitos:</p>
<ul>
<li>La capa debe ser accesible desde cualquier sistema de conexión, tanto actual como futuro.</li>
<li>La estructura de la api debe ser versátil para que se adapte a futuras versiones de Moodle.</li>
<li>Las funciones que conforman la api deben ser ampliables para que las contribuciones o incluso aplicaciones a medida puedan definir más.</li>
<li>El webservice debe adaptarse al sistema de privilegios de Moodle (capabilities) para garantizar la seguridad.</li>
<li>Pese a que el punto de acceso a la api será único y otorgará acceso a todas las partes sistema donde se tengan privilegios, debe existir un medio para especificar qué partes de la api son esenciales para las aplicaciones clientes. Así, será posible optimizar las conexiones incluyendo sólo aquellas funcionalidades que se necesiten.</li>
</ul>
<p>Los anteriores requerimientos nos han llevado a definir la siguiente arquitectura.</p>
<p><a href="http://www.flickr.com/photos/davfer/2403140336/" title="Moodle Webservice architecture diagram by ferran.david, on Flickr"><img src="http://farm4.static.flickr.com/3271/2403140336_0839b85078.jpg" alt="Moodle Webservice architecture diagram" height="434" width="500" /></a></p>
<p>Donde la única parte estática es la referente a la integración de las apis con el medio de conexión. De éste modo es posible ampliar la api o los conectores sin necesidad de replicar código. A diferencia de las grandes librerías de Moodle, las api se basará en librerías específicas que serán incluidas dinámicamente y que podrán ser conectadas o desconectadas a nivel del sitio (site) y requeridas a nivel de aplicación cliente o consumidora.</p>
<p>Además, existen varios conectores para acceder a la api. Cada connector representa un medio de acceso. Para una primera versión hemos trabajado en un conector SOAP y otro de PHP, esté último pensado para aplicaciones que se encuentren en el mismo servidor (o en la misma instancia de Moodle).</p>
<p>La arquitectura esta pensada para que los conectores se usen independientemente de las funciones de la api que sean requeridas. Ésta es la razón por la que cada conector dispone de dos componente básicos:</p>
<ul>
<li>Connect: establece la primera conexión con Moodle y proporciona herramientas para autenticarse en el sistema (login), salir (logout) y especificar que servicios de la api se necesitan. En el caso de conexiones remotas como SOAP, la dirección de &#8220;connect&#8221; será la entrada pública al sistema que nos proporcionará una sesión para usar la api (un tíquet).</li>
<li>InOut: es el encargado de ofrecer al cliente la api unificada con los servicios requeridos y filtrar según los privilegios del usuario autenticado. El acceso a este componente requiere que el usuario esté autenticado y, por tanto, en el caso de las conexiones remotas será necesario usar el componente &#8220;connect&#8221; antes.</li>
</ul>
<p>Como es de suponer, el hecho de pasar por &#8220;connect&#8221; para conseguir una sesión temporal válida no se aplica en el caso del connector director PHP, donde la propia sesión de Moodle remanente en el navegador web ya nos sirve. El trazado de la conexión será tratado en próximos artículos.</p>
<p>Las librerías que contienen los servicios de la api deben definirse de forma que a los conectores les sea posible ofrecerlas a los clientes. Por éste motivo es necesario que cada librería disponga de una función especial, llamada de forma genérica función &#8220;info&#8221;, que sirva de índice para general una definición de operaciones y estructuras (el WSDL en el caso de SOAP y una estructura de datos en el de PHP). La existencia de ésta función conlleva una ventaja clara, cada servició dispondrá de lugar completamente definido donde podrán consultarse de forma fácil las funciones públicas (cosa que en lenguajes como PHP4, donde no existen funciones privadas, es bastante útil). El formato de dicha función se especificará en próximos artículos, así como las limitaciones que implica.</p>
<p>Dado que el montaje de la api se realiza dinámicamente de forma centralizada, es posible separar el webservice en tres capas muy diferenciadas:</p>
<p><a href="http://www.flickr.com/photos/davfer/2403150142/" title="layers by ferran.david, on Flickr"><img src="http://farm3.static.flickr.com/2164/2403150142_05d80d3f1c.jpg" alt="layers" height="347" width="500" /></a></p>
<ul>
<li>Capa de servicios (Service Layer): son todas las librerías que pueden conformar la api. Todas ellas disponen de su propia función &#8220;info&#8221;. La librerías pueden estar agrupadas en paquetes de servicios que pueden ampliarse. Por ejemplo, un paquete podría corresponder a los servicios ofrecidos por los distintos módulos de actividad (fórum, wiki, lección&#8230;), mientras que otro podría garantizar el acceso a funciones de gestión académica hechas a medida.</li>
<li>Capa de integración (Integration Layer): representa la inclusión única de la api. Se divide sólo en dos partes: una para las funciones de login, logout y petición de servicio, y otra que unifica los servicios requeridos para que los conectores puedan ofrecerlos. También es el responsable de unir todos los índices de funciones y estructuras que les devuelven los servicios (con las funciones &#8220;info&#8221;) y combinarlos en una macroestructura</li>
<li>Capa de conexión (Connect Layer): representa el total de conectores que hay activos en el sistema. Cada conector es capaz de interpretar la macroestructura que le devuelve la capa de integración y ofrecerla al cliente.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/04/10/arquitectura-de-los-webservices-de-moodle/feed/</wfw:commentRss>
		</item>
		<item>
		<title>El porqué de los webservices en Moodle</title>
		<link>http://blogs.dfwikilabs.org/moodle_ws/2008/04/08/el-porque-de-los-webservices-en-moodle/</link>
		<comments>http://blogs.dfwikilabs.org/moodle_ws/2008/04/08/el-porque-de-los-webservices-en-moodle/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 16:38:24 +0000</pubDate>
		<dc:creator>Ferran Recio Calderó</dc:creator>
		
		<category><![CDATA[Castellano]]></category>

		<category><![CDATA[General]]></category>

		<category><![CDATA[introduction]]></category>

		<guid isPermaLink="false">http://blogs.dfwikilabs.org/moodle_ws/2008/04/08/el-porque-de-los-webservices-en-moodle/</guid>
		<description><![CDATA[En los últimos años el número de organizaciones que confían en Moodle como su plataforma de e-Learning ha augmentado. Ésto haprovocado que los requerimientos del sistema se hayan diversificado considerablemente. Pese a que Moodle se mantiene fiel a sus principios pedagógicos, que son la clave de su éxito, existe una creciente necesidad de implementar nuevas [...]]]></description>
			<content:encoded><![CDATA[<p>En los últimos años el número de organizaciones que confían en Moodle como su plataforma de e-Learning ha augmentado. Ésto haprovocado que los requerimientos del sistema se hayan diversificado considerablemente. Pese a que Moodle se mantiene fiel a sus principios pedagógicos, que son la clave de su éxito, existe una creciente necesidad de implementar nuevas funcionalidades y, sobre todo, de adaptar el software base a los sistemas de información de las organizaciones donde se implanta.</p>
<p>Por otro lado, cada día aparecen nuevos dispositivos con acceso a  la  Red, como los móviles, que ya se cuentan entre los clientes potenciales para cualquier aplicación en línea. Muchos de estos dispositivos tienen navegadores compatibles, sin embargo, sus monitores y teclados limitados suelen dificultar bastante la navegación por páginas complejas como las de  Moodle. En este sentido, sería conveniente que Moodle facilitase la creación de interfaces alternativas o permitiese la  conexión desde programas externos que ofrezcan vistas no basadas en HTML.</p>
<p>Dentro de la comunidad ya hace tiempo que se tanteo la posibilidad de crear una capa lógica para Moodle que permita extender las funcionalidades del sistema sin necesidad de modificar el código original, una API. El problema es que en las últimas versiones de Moodle se han añadido muchas novedades y modificado una gran parte del núcleo del programa (sobre todo en la versión 1.7 debido a creación de los  roles). En consecuencia, la  dirección de l proyecto ha priorizado la estabilidad de  las modificaciones a implementar y documentar de una API para facilitar las aplicaciones de  terceros.</p>
<p>Como añadido, la creación de la capa de interconexión nos obliga a replantearnos una gran parte de las funciones internas de Moodle y simplificar el código para que sea más usable y comprensible. En este sentido, DFwikiLabs trabajarà junto al equipo de  Moodle.org para ayudar a  mejorar la  calidad del código final.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.dfwikilabs.org/moodle_ws/2008/04/08/el-porque-de-los-webservices-en-moodle/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
