Welcome to the SCoRe Lab Google Summer of Code (GSoC) 2017 project ideas page. We are a dynamic and enthusiastic nonprofit research group pioneering in Internet of Things (IoT), Embedded Systems, Computer Security and 'Wireless Adhoc and Sensor Networks' and is one of the best groups in South Asia. We are based in the University of Colombo School of Computing, Sri Lanka. This is the third time that we are participating in the GSoC, we will use this page to develop possible project ideas that have on the above mentioned areas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. You can also talk to us about possible project ideas and we are happy to improve or heip you with them. Please keep in mind that projects need to be realistically something that is able to be functionally completed by a student working full time for about eight weeks. Thanks!
Mailing list: firstname.lastname@example.org
IRC Channel: https://gitter.im/scorelab/scorelab
There are some important guidelines to submit ideas, please read these carefully before adding your ideas;:
OpenIOE enables you to subscribe to data streams and get data from the sensors and store them. But it cannot act as a publisher, therefore a user cannot send control messages to sensors. (Eg. Changing the thermostat value).Required Knowledge: Spring Boot, ActiveMQ Artemis, MQTT, AMQP and Cassandra
Currently, OpenIOE does not implement any security mechanisms for publishing or subscribing to any registered sensors in the backend.In order to support more clients, MQTT authentication and GUID based URL routing can be used.Required Knowledge: Spring Boot, ActiveMQ Artemis, MQTT, AMQP and Cassandra
rustcloud is a standard library for Rust that abstracts away differences among multiple cloud providers. The rustcloud compute package is designed to make it easy to provision and work with VMs. Developing rust package for interacting with Google compute engine and AWS EC2 using a unified API.Required Knowledge: Rust, Google Cloud, AWS
nodecloud is a library for NodeJS that abstracts away differences among multiple cloud providers. The nodecloud compute package is designed to make it easy to provision and work with VMs. Developing NodeJS package for interacting with Google compute engine and AWS EC2 using a unified API.Required Knowledge: NodeJS, Google Cloud, AWS
gocloud is a standard library for Go that abstracts away differences among multiple cloud providers. The gocloud compute package is designed to make it easy to provision and work with VMs. Developing golan package for interacting with Google compute engine and AWS EC2 using a unified API.Required Knowledge: Go, Google Cloud, AWS
ANDROPHSY is an opensource forensic tool for Android smartphones that helps digital forensic investigator throughout the life cycle of digital forensic investigation. Services provided by ANDROPHSY includes,
Subgraph isomorphism asks if there is a subset of edges and vertices of G1 that is isomorphic to a smaller graph G2, decision version is NP-complete.
Known polynomial alternative - Graph kernels which compare substructures of graphs that are computable in polynomial time. (e.g. Graphlet kernels, Weisfeiler-Lehman subtree kernels, and Shortest-Path graph kernels.)
This project is inspired by deep learning approaches, to learn latent representations of sub-structures for graphs, and implement the deep learning notions in a scalable kernel model.Required Knowledge: Graph theory, Deep learning, Temporal models
BellyGraph is a novel query framework built for evolving graphs, currently sketch based summarization techniques (e.g TCM) are implemented, and graph degree distribution is approximated across streaming graph relations. Idea is to extend the current data-structure to more scalable version which can deal with both online and offline analysis of evolving graphs.
BellyGraph is directly connected with OpenADS -- which is a Big Data analytics framework designed to consume and monitor network traffic and mine hidden anomalies using advanced machine learning techniques. In current date, OpenADS is still at it's conceptual stage where it is designed to work at a massive scale. The system believes to act as an extensible and reliable platform to enrich traditional Intrusion Detection System (IDS). OpenADS is unique at it's nature with the architecture supported by Berkeley Data Stack (BDS). OpenADS WikiRequired Knowledge: Graph theory, Temporal models, Experience with any event driven language
Stackle is an web communication portal aimed at providing Open Source organizations a platform to have discussions on their github projects and their issues. It provides Github intergration which allows adminstrator of an organization to create a forum thread for the particualr organization. Users signing in is able to view forums of the orgrnizations they contribute to and engage in the forum discussions.Required Knowledge: NodeJS, AngularJs
Dronesym is a platform enabling users to handle and track their drone fleets in real time. Users can have functionality to add new drones configure their flight paths and monitor their progress through a web dashboard.Required Knowledge: NodeJS, AngularJs, DroneKit, SITL runner for DroneKit
OpenPub is a publication manager for individuals and research groups. OpenPub provides research's to upload and share their’s publications with others and get valuable feedbacks for their publications. It also allow users to easily find related resources in different areas and categories.Required Knowledge: NodeJS, AngularJs
Front-end of the OpenDF is currently done using AngularJS, but we see we need a framework which is extra good in component based UIs. We like to make use of HTML5’s Web Components APIs in OpenDF. We are flexible on what framework to use, it could be React or Polymer or any other web component based framework.
This also should go with ES6 and SCSS or LESS. Gulp or Grunt should be used for development, once the new release is ready for the production, files should be precompiled( ES6 and SCSS or LESS ), merged, minified, versioned, and put into ‘dist’ folder. Then the NGINX server can serve the new release.Required Knowledge: Any Web Components framework, ES6 and Babel, SCSS or LESS, npm/yarn, Gulp/Grunt
We have to put all the parts of the OpenDF into Kubernetes where anyone can deploy OpenDF with all the modules easily. We have some modules which are not Dockerized, you have to take care of them too. Modules exposes RESTful APIs, they should be made available through an API manager with proper access control mechanism. SSL support also should be there.
Static files( frontend ) should be served by an NGINX server, which resides on its own container. You can work on this in community bonding period.Required Knowledge: Kubernetes, Docker, API Management, SSL
When a disk image is being processed, the photo files will be piped to this module. This module should try to identify the contents of the image, try to annotate the objects and generate a description if can. Final goal of the module is to annotate and describe all the photos and store in Elasticsearch for easy searching.
This module will be on its own instance and should expose a RESTful API where OpenDF can interact with. You should finalize the module as a Docker images, where when spawned an instance, it should start all the needed services and be exposing the APIs.
Some links that might help you are,
When a disk image is being processed, the photo files will be piped to this module. This module should try to identify the face on the images, try to annotate the faces. Module should maintain a database of identified faces as profiles, thus, all the images of the same person should be categorized under one profile. Users should be able to manage names and other details of the profiles on this database. When asked for images of a particular person, given a name or any other available detail, this module should suggest matching profiles. Given an image, this module should suggest matching profiles by identifying the face on the given image.
This module will be on its own instance and should expose a RESTful API where OpenDF can interact with. You should finalize the module as a Docker images, where when spawned an instance, it should start all the needed services and be exposing the APIs
Some links that might help you are,
When running Bassa for the first time, it should redirect to the setting up process, where the admin accounts are created, organization details and logos set. Other details like, file storage directories, DB settings, auto update checking period, etc also could be configured there.
Automatic Updates is where when we push a new release tag on Github, running Bassa instances should prompt to install the new version. If the user (admin user) accepts to install the new version, then the new version should get installed seamlessly.
Finally, Dockerize Bassa to let anyone simply run Bassa by running the Docker, which starts the databases, web servers, etc.Required Knowledge: Docker, Gulp, AngularJS, Material design standards
With the growing popularity of BitCoin in the last couple of years, other blockchains have been in development for solving various problems that need distributed consensus. Ethereum blockchain is one example, that gives users to develop "smart contracts" that runs in the blockchain.
This gives the ability to develop decentralized applications (or dApps). Users do not need to 'trust' anything or anybody.
In addition to that, dApps are always available and will be guaranteed to be available in the future as well.
Also, it is resistant to traditional attacks such as DDoS.
This framework has given many developers to write a decentralized application without much effort, without needing distributed systems or cryptography knowledge. Many startups are actively developing applications for Ethereum such as Ethereum Name Service (ENS), Etheria or WeiFund.
Unfortunately, because the technology being used is bleeding edge it is inevitable that attacks or hacks will target these apps for monetary reasons.
Last year DAO suffered a severe attack because of its security flaws. Due to that attack, 3.6m ether was stolen from DAO's smart contract.
Also, once you publish a smart contract in Ethereum it is not possible to modify or update it as a regular web application. Thus, even developers identify a critical bug in the contract it is not possible to push a bugfix in a straightforward way.
Thus, in order to fill the gap of not having a proper 'smart contract' compatible monitoring service, we propose to build a web application that can monitor other smart contracts in Ethereum and give the capability to safeguard it's critical functions (Ether send and receive) and interact and visualize with smart contract functions in a much simpler way.
Also depending smart contracts can using our base smart contracts to gain the advantage of having 'circuit-breaker' which will pause the activity if things go wrong in an unexpected way.Required Knowledge: ethereum, go, nodejs
When considering private vehicles, there are many vehicles in Sri Lanka that travel regularly by filling on a few seats or only the driver him/her self. The remaining space can be used by people travelling to same destination on same route. With this feature, the owner of the vehicle can update how many seats are available for passengers(friends) and this information along with the current location will be sent to passengers(friends). These passengers called friends are people who travel in the same road as the owner, on a regular basis. Friends can reserve their seats by requesting when they see available options around the covered geographic area.
Implementation- This has to be implemented for two friend groups:
The user should be able to choose how he or she would choose friend groups.
The features include:
Drones use their radio link to communicate with their ground stations and controllers. Those radio links can communicate for a limited range. When a drone fly automatically through way points it may go away from radio link. Then ground station unable to monitor that drone any more. We want a system to monitor automatically flying drones using long range communication network “LORA” . Its mandatory to uniquely identifying each drone, for that we want to bind unique key to each drone. The final product should be a separate unit which can externally mound on any kind of drone.Required Knowledge: C++