;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Sem consenso, votação da "lei das fake news" é adiada novamente no Senado

Estúdio Rebimboca/UOL
Imagem: Estúdio Rebimboca/UOL

Helton Simões Gomes

De Tilt

08/06/2020 15h48

Os líderes do Senado resolveram nesta segunda-feira (8) adiar por mais uma semana a votação do projeto que cria a "lei das fake news", devido à falta de consenso sobre como o combate à desinformação nas redes sociais deve ser feita.

Havia a expectativa de que o texto fosse incluído na pauta desta semana. Mas, para isto, o relatório do senador Angelo Coronel (PSD-BA), que também conduz a MI das Fake News, precisaria ter ficado pronto. Isto não ocorreu.

O relatório não ficou pronto e solicitamos mudança da pauta para próxima semana. É uma matéria complexa, em que todas as arestas devem ser aparadas
Angelo Coronel, senador

Além disso, os líderes partidários acordaram de que o texto deveria ser mais enxuto e se concentrar em inibir as redes de robôs criados para disseminar notícias falsas, em vez de obrigar as redes sociais a censurar conteúdos que possam propagar fake news.

O autor da proposta, o senador Alessandro Vieira, afirmou que está trabalhando para "que ele [o projeto] efetivamente atenda o objetivo, ou seja, combater as ferramentas que servem para disseminar conteúdo falso ou ofensivo" e que já há "consenso sobre grande parte do texto".

Na semana ada, Angelo Coronel divulgou seu substitutivo ao PL 2630, de autoria do senador Alessandro Vieira (Cidadania-SE). Apresentado na madrugada do dia da votação, que acabou sendo postergada, o texto gerou uma onda de descontentamento por reincorporar medidas que haviam sido retiradas por gerar polêmica.

Os pontos mais controversos eram aqueles que obrigavam redes sociais a remover contas inautênticas (perfis falsos ou qualquer um que distribuísse fakes news) e a retirar do ar posts considerados desinformativos.

A inclusão destes tópicos chamou ainda mais atenção, porque, no dia anterior, o senador Alessandro Vieira retirou do texto quaisquer menções a desinformação. Em acordo com os deputados Tábata Amaral (PDT-SP) e Felipe Rigoni (PSB-ES), autores da proposta na Câmara, ele construiu um projeto que mirava na desarticulação das ferramentas usadas para espalhar fake news e em sua criminalização.

Usar bots ou contas falsas, por exemplo, seria uma conduta penalizada nos mesmos moldes da lavagem de dinheiro. Os envolvidos nessas práticas poderiam ainda ser enquadrados como participantes de organizações criminosas.

Como os ativistas de direitos digitais também criticaram a rapidez na tramitação, o adiamento foi bem recebido.

"O que se deve evitar é o cenário em que, para se consertar a questão das redes de manipulação e de desinformação, acabe sendo quebradas outras coisas no caminho, como o exercício da liberdade de expressão, a inovação na criação e desenvolvimento de apps, além de suas funcionalidades", afirmou Carlos Affonso de Souza, diretor do Instituto Tecnologia e Sociedade do Rio (ITS Rio) e blogueiro de Tilt.