mirror of
https://github.com/acanas/swad-core.git
synced 2024-09-22 00:00:40 +02:00
278 lines
12 KiB
HTML
278 lines
12 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
|
|
<head>
|
|
<title>SWAD: Source code</title>
|
|
<link rel="StyleSheet" href="/swad.css" type="text/css" />
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
|
|
ga('create', 'UA-40768375-1', 'openswad.org', {
|
|
'anonymizeIp': true,
|
|
'storage': 'none',
|
|
'clientId': window.localStorage.getItem('ga_clientId')
|
|
});
|
|
ga(function(tracker) {
|
|
window.localStorage.setItem('ga_clientID', tracker.get('clientId'));
|
|
});
|
|
ga('send', 'pageview');
|
|
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<table width="100%" border="0" cellpadding="20" cellspacing="0">
|
|
<tr>
|
|
<td align="center">
|
|
<table width="90%" border="0" cellspacing="20">
|
|
|
|
<tr>
|
|
<td align="center" class="SWAD">
|
|
<a href="http://openswad.org/" class="SWAD"><img src="/logo/swad224x64.png" alt="SWAD" width="224" height="64" />
|
|
<br />social workspace at a distance</a>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center">
|
|
<h1>Source code</h1>
|
|
<a href="http://creativecommons.org/licenses/by-sa/3.0/deed.es_ES" title="License of text on this page" class="COPYRIGHT"><img src="/img/cc-by-sa.png" style="width:88px; height=31px; vertical-align:middle;" alt="CC BY-SA" /></a>
|
|
<a href="https://openswad.org/en?usr=@acanas" target="_blank">Antonio Cañas Vargas</a>, 1999-2018
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="center">
|
|
<cite>
|
|
Mejor morir de sed que ir a lo fácil<br />
|
|
</cite>
|
|
<a href="https://www.youtube.com/watch?v=56ofmodIS6A">El Pozo, Niños mutantes</a>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="left">
|
|
|
|
<h2>Free software</h2>
|
|
|
|
<p align="justify">
|
|
<a href="http://openswad.org/">SWAD</a>
|
|
is free software, so it can be used at any university or educational institution
|
|
(schools, colleges, academies, ...),
|
|
and other programmers can contribute to its development.
|
|
</p>
|
|
|
|
<h3>Downloading and installing</h3>
|
|
|
|
<p align="justify">
|
|
You can download all the software from <a href="/download/">the download page</a>
|
|
respecting free software licenses indicated in each case,
|
|
and install it by following the steps in <a href="/install/">the installation procedure</a>.
|
|
</p>
|
|
|
|
<h3>Collaborate in the development</h3>
|
|
|
|
<p align="left">
|
|
<em>"Cuando me preguntan cuándo estará listo un programa, contesto:
|
|
depende de cuánto trabaje usted en ello."</em><br>
|
|
--Richard Stallman
|
|
<sup><a href="http://www.elmundo.es/navegante/2004/04/27/entrevistas/1083074999.html">1</a></sup>
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD not assigned a budget for its development,
|
|
although it has received some scholarships in teaching innovation projects.
|
|
Therefore potential partners generally should not expect money for their work,
|
|
but learning, fun, achievement, recognition, and, if desired,
|
|
a certificate of collaboration in the development of SWAD.
|
|
</p>
|
|
|
|
<h2>Description of modules</h2>
|
|
|
|
<p align="justify">
|
|
SWAD platform is implemented mostly as a single program
|
|
(actually one for <a href="../translation/">each language</a>)
|
|
that uses the <a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface">CGI</a> specification.
|
|
This program runs on the <a href="http://swad.ugr.es/server/">server</a>
|
|
every time a user clicks a button or link within the platform,
|
|
queries database and performs the necessary calculations for the current action,
|
|
and generates all the <a href="https://en.wikipedia.org/wiki/HTML5">HTML5</a> code
|
|
that is sent to <a href="http://en.wikipedia.org/wiki/Client_%28computing%29">client</a>.
|
|
</p>
|
|
|
|
<h3>Main core (<code>swad-core</code>)</h3>
|
|
|
|
<p align="justify">
|
|
Programmed by <a href="https://github.com/acanas">Antonio Cañas Vargas</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD main core (the CGI mentioned above) performs almost all the functionality of the platform,
|
|
with the exception of photographs processing, chat, log in from a extern web service,
|
|
and <a href="/mobile/">mobile applications</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
The module has been programmed in <a href="http://en.wikipedia.org/wiki/Ansi_C">ANSI C</a>
|
|
and <a href="/database/">the database</a> can use
|
|
<a href="http://en.wikipedia.org/wiki/Database">database management system</a>
|
|
<a href="http://www.mysql.com/">MySQL</a> or <a href="https://mariadb.org/">MariaDB</a>.
|
|
The reader will probably think "a web application written in C?"
|
|
Yes, it is not usual, <a href="http://www.youtube.com/watch?v=1S1fISh-pag">but... ;-)</a>
|
|
A little more seriously, we could say that we have developed swad-core
|
|
following the philosophy of <a href="http://handmadedev.org/manifesto/">The Handmade Manifesto</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD core has about 234 500 <a href="http://en.wikipedia.org/wiki/Source_lines_of_code">lines of source code</a>.
|
|
Each executable program (one for each language) has a size of 2.2 <a href="http://en.wikipedia.org/wiki/Mebibyte">MiB</a>
|
|
and in most of the possible actions
|
|
generates the <a href="http://en.wikipedia.org/wiki/Web_page">page</a> in few milliseconds.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
The following graph shows the evolution of the number of lines of code.
|
|
Each point on the graph represents a version.
|
|
All versions are listed in the <a href="https://openswad.org/changelog/">change log</a>.
|
|
</p>
|
|
|
|
<a href="img/lineas-codigo-modulo-principal.png"><img src="img/lineas-codigo-modulo-principal.png" width="100%" height="50%" border="0" alt="Main swad core code lines" align="right" hspace="30" vspace="30"></a>
|
|
|
|
<p align="justify">
|
|
For <a href="http://en.wikipedia.org/wiki/Cryptography">encryption</a> of passwords
|
|
the <a href="http://en.wikipedia.org/wiki/SHA_hash_functions">SHA-512</a> algorithm is used.
|
|
For encryption of session codes, users' photograph names and user codes sent as parameters,
|
|
the <a href="http://en.wikipedia.org/wiki/SHA_hash_functions">SHA-256</a> algorithm is used.
|
|
In both cases we have employed the <a href="http://www.ouah.org/ogay/sha2/">Olivier Gay's C implementation</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD core uses <a href="http://www.dropzonejs.com/" target="_blank">DropzoneJS</a>,
|
|
an open source library that provides drag'n'drop file uploads with image previews.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWAD core uses the tool <a href="http://www.cs.fsu.edu/~engelen/soap.html">gSOAP</a>
|
|
to implement the <a href="http://en.wikipedia.org/wiki/SOAP">SOAP</a> server protocol
|
|
of the <a href="https://openswad.org/ws/">web service</a>.
|
|
</p>
|
|
|
|
<br clear="all" />
|
|
|
|
<h3>Photo processing module (<code>fotomaton</code>)</h3>
|
|
|
|
<p align="justify">
|
|
Programmed by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
The photographic processing is performed by a separate module written in
|
|
<a href="http://en.wikipedia.org/wiki/C%2B%2B">C++</a>.
|
|
The first version of this module was developed by former students of Computer Engineering
|
|
Jesús Álvarez Martín and <a href="http://www.xing.com/profile/Alberto_RodrigoGamiz">Alberto Rodrigo Gámiz</a>.
|
|
Currently it uses a version completely rewritten
|
|
by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>.
|
|
The module detects human faces present in the picture,
|
|
resize the image, and performs various improvements
|
|
such as checking the clarity of background, noise removal, contrast and saturation improvement, and white balance.
|
|
The module uses the <a href="http://opencv.willowgarage.com/wiki/">Intel OpenCV library</a>,
|
|
and detects human faces present in images using a cascade classifier trained by AdaBoost algorithm
|
|
(Paul Viola, Michael Jones: "Robust Real-time Object Detection". International Journal of Computer Vision, 2001).
|
|
</p>
|
|
|
|
<h3>Photographs averaging modules (<code>foto_mediana</code> and <code>foto_promedio</code>)</h3>
|
|
|
|
<p align="justify">
|
|
Programmed by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>
|
|
and <a href="">Jesús Mesa González</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
The photographs averaging is performed by two separate programs
|
|
written in <a href="http://en.wikipedia.org/wiki/C%2B%2B">C++</a>.
|
|
These two programs respectively calculated the median and average
|
|
(pixel by pixel) of several photographs,
|
|
and are called by <code>swad</code> core to calculate the average photograph for each degree.
|
|
</p>
|
|
|
|
<h3>Chat server (<code>swad-ircd</code>)</h3>
|
|
|
|
<p align="justify">
|
|
Programmed in <a href="http://en.wikipedia.org/wiki/C%2B%2B">C++</a>
|
|
by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>.
|
|
</p>
|
|
|
|
<h3>Chat client (<code>swad_chat</code>)</h3>
|
|
|
|
<p align="justify">
|
|
Chat client is a <a href="http://en.wikipedia.org/wiki/Java_applet">Java applet</a>
|
|
programmed by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jesús Calandria Hernández</a>.
|
|
</p>
|
|
|
|
<h3>Application for Android devices (SWADroid)</h3>
|
|
|
|
<p align="justify">
|
|
<a href="https://play.google.com/store/apps/details?id=es.ugr.swad.swadroid">SWADroid</a>
|
|
is an app for <a href="http://en.wikipedia.org/wiki/Android_(operating_system)">Android</a> devices.
|
|
You can download it for free from <a href="https://play.google.com/store/apps/details?id=es.ugr.swad.swadroid">Google play</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
SWADroid has been programmed by:
|
|
</p>
|
|
|
|
<ul>
|
|
<li><a href="https://github.com/Amab">Juan Miguel Boyero Corral</a> (leader and main developer)</li>
|
|
<li><a href="https://github.com/acanas">Antonio Cañas Vargas</a> (server side and icons)</li>
|
|
<li><a href="http://www.slideshare.net/antonioaguileramalagon">Antonio Aguilera Malagón</a> (module for control of attendance)</li>
|
|
<li><a href="http://prezi.com/user/7ofwrjzwrfsq/">Helena Rodríguez Gijón</a> (modules for file browser/download and registration in groups)</li>
|
|
<li><a href="http://www.linkedin.com/in/antonioguerreroaviles">José Antonio Guerrero Avilés</a> (module for course info)</li>
|
|
<li><a href="http://elbauldelprogramador.com/">Alejandro Alcalde Barros</a> (interface and module for authentication)</li>
|
|
<li><a href="https://github.com/romilgildo">Rubén Martín Hidalgo</a> (module for writing messages to users)</li>
|
|
</ul>
|
|
|
|
<p align="justify">
|
|
SWADroid is free software. The source code is available in GitHub forge
|
|
<a href="https://github.com/Amab/SWADroid">https://github.com/Amab/SWADroid</a>
|
|
under <a href="http://www.gnu.org/licenses/gpl.html">GNU GPLv3</a>
|
|
and <a href="http://www.gnu.org/licenses/lgpl.html">GNU LGPLv3</a> licenses.
|
|
</p>
|
|
|
|
<h3>Application for iOS devices (iSWAD)</h3>
|
|
|
|
<p align="justify">
|
|
<a href="https://itunes.apple.com/es/app/iswad/id1433797801">iSWAD</a>
|
|
is an app for <a href="https://en.wikipedia.org/wiki/IOS">iOS</a> devices.
|
|
You can download it for free from <a href="https://itunes.apple.com/es/app/iswad/id1433797801">App Store</a>.
|
|
</p>
|
|
|
|
<p align="justify">
|
|
iSWAD has been programmed by:
|
|
</p>
|
|
|
|
<ul>
|
|
<li><a href="https://github.com/diegort">Diego Montesinos Hervás</a> (first version, written in Objective-C, 2012)</li>
|
|
<li><a href="https://github.com/Rauleinstein">Raúl Álvarez Hinojosa</a> (second version, written in Swift 2, 2016)</li>
|
|
<li><a href="https://github.com/mitomono">Adrián Lara Roldán</a> (third version, written in Swift 4, 2018)</li>
|
|
</ul>
|
|
|
|
<p align="justify">
|
|
iSWAD is free software. The source code is available in GitHub forge
|
|
<a href="https://github.com/mitomono/iSWAD">https://github.com/mitomono/iSWAD</a>
|
|
under <a href="https://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a>.
|
|
</p>
|
|
|
|
</td>
|
|
</tr>
|
|
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
|
|
</html>
|