Open Source

As the design cycles in the software industry get faster, streamlined and agile methods have proven successful. The premise of the N4S program is that the agility of large projects can and should also be increased. In joint projects, it is essential that all results are shared as transparently as possible. Participating organizations develop products, services or their operations together within a given framework and following a practice collectively agreed upon. This site introduces the open source software developed and further developed within the N4S program.

 

Contriboard — a tool for agile team work

 

Contriboard is a development tool that includes all the essential elements of a modern cloud service: ease of use, scalability, service monitoring and up-to-date technologies. Contriboard is an idea development tool where the working platform is a virtual board with idea tags placed on it. A virtual board created in the Contriboard service can be shared in real time between members of a team, for example, after which all members can freely toss up ideas in the form of tags. The service’s background systems allow it to be developed further in rather flexible ways. Many companies may have rather different views about what service design means, for example. Contriboard allows the start of a discussion about how operating practices can be developed even further. This allows everyone else to learn as well.

https://github.com/N4SJAMK/challenge_factory_2015/wiki/Contriboard-Fact-Sheet

https://github.com/N4SJAMK/challenge_factory_2015/wiki/Contriboard-Fact-Sheet—English

http://www.n4s.fi/en/jamk-designs-product-line-for-businesses-and-communities/

 

JARMO: filtering data automatically into different databases 

 

The JARMO component and its parts can be used to implement monitoring of different network services. With JARMO, data collected from different parts of the service can be easily filtered into different databases.

Instead of the traditional TCP traffic, JARMO listens to the connectionless UDP traffic that still allows the transfer of files. In practice, UDP is the other data transfer protocol used besides TCP. The advantage of UDP compared to traditional TCP is that it is considerably faster, but this also means that the reception of data packages is not confirmed like it is in TCP. JARMO uses UDP, because in the collection of metrics or other “rich” data, the loss of a few data packages is not critical.

JARMO expects incoming data to be in the JSON format, which is a relatively light file format similar to XML. It is well suited for structuring even complex data and for sending it across the wires. JARMO could be seen as an hourglass-shaped object that allows the collection of data to one point and its redistribution to multiple targets.

https://github.com/N4SJAMK/jarmo/wiki/Contriboard-Application-and-Server-Monitoring-System

 

NOISE: the noise generator

 

The noise generator NOISE allows the testing of the effects of different types of connection errors on the service being developed. For example, the tool allows the creation of a controlled network connection between the server and the client where different types of network errors will appear as needed. The noise generator is controlled through an API and can also be integrated as a part of the rest of the testing environment. The full deployment of the noise generator is packed as a Docker container (https://www.docker.com), which means that it is pretty simple to use in PAAS/IAAS environments, for instance. As an example, the deployment currently available has been adapted specifically for testing the Contriboard service. With minor modifications, the deployment can also be applied to other testing targets. The noise generator NOISE has been implemented using open source software components, such as HA-Proxy and netem.

https://github.com/N4SJAMK/contriboard-noise-tester

 

The Viritin CDN Tool

 

There are about 2,000 Vaadin projects in Github, and the number is constantly growing. It allows an application developer to use all Vaadin add-ons from a cloud service pre-compiled, which saves a considerable amount of the developer’s working time. The cloud service contains a bunch of pre-compiled widgets. Viritin fetches the pre-compiled widgets from the cloud according to the application developer’s wishes. From the cloud, Viritin picks the most suitable and optimized collection based on the user’s add-ons. This means that nothing needs to be compiled on the developer’s computer.

Vaadin has adopted Viritin CDN for speeding up the testing of the Vaadin framework.

Installation instructions for the project are available at: http://cdn.virit.in/ and in Github https://github.com/viritin/vwscdn

 

The NITCAD tool for collecting data in a Vaadin network

 

This tool allows the collection of usage data from software to assist in decision-making. NITCAD (Non-Intrusive Tool for Collecting Analytics Data) automatically collects data about how people use the software. The software the data is collected from does not need to be modified for the collection; the tool is merely linked to the software following the principles of aspect programming. The tool is suitable for software development that seeks to prioritize features that people use the most.

The NITCAD tool collects data from software developed using the Vaadin framework. However, aspect programming (implementation is divided into several program units) also allows access to software built on other technologies. The most advanced implementations of aspect programming have been built around the Java language, but there is also support for other languages.

https://ville.cs.utu.fi/

 

Lokki: a sharing service for location information

 

The Lokki location information sharing service launched by F-Secure in 2013 shares the location of each member within a selected group of people. This service is based on voluntary sharing of data and it helps families and groups by identifying and sharing the pre-marked locations of group members, or by notifying about a member’s new location, if needed.

Lokki shows logged members the common, self-defined locations of the family or group, such as home, school or a friend’s home. The application can be used, for example, to check that a child is at school or at home when they are supposed to. The program sends an automatic notification when a group member arrives at or leaves a certain location. Users may invite other group members to the service and decide whether they want to share their location with others. The application also allows sending messages between members. The application will not store users’ location history, it only identifies and shows the person’s last location. In the N4S program, the Lokki service is developed through the Software Factory of the University of Helsinki and the Open Academy coordinated by Facebook.

https://github.com/F-Secure/lokki

https://github.com/TheSoftwareFactory/lokki

http://www.n4s.fi/en/f-secures-location-service-code-freely-available-for-the-user-community/

 

MBPeT: A performance testing tool

 

MBPeT is a tool that creates a workload for testing the performance and scalability of network-based systems. MBPeT can test how many simultaneous users a system is able to maintain. For this purpose, MBPeT creates a synthetic workload using different model-based user profiles, which simplifies test specifications and their creation. The application can be used for verifying new features, and it allows continuous deployment and continuous integration.

http://cloud1.cs.abo.fi:8181

 

UPPAAL TRON

 

UPPAAL is a tool that allows the modeling, simulation and verification of real-time systems. A system is real-time if response time can be kept below a level that would have severe consequences in the system. Uppaal2Tron is a tool that has been designed specifically for testing embedded systems. It analyzes test and monitoring logs and shows the corresponding trace in the direct testing or monitoring model. Through simulation and checking, Uppaal2Tron will help understand why a test or system failed. It works in conjunction with the UPPAAL model checker and its TRON test generator.

http://users.abo.fi/jiqbal/back-tracer/index.html

http://www.n4s.fi/publication/a-practical-application-of-uppaal-and-dtron-for-runtime-verification-2/

http://www.n4s.fi/publication/tron2uppaal-backtracer-tool-from-tron-logs-to-uppaal-traces/

http://tucs.fi/publications/view/?pub_id=tIqTrVaPo15a

 

TOAS Package Process  

 

TOAS (Tieto Open Application Suite), is a Java-based open source business solution development platform. It offers the platform as a service, which allows the development of business solutions in a private cloud environment.

The platform has been packaged for Linux Red Hat, CentOS and Linux Debian Ubuntu.

https://github.com/open-infinity/automation/tree/master/puppet/oi3-modules

 

How good is the deal: a housing price development model by zip code

 

This application allows the study of housing prices in Finland by zip code. The application is based on data received from Statistics Finland.

http://kannattaakokauppa.fi

http://louhos.github.io/news/2015/05/07/asuntohintojen-muutokset/

https://github.com/reaktor/Neliohinnat

 

Pg-using-bluebird

 

Pg-using-bluebird is a library for the management of open source PostgreSGL connections and data transfer events when the Bluebird “promise” model is used. Bluebird is a library that allows asynchronous programming using the “promise” model. Pg-using-bluebird is a library that allows the processing of open source PostgreSQL databases within the Bluebird library.

https://github.com/reaktor/pg-using-bluebird

 

The online payment library Maksunappi

 

Maksunappi is a library for online payments in Finland. Maksunappi is a pre-made library that enables an online payment feature in a Node.js environment through a small configuration. The library can be used in web stores where the customer can pay for their purchases directly through their online bank.

https://github.com/reaktor/maksunappi

 

The TUPAS identification library

 

TUPAS is a shared identification service of Finnish banks that is used to identify users of online services with their online bank codes. The TUPAS identification library is a pre-made library that enables features for online payments and TUPAS identification in a Node.js environment through a small configuration. The TUPAS identification library can be used in any service that requires strong identification. Adoption requires the appropriate agreements with Finnish banks (Tapiola, Nordea, DanskeBank, Handelsbanken, OP, AKTIA, Ålandsbanken, S-Pankki, Säästöpankki, POP Pankki) and entering the payment and identification parameters received from the banks into the configuration files, after which these functions are available through the library.

https://github.com/reaktor/node-tupas

 

A template for the faster functionality of web applications made with the Clojure programming language

 

Projects have been made in the background in many organizations in recent years using the Clojure programming language. Although Clojure is suitable for production, due to its design philosophy there haven’t been frameworks strongly influencing implementation made for it as there have been for Java, for example. Spring, Hibernate and similar languages made with Java heavily influence development work and implementation solutions, but in Clojure, the coder decides for themselves what works best. Setting up a Clojure project requires either solid experience or vast surveys, when decisions must be made about localization.

Now there is a framework similar to Spring Boot, which has been popular in the Java world, which offers a pre-made and easy-to-use template for making web software. The template defines how the configuration is loaded from outside the code, how localization is done, how the logging is done and how the logging is configured. These are based on decisions made in the client projects. In practice, this can reduce the amount of time spent on getting started with making a new Clojure web application. Depending on the case, this could mean hours, days or weeks.

https://github.com/lokori/clj-weba

 

ClamAV

 

This free virus scanner (ClamAV) has been designed to work in the background of a server offering REST (Representational State Transfer) interfaces. The virus scanner can be used as is, without changes in code. Its configuration may also be customized for personalized needs. The virus scanner is suitable for many web application projects, as practically all file attachments coming from end users must be checked and scanned for viruses one way or another. Deploying the virus scanner is easy: even the source code doesn’t need to be compiled, as the pre-made JAR packages (Java Archive) are available from a public repository (Sonatype Maven: http://central.sonatype.org).

REST-service: https://github.com/solita/clamav-rest

Java: https://github.com/solita/clamav-java

Dokumentation: http://dev.solita.fi/2015/06/02/rest-virusscan.html

 

Optimizing product selection with a self-organizing map

 

The application allows a data-oriented approach to the optimization of selection of magazines for sale. A self-organizing map is used for visualization and clusterization. Using a method based on the map, a magazine’s sales will be predicted based on the sales of similar magazines in sales outlets with a similar sales profile. This allows prediction of the sales of a magazine in the outlet, if it was added to the outlet’s selection.

The sales brought by the suggested changes were 29% larger annually than the sales of magazines in the comparison group. Based on a statistical survey, the difference is significant, but requires further study.

https://github.com/timole/assortment-planning-self-organizing-map

 

Meta Model Tool

 

The meta model tool helps to visualise the flow of information in a database. The meta model tool can be utilised immediately in analysing the customer’s production data, and it helps to visualise the information flow. This is achieved by presenting the objects in the database and the relations between them as a visual graph. With different kinds of filtering functions, only particular information can be viewed.

If an old database has been used and the documentation has not been made properly, the structure can be updated automatically with the meta model tool. With the help of the tool, it is also possible to efficiently fix the false data presented in one of the tables. Usually people want to know where the false data came from or what are the things that the detected error will affect. Both paths can be visualised, and the required tables can be checked with a more powerful database tool.

The user interface code suitable for presenting the meta model can now be found at https://github.com/reader90/meta-model-tool