/EUSURVEY

EUSurvey is an opensource surveying tool. It features different types of questions, free text fields as well as more complex elements like editable tables and gallery elements. Results can be displayed as histograms, percentages or in full details and can be exported to different formats. All submitted answers (or a sub-set) can be published automatically on a dedicated webpage within the application. It is freely available for any organisation or administration, public or private and can also be deployed as an open source version.

Primary LanguageJavaEuropean Union Public License 1.2EUPL-1.2

EUSurvey

EUSurvey is the official online survey management tool of the European Commission. Its development was started in 2013 under the supervision of DIGIT and is published as open source software under the terms of the EUPL public license. EUSurvey is a servlet based application and can be installed on any servlet container.

Installation requirements

  1. Tomcat 8
  2. Java 8
  3. MySQL 5.7
  4. Maven

Quick start

Extensive installation guidelines may be found here. We give a summary of installation guidelines here.

Database initialization

  1. Create eusurvey schemas;
create database eusurveydb character set utf8 COLLATE utf8_general_ci;
create database eusurveyreportdb character set utf8 COLLATE utf8_general_ci;
  1. Create a user which will access this schema;
CREATE USER 'eusurveyuser'@'localhost' IDENTIFIED BY 'eusurveyuser'; 
GRANT ALL PRIVILEGES ON eusurveydb.* TO 'eusurveyuser'@'localhost';
GRANT EVENT ON *.* TO 'eusurveyuser'@'localhost'; 

CREATE USER 'eusurveyruser'@'localhost' IDENTIFIED BY 'eusurveyruser'; 
GRANT ALL PRIVILEGES ON eusurveyreportdb.* TO 'eusurveyruser'@'localhost';
  1. Set Mysql variables
SET GLOBAL event_scheduler = ON;
SET GLOBAL log_bin_trust_function_creators = 1;
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

Spring properties modification

Modify the spring properties from src/main/config file to match your requirements.

Run the application

Build EUSurvey's war using the following command:

mvn clean install -Denvironment=oss

Build & deploy the application on your tomcat manager using the following command:

mvn clean tomcat7:deploy 
-Dtomcat.admin.password=your_tomcat_password
-Dtomcat.admin=your_tomcat_username
-Dtomcat.deploy.url=your_tomcat_url
-Denvironment=oss

Repository conventions

Workflow

We apply the GitFlow.

Commits

For each commit, we ask to add the number of the issue to which the commit is relevant. E.g. Issue #1245 : Adding css for class .aClassName.

Contributing

Please follow the Forking workflow.

  1. Open a feature issue for your future changes; Over this page, click on the "Issues" button, then click on the "New issue" button and finally create a "Feature Request". Then, detail the feature you would like to implement so that we may discuss the changes to be made in the future Pull Request.

  2. Fork the original repository; When ready to start implementing, click on the "Fork" button. This action opens your personnal fork of this repository.

  3. Clone your fork repository to your local machine; From your repository page, find the "Clone or Download" button, and copy the URL. Then, launch the following commands to clone this repository to your local machine and add our original repository as upstream.

# clone your repository
git clone https://github.com/<YourRepository>/EUSURVEY.git
git remote add upstream https://github.com/EUSurvey/EUSURVEY.git
  1. Create a local branch for your changes; Please name your branch following your issue title, followed by the number of this issue. E.g. for Dockerize the application (issue number 20), name your branch "dockerizeTheApplication#20". Run the following command to create this local branch:
# from develop branch
git checkout -b dockerizeTheApplication#20
  1. Work on this branch and push your changes to your remote repository; Please follow the commit message convention to start the commit message with the issue number as described below. By running the following commands, you may add one or several of the files you changed, commit those, and push these changes to your remote repository, respectively.
# from dockerizeTheApplication#20 branch
git add <changedFile>
git commit -m "Issue #20 : Description of the changes"
git push
  1. Fetch the eventual changes from the original develop branch to your local repository's develop branch; Before submitting your changes to us, please update your repository with the latests changes performed on the original repository's develop branch. To achieve this, you may run the first command which fetches the latest upstream changes, and the second associated with the third which merge these changes in your local develop branch.
# Fetch from upstream remote
git fetch upstream

# Checkout your develop branch and merge upstream
git checkout develop
git merge upstream/develop
  1. Merge the changes from your develop branch to your local issue branch Indeed, you are able to take in account the up changes in your branch, by rebasing all the commits from your develop branch to your development branch.
git checkout dockerizeTheApplication#20
git rebase develop

Then, push your changes as explained before to your fork repository to be ready for the pull request!

  1. Open a pull request from this feature branch to our repository; Finally, from your forked remote repository URL, https://github.com/YourRepository, select the nameOfYourIssue#1 branch and press the "New pull request button". Hence, this will create a pull request to our repository. We will then test your branch, and discuss the pull request together. When accepted, your changes will be inserted into our develop branch by merging your development branch to our develop branch.