swad-core/html/source/index.html

280 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&ntilde;as Vargas</a>, 1999-2022
</td>
</tr>
<tr>
<td align="center">
<cite>
Mejor morir de sed que ir a lo f&aacute;cil<br />
</cite>
<a href="https://www.youtube.com/watch?v=56ofmodIS6A">El Pozo, Ni&ntilde;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>&quot;Cuando me preguntan cu&aacute;ndo estar&aacute; listo un programa, contesto:
depende de cu&aacute;nto trabaje usted en ello.&quot;</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&ntilde;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 &quot;a web application written in C?&quot;
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="https://handmade.network/manifesto">The Handmade Manifesto</a>.
</p>
<p align="justify">
SWAD core has about 323 000 <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.7 <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&uacute;s Calandria Hern&aacute;ndez</a>
and <a href="https://github.com/mesagon">Jes&uacute;s Mesa Gonz&aacute;lez</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&uacute;s &Aacute;lvarez Mart&iacute;n and <a href="http://www.xing.com/profile/Alberto_RodrigoGamiz">Alberto Rodrigo G&aacute;miz</a>.
Currently it uses a version completely rewritten
by <a href="http://es.linkedin.com/in/dcalandria">Daniel Jes&uacute;s Calandria Hern&aacute;ndez</a>
and <a href="https://github.com/mesagon">Jes&uacute;s Mesa Gonz&aacute;lez</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&uacute;s Calandria Hern&aacute;ndez</a>
and <a href="">Jes&uacute;s Mesa Gonz&aacute;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&uacute;s Calandria Hern&aacute;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&uacute;s Calandria Hern&aacute;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&ntilde;as Vargas</a> (server side and icons)</li>
<li><a href="http://www.slideshare.net/antonioaguileramalagon">Antonio Aguilera Malag&oacute;n</a> (module for control of attendance)</li>
<li><a href="http://prezi.com/user/7ofwrjzwrfsq/">Helena Rodr&iacute;guez Gij&oacute;n</a> (modules for file browser/download and registration in groups)</li>
<li><a href="http://www.linkedin.com/in/antonioguerreroaviles">Jos&eacute; Antonio Guerrero Avil&eacute;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&eacute;n Mart&iacute;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&aacute;s</a> (first version, written in Objective-C, 2012)</li>
<li><a href="https://github.com/Rauleinstein">Ra&uacute;l &Aacute;lvarez Hinojosa</a> (second version, written in Swift 2, 2016)</li>
<li><a href="https://github.com/mitomono">Adri&aacute;n Lara Rold&aacute;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>