Quick
index
main
eev
maths
blogme
dednat6
littlelangs
PURO
(GAC2,
C3TD,
λMDetc)
(Chapa 1)

emacs
lua
(la)tex
fvwm
agda
tcl
forth
icon
debian
irc
contact

Oficina: Introdução ao Software Livre

Update: a oficina aconteceu no sábado, 6/nov/2021, das 15:00 às 18:00, e foi toda por Telegram. Se você quiser participar da próxima encarnação dela basta se inscrever neste grupo do Telegram, chamado "Introdução ao Emacs e eev (6/nov/2021)", e mandar um oi pra mim - eu sou o @eduardoochs no Telegram. A oficina é aberta a todos os interessados de todos os níveis. Convide os seus amigos! =)


Título (provisório): Introdução ao Software Livre
Descrição (provisória):

Todo mundo sabe que os programas - como Excel, Python e R - que processam dados e geram tabelas, estatísticas e gráficos estão se tornando cada vez mais importantes, e que, aham, "todo mundo vai ter que aprender a usá-los"... mas como aprendê-los?

Acho que todo mundo já deve ter passado por situações como a que eu vou descrever agora. Digamos que a gente vê um gráfico muito legal que um amigo nosso fez e pôs num trabalho dele, e a gente pergunta pra esse amigo como a gente faz pra aprender a fazer gráficos daqueles... e ele diz: "Fiz com Python e MatPlotLib! É super fácil, tem um monte de tutoriais na internet!" - e aí a gente passa um fim de semana inteiro tentando aprender Python e MatPlotLib a partir dos tutoriais da internet mas não progride quase nada, e a gente pede ajuda pra mais pessoas e elas todas respondem "é super fácil, usa os programas tais e tais, tem tutoriais na internet!" - E SAEM CORRENDO. Ninguém dá detalhes, todo mundo diz que é fácil, e a gente se sente burro.

O mundo do Software Livre é muito amplo e eu há muitos anos passo boa parte do meu tempo livre socializando em cantos dele que as pessoas "normais" nem desconfiam que existem, e onde o modo das pessoas se ajudarem é totalmente diferente do que eu descrevi agora há pouco. Isto aqui é uma boa introdução a como são as coisas lá:

Uma das idéias básicas do Software Livre é a de desmistificar a distinção entre "programadores" e "usuários". No mundo do software comercial os "programas" são produtos acabados, que parecem meio mágicos - indústrias podem fazer coisas como aquelas, não seres humanos comuns ("programadores" e "nerds" podem ser capazes de fazer programas - "mas eles não são como nós"). No mundo do software livre os programas são como os fuscas costumavam ser - se o seu fusca desse um problema na estrada daqui a pouco alguém parava pra te ajudar (muita gente entendia de mecânica de fusca), e num instante a pessoa fazia um consertinho sem nem precisar de peças, te explicava tudo, e você ainda saía sabendo um pouco mais sobre o seu carro.

A comunidade de Software Livre brasileira perdeu a noção da importância do "faça você mesmo" - a noção do que é importante se confundiu com a do que pode ser notícia em jornais e sites e blogs, então as pessoas acham que o que "falta ser feito" pro Software Livre se tornar popular são coisas monumentais, como por exemplo o Gimp (um programa livre) se tornar tão poderoso quanto o Photoshop. Você ajudar o seu vizinho a resolver um problema aparentemente complicado fazendo um script de duas linhas é algo que se tornou invisível.

Nesta oficina nós vamos ver na prática como isto funciona, usando só dois programas que são fáceis de instalar em qualquer computador: o Emacs e uma extensão pra ele chamada eev. O Emacs é um editor de texto programável e extensível; na década de 80 era muito comum os usuários do Emacs - inclusive "secretárias que se achavam incapazes programar"; veja o relato no link (1) - fazerem programas muito úteis de uma ou duas linhas que acabavam sendo compartilhados com os colegas, e as principais idéias do movimento do Software Livre surgiram na comunidade dos usuários de Emacs.

Esta oficina corresponde mais ou menos às duas primeiras aulas de um projeto de ensino chamado "Introdução ao Software Livre: Python, shell, Lua, Emacs, eev" - que eu estou preparando e que deve começar daqui a alguns meses, mas muita coisa nele depende de Linux e só as pessoas que têm Linux vão conseguir acompanhar as aulas dele... esta oficina é uma versão adaptada dele só com coisas que funcionam tanto no Linux quando no Windows e que devem fazer sentido pra pessoas que nunca viram uma linguagem de programação na vida.

Uma observação muito importante: nesta oficina você provavelmente não vai aprender NADA de "útil", ou melhor, você provavelmente não vai aprender nada que se encaixe na noção que você já tem do que é um programa "útil" - mas você vai começar a entender a noção de "programa útil" dos programadores. É neste sentido, de "útil para programadores", que nós vamos ver como fazer programas muito pequenos "úteis" e como compartilhá-los com as outras pessoas da oficina por Telegram ou IRC. No projeto de ensino nós vamos ver como usar estes programas pequenos pra aprender Python, Linux, e shell.

É neste sentido, de "útil para programadores", que nós vamos ver como fazer programas muito pequenos "úteis" e como compartilhá-los com as outras pessoas da oficina por Telegram ou IRC. No projeto de ensino nós vamos ver como usar estes programas pequenos pra aprender Python, Linux, e shell.

Para mais detalhes veja o vídeo de 5 minutos (obs: que ainda não existe!) - ou o vídeo de 1h20 de duração - no link (2).

(1) http://www.gnu.org/software/emacs/emacs-paper.html#SEC29
(2) http://angg.twu.net/2021.1-projeto.html



1. Pré-requisitos

Os pré-requisitos são esses aqui: um computador com 1) Windows ou Linux, 2) Google Chrome ou Firefox, 3) Telegram, 4) Emacs. Se você estiver no Windows instale o "Emacs 28 pretest" daqui; se você estiver no Linux basta instalar o Emacs default da sua distribuição. Além disso: 5) assista este vídeo e pelo menos tente instalar o eev seguindo as instruções dele. Tem um índice pra esse vídeo aqui.

Além disso você vai precisar a) conseguir lidar com um canal de Telegram em que um monte de pessoas de níveis totalmente diferentes vão estar falando ao mesmo tempo, b) conseguir lidar com algo que tem informações demais. É parecido com bibliotecas e com carros: você já aprendeu a entrar numa biblioteca sem entrar em pânico e dizer "ai meu deus, eu vou precisar ler tudo isso?", e você já aprendeu a olhar pra um carro com o capô aberto sem achar que na próxima meia hora você VAI TER QUE montar um radiador com as próprias mãos. Com o Emacs vai ser a mesma coisa.

Ah, praticamente todo o material que existe sobre o Emacs está em inglês, e você vai que lidar com isso também. Se você procurar no Emacs Weekly News você vai encontrar um monte de tutoriais de Emacs, inclusive alguns em português, mas até onde eu sei eu sou a única pessoa que está fazendo tutoriais que começam pelo Emacs Lisp.


2. Estrutura da oficina

A estrutura da oficina vai ser mais ou menos essa aqui. Os itens básicos são estes:

Os itens menos básicos são estes:


3. O que eu achei

Na verdade eu fiquei meio frustrado, porque 1) vieram poucas pessoas e 2) porque ninguém deu muita bola pra coisa que eu considerava que era o objetivo mais importante da oficina, que era aprender a criar links pra tudo que você encontra de interessante e guardar esses links no seu arquivo ~/TODO. Mas aí eu me toquei de que eu preciso organizar melhor o material que eu já tenho sobre como criar e guardar links, e que eu preciso fazer um vídeo sobre isso... e o vídeo precisa ter partes em que eu mostro como executar os exemplos de certas seções difíceis dos tutoriais e precisa ter um monte de exercícios organizados por ordem de quantidade de pré-requisitos...

O "material que eu já tenho sobre isso" está principalmente aqui:

(find-eev-quick-intro "4. Creating Elisp Hyperlinks")
(find-eev-quick-intro "4.1. `find-here-links'")
(find-eev-quick-intro "4.2. `find-ekey-links' and friends")
(find-eev-quick-intro "9. Shorter hyperlinks")
(find-audiovideo-intro "2. `eev-avadj-mode'")
(find-audiovideo-intro "4.1. `find-extra-file-links'" "M-h M-e")
(find-here-links-intro "3. `find-here-links'")
(find-here-links-intro "3. `find-here-links'" "beginners")
(find-pdf-like-intro "3. Hyperlinks to PDF files")
(find-escripts-intro "6. Tutorials")
(find-escripts-intro "7. Sequences of links")


4. O que eu fiz logo depois

Nos dias seguintes ao dia da oficina eu reescrevi quase todo o código que implementa o suporte aos blocos de "[Video links:]", escrevi toda a documentação da implementação nova, reescrevi metade do tutorial sobre como rodar o Emacs e o eev no Windows, e fiz um segundo vídeo. Links:

(find-video-links-intro "1. Introduction")
(find-video-links-intro "2. From the HTML")
(find-video-links-intro "3. `find-youtube-video'")
(find-video-links-intro "4. Configuring the browser")
(find-video-links-intro "5. Local copies")
(find-video-links-intro "6. Configuring Mpv")
(find-video-links-intro "7. `find-eev-video'")
(find-video-links-intro "8. Windows")
(find-video-links-intro "9. First-class videos")
(find-video-links-intro "10. Second-class videos")
(find-video-links-intro "11. Hardcoded paths")
(find-windows-beginner-intro "0. Introduction")
(find-windows-beginner-intro "1. Download and install Emacs")
(find-windows-beginner-intro "2. Key sequences and how to quit")
(find-windows-beginner-intro "3. Using M-x and installing eev")
(find-windows-beginner-intro "4. Understanding buffers and the mode line")
(find-windows-beginner-intro "5. More on modes")
(find-windows-beginner-intro "5.1. Eev mode")
(find-windows-beginner-intro "5.2. Help Mode")
(find-windows-beginner-intro "5.3. Info Mode")
(find-windows-beginner-intro "5.4. Dired Mode")
(find-windows-beginner-intro "5.5. Shell Mode")
(find-windows-beginner-intro "5.6. Eshell")
(find-windows-beginner-intro "6. Video links")
(find-windows-beginner-intro "7. eev-on-windows.el")
(find-windows-beginner-intro "7.1. `ee-use-windows'")
(find-windows-beginner-intro "7.2. Testing wget.exe")
(find-windows-beginner-intro "7.3. Lua")
(find-windows-beginner-intro "7.4. Downloading videos")
(find-windows-beginner-intro "7.5. Downloading PDFs")
(find-windows-beginner-intro "7.6. Saving your settings")
(find-windows-beginner-intro "7.7. Testing your settings")
(find-windows-beginner-intro "7.8. Saving your settings to your ~/.emacs")
(find-windows-beginner-intro "8. Summary")
http://angg.twu.net/eev-videos/2021-oficina-2.mp4

Eu recomendo pras pessoas que usam GNU/Linux que elas comecem pelo (find-eev-quick-intro) e só leiam o (find-video-links-intro) depois de terem lido vários tutoriais mais básicos, mas pras pessoas que usam M$ Windows a ordem é diferente: eu recomendo que elas comecem pelo (find-windows-beginner-intro), que em várias seções aponta pra outros tutoriais como pré-requisitos pra aquela seção.



Se alguém quiser assistir um vídeo longo que eu preparei pra um minicurso os links são este pro vídeo em MP4 e este pro vídeo no Youtube. O MP4 tem menos megabytes e uma qualidade melhor - quando eu subo vídeos em MP4 pro Youtube ele converte eles pra um formato pior.

Tem coisas em inglês sobre a oficina aqui.

A primeira imagem abaixo é um link pro vídeo (de 1h20) sobre o minicurso; a segunda é um link pro vídeo com as instruções mais básicas (tem um índice pra ele aqui); a segunda é um link pra um vídeo com exercícios básicos de criar e guardar links; e quarta é um link pros slides da minha apresentação na EmacsConf2021.


Link pra uma oficina que eu organizei em 2019, chamada
"Oficina de Software Livre ("anotações executáveis") no PURO/UFF".