Telemetry stub.

This is experimental, off-by-default, code for developing a telemetry /
tracking configuration module. It is preliminary work for issue #628,
but also for KDE Neon configuration. Any telemetry should conform to
the KDE Telemetry Policy [1] or similar Free Software telemetry policy
(e.g. the Mozilla one).

[1] https://community.kde.org/Policies/Telemetry_Policy

Initial idea is to distinguish three kinds of tracking:
 - installs. This tracks that OS <foo> has been installed somewhere.
   It might send some machine information to a remote server.
 - machines. This enables some kind of machine tracking in the

   installed system, for instance it could enable popcon on
   Debian, or periodic phone-home-pings.
 - users. This enables some kind of telemetry / tracking on the
   installed user in the system.

A simple and transparent setting is to enable install-tracking and set
it to opt-in, and disable machine and user tracking. Explain to the
user that <foo> would like to know when <foo> is installed, and that
the following information <d1>, <d2> will be sent to <url> in accordance
to the <foo> telemetry policy at <url2>.

Work in this branch is subject to VDG review for the visuals, and
privacy oversight by whatever group is responsible for <foo> privacy.

Note that this module makes it *possible* for telemetry configuration
to be visible inside the installer; what distro's do with telemetry
already is entirely outside the scope of this configuration module.
This commit is contained in:
Adriaan de Groot 2017-08-29 08:00:37 -04:00
parent 3799a26b3c
commit 1926399378
7 changed files with 389 additions and 0 deletions

View file

@ -0,0 +1,109 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2017, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#include "JobQueue.h"
#include "GlobalStorage.h"
#include "utils/Logger.h"
#include "TrackingViewStep.h"
#include "TrackingPage.h"
#include <QVariantMap>
CALAMARES_PLUGIN_FACTORY_DEFINITION( TrackingViewStepFactory, registerPlugin<TrackingViewStep>(); )
TrackingViewStep::TrackingViewStep( QObject* parent )
: Calamares::ViewStep( parent )
, m_widget( new TrackingPage )
{
emit nextStatusChanged( false );
}
TrackingViewStep::~TrackingViewStep()
{
if ( m_widget && m_widget->parent() == nullptr )
m_widget->deleteLater();
}
QString
TrackingViewStep::prettyName() const
{
return tr( "Telemetry and Tracking" );
}
QWidget*
TrackingViewStep::widget()
{
return m_widget;
}
void
TrackingViewStep::next()
{
emit done();
}
void
TrackingViewStep::back()
{}
bool
TrackingViewStep::isNextEnabled() const
{
// return m_widget->isNextEnabled();
return false;
}
bool
TrackingViewStep::isBackEnabled() const
{
return true;
}
bool
TrackingViewStep::isAtBeginning() const
{
return true;
}
bool
TrackingViewStep::isAtEnd() const
{
return true;
}
QList< Calamares::job_ptr >
TrackingViewStep::jobs() const
{
return QList< Calamares::job_ptr >();
}
void
TrackingViewStep::setConfigurationMap( const QVariantMap& configurationMap )
{
}