Universidades – Proyectos disponibles

Universidades – Proyectos disponibles

Esta es una lista de los proyectos que hemos pensado para estudiantes de proyectos final de carrera/grado.

Para consultar la lista de universidades con las que colaboramos consulta esta lista.

No olvides visitar la página cada cierto tiempo ya que iremos añadiendo nuevos proyectos, y por supuesto, si tienes tu propia idea para un proyecto en torno a KDE, no dejes de contactar con nosotros.

Plataforma de documentación

Mentor: Àlex Fiestas <afiestas@kde.org>

Existen múltiples herramientas que pueden ser utilizadas para documentar un proyecto de software libre (wiki, apidoc, track, archivos de texto plano…) pero no se integran entre si, y la gran mayoría no han sido pensadas para la documentación total del proyecto si no para documentar algunas partes del mismo. La idea de este proyecto es la de crear una herramienta que pueda utilizar la información almacenada en las diferentes herramientas ya existentes y la pueda presentar de tal manera que maximice la visibilidad y utilizad. También debería de poder extender la información.

Esta es una lista aproximada de requisitos:

  • Ha de ser compatible con Doxygen para la obtención de ‘docblocks’, principalmente documentación de api (ver http://api.kde.org)
  • Ha de ser capaz de incluir tutoriales creados en mediawiki
  • Ha de ser capaz de incluir ejemplos de diferentes fuentes cómo: mediawiki, Doxygen, Git, o la propia herramienta
  • Ha de tener un sistema de comentarios que permita comentar toda la información disponible
  • Ha de tener un sistema de valoraciones (rating) para promocionar los contenidos
  • Ha de permitir la búsqueda de todos los datos.
  • Ha de permitir la búsqueda de usos de API (cómo hace http://lxr.kde.org)

El lenguaje o lenguajes de programación a utilizar pueden ser varios, por ejemplo: PHP / Ruby / Python / Node

El proyecto se considerará finalizado cuando se cumplan todos los requisitos y pueda ser adoptado por KDE.

Programación de una aplicación KDE Connect para Windows, Mac o iPhone

Mentor: Albert Vaca <albertvaka@gmail.com>

KDE Connect permite compartir y sincronizar datos arbitrarios entre dos dispositivos de forma inalámbrica: desde enviar archivos de un dispositivo a otro, hasta sincronizar el portapapeles pasando por usar el teléfono móvil como control remoto. Este proyecto consistirá en dar soporte para un nuevo sistema operativo a KDE Connect, sumándose a las implementaciones ya existentes para Linux y Android.

Además de implementar las bases para comunicarse con otros dispositivos (comunicación por sockets, serialización de la información, cifrado…) es clave para este proyecto investigar acerca de las posibilidades del sistema operativo elegido y diseñar funcionalidades específicas adaptadas a este. Por ejemplo: puede que iPhone permita a las aplicaciones atender llamadas, en tal caso KDE Connect podría aprovechar esta función y permitir al usuario contestar llamadas des del ordenador. Es importante además que la aplicación se adapte también a las capacidades del ‘receptor’: por ejemplo, si el cliente para Windows no permite recibir archivos, no tiene sentido que des de iPhone podamos enviar archivos a un ordenador Windows.

Sincronización de directorios en Linux usando KDE Connect

Mentor: Albert Vaca <albertvaka@gmail.com>

Este proyecto consistirá en desarrollar una aplicación C++ para sincronizar archivos y directorios de manera similar a Dropbox, Google Drive o Box, pero sin la necesidad de un servidor intermedio. Para abstraer la comunicación entre dispositivos y el transporte de datos se usará KDE Connect, que permite enviar datos de forma segura entre pares de dispositivos.

Para el exito del proyecto será fundamental que la aplicación implemente las siguientes características:

  • Uso de la API del kernel inotify para detectar cambios en el sistema de ficheros
  • Resolución (automática o manual) de conflictos cuando un archivo se modifica en dos dispositivos a la vez
  • Sincronización de deltas para cambios en archivos grandes

También pueden ser interesantes ciertas optimizaciones, como almacenar un índice de ficheros con hashes para evitar re-escanear los directorios por completo tras reiniciar o evitar enviar dos veces archivos duplicados.